@ministryofjustice/hmpps-digital-prison-reporting-frontend 4.17.4 → 4.17.5

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 (560) hide show
  1. package/dpr/assets/app.js.map +1 -1
  2. package/dpr/components/_async/async-filters-form/sortByTemplate.js +1 -1
  3. package/dpr/components/_async/async-filters-form/sortByTemplate.js.map +1 -1
  4. package/dpr/components/_async/async-filters-form/types.d.js +1 -1
  5. package/dpr/components/_async/async-filters-form/types.d.js.map +1 -1
  6. package/dpr/components/_async/async-filters-form/utils.js +1 -1
  7. package/dpr/components/_async/async-filters-form/utils.js.map +2 -2
  8. package/dpr/components/_async/async-filters-form/utils.test.ts +9 -9
  9. package/dpr/components/_async/async-filters-form/utils.ts +1 -1
  10. package/dpr/components/_async/async-filters-form/view.njk +6 -3
  11. package/dpr/components/_catalogue/catalogue/types.js +1 -1
  12. package/dpr/components/_catalogue/catalogue/types.js.map +1 -1
  13. package/dpr/components/_catalogue/catalogue/utils.js +1 -1
  14. package/dpr/components/_catalogue/catalogue/utils.js.map +2 -2
  15. package/dpr/components/_catalogue/catalogue/utils.test.ts +6 -3
  16. package/dpr/components/_catalogue/catalogue/utils.ts +1 -1
  17. package/dpr/components/_catalogue/catalogue-list/utils.js +1 -1
  18. package/dpr/components/_catalogue/catalogue-list/utils.js.map +2 -2
  19. package/dpr/components/_catalogue/catalogue-list/utils.test.ts +1 -0
  20. package/dpr/components/_catalogue/catalogue-list/utils.ts +5 -5
  21. package/dpr/components/_charts/chart/Buckets.js +1 -1
  22. package/dpr/components/_charts/chart/Buckets.js.map +3 -3
  23. package/dpr/components/_charts/chart/Buckets.ts +3 -3
  24. package/dpr/components/_charts/chart/heatmap/HeatmapChart.js +1 -1
  25. package/dpr/components/_charts/chart/heatmap/HeatmapChart.js.map +3 -3
  26. package/dpr/components/_charts/chart/heatmap/HeatmapChart.ts +1 -13
  27. package/dpr/components/_charts/chart/heatmap/types.js +1 -1
  28. package/dpr/components/_charts/chart/heatmap/types.js.map +2 -2
  29. package/dpr/components/_charts/chart/heatmap/types.ts +1 -1
  30. package/dpr/components/_charts/utils.js +1 -1
  31. package/dpr/components/_charts/utils.js.map +3 -3
  32. package/dpr/components/_charts/utils.test.ts +1 -0
  33. package/dpr/components/_charts/utils.ts +84 -43
  34. package/dpr/components/_dashboards/dashboard-list/utils.js +1 -1
  35. package/dpr/components/_dashboards/dashboard-list/utils.js.map +2 -2
  36. package/dpr/components/_dashboards/dashboard-list/utils.test.ts +1 -0
  37. package/dpr/components/_dashboards/dashboard-list/utils.ts +16 -11
  38. package/dpr/components/_dashboards/dashboard-visualisation/DashboardVisualisation.js +1 -1
  39. package/dpr/components/_dashboards/dashboard-visualisation/DashboardVisualisation.js.map +2 -2
  40. package/dpr/components/_dashboards/dashboard-visualisation/DashboardVisualisation.ts +1 -1
  41. package/dpr/components/_dashboards/dashboard-visualisation/types.js +1 -1
  42. package/dpr/components/_dashboards/dashboard-visualisation/types.js.map +2 -2
  43. package/dpr/components/_dashboards/dashboard-visualisation/types.ts +8 -8
  44. package/dpr/components/_dashboards/scorecard/Scorecard.js +1 -1
  45. package/dpr/components/_dashboards/scorecard/Scorecard.js.map +2 -2
  46. package/dpr/components/_dashboards/scorecard/Scorecard.ts +8 -8
  47. package/dpr/components/_dashboards/scorecard/types.js +1 -1
  48. package/dpr/components/_dashboards/scorecard/types.js.map +2 -2
  49. package/dpr/components/_dashboards/scorecard/types.ts +12 -10
  50. package/dpr/components/_dashboards/scorecard/utils.js +1 -1
  51. package/dpr/components/_dashboards/scorecard/utils.js.map +1 -1
  52. package/dpr/components/_dashboards/scorecard/utils.test.ts +1 -0
  53. package/dpr/components/_filters/filter-input/enum.js +1 -1
  54. package/dpr/components/_filters/filter-input/enum.js.map +1 -1
  55. package/dpr/components/_filters/filter-input/filters.js +1 -1
  56. package/dpr/components/_filters/filter-input/filters.js.map +1 -1
  57. package/dpr/components/_filters/filter-input/filters.test.ts +1 -0
  58. package/dpr/components/_filters/filter-input/types.d.js +1 -1
  59. package/dpr/components/_filters/filter-input/types.d.js.map +1 -1
  60. package/dpr/components/_filters/filters-selected/utils.js +1 -1
  61. package/dpr/components/_filters/filters-selected/utils.js.map +3 -3
  62. package/dpr/components/_filters/filters-selected/utils.test.ts +7 -4
  63. package/dpr/components/_filters/filters-selected/utils.ts +1 -1
  64. package/dpr/components/_filters/filtersTypeEnum.js +1 -1
  65. package/dpr/components/_filters/filtersTypeEnum.js.map +1 -1
  66. package/dpr/components/_filters/types.d.js +1 -1
  67. package/dpr/components/_filters/types.d.js.map +2 -2
  68. package/dpr/components/_filters/types.d.ts +5 -5
  69. package/dpr/components/_filters/utils.js +1 -1
  70. package/dpr/components/_filters/utils.js.map +2 -2
  71. package/dpr/components/_filters/utils.test.ts +54 -49
  72. package/dpr/components/_filters/utils.ts +16 -20
  73. package/dpr/components/_inputs/date-input/utils.js +1 -1
  74. package/dpr/components/_inputs/date-input/utils.js.map +1 -1
  75. package/dpr/components/_inputs/date-input/utils.test.ts +1 -0
  76. package/dpr/components/_inputs/date-range/clientClass.mjs +2 -2
  77. package/dpr/components/_inputs/date-range/types.js +1 -1
  78. package/dpr/components/_inputs/date-range/types.js.map +2 -2
  79. package/dpr/components/_inputs/date-range/types.ts +2 -2
  80. package/dpr/components/_inputs/date-range/utils.js +1 -1
  81. package/dpr/components/_inputs/date-range/utils.js.map +2 -2
  82. package/dpr/components/_inputs/date-range/utils.test.ts +5 -7
  83. package/dpr/components/_inputs/date-range/utils.ts +4 -4
  84. package/dpr/components/_inputs/date-range/view.njk +1 -0
  85. package/dpr/components/_inputs/granular-date-range/types.js +1 -1
  86. package/dpr/components/_inputs/granular-date-range/types.js.map +1 -1
  87. package/dpr/components/_inputs/granular-date-range/utils.js +1 -1
  88. package/dpr/components/_inputs/granular-date-range/utils.js.map +1 -1
  89. package/dpr/components/_inputs/granular-date-range/utils.test.ts +1 -0
  90. package/dpr/components/_inputs/multi-select/utils.js +1 -1
  91. package/dpr/components/_inputs/multi-select/utils.js.map +3 -3
  92. package/dpr/components/_inputs/multi-select/utils.ts +1 -1
  93. package/dpr/components/_inputs/multi-select/utilt.test.ts +29 -14
  94. package/dpr/components/_inputs/start-end-date/utils.js +1 -1
  95. package/dpr/components/_inputs/start-end-date/utils.js.map +1 -1
  96. package/dpr/components/_inputs/start-end-date/utils.test.ts +1 -0
  97. package/dpr/components/_reports/report-actions/actionsTemplate.js +1 -1
  98. package/dpr/components/_reports/report-actions/actionsTemplate.js.map +1 -1
  99. package/dpr/components/_reports/report-actions/types.d.js +1 -1
  100. package/dpr/components/_reports/report-actions/types.d.js.map +2 -2
  101. package/dpr/components/_reports/report-actions/types.d.ts +1 -1
  102. package/dpr/components/_reports/report-actions/utils.js +1 -1
  103. package/dpr/components/_reports/report-actions/utils.js.map +1 -1
  104. package/dpr/components/_reports/report-actions/utils.test.ts +8 -4
  105. package/dpr/components/_reports/report-columns-form/types.d.js +1 -1
  106. package/dpr/components/_reports/report-columns-form/types.d.js.map +1 -1
  107. package/dpr/components/_reports/report-columns-form/utils.js +1 -1
  108. package/dpr/components/_reports/report-columns-form/utils.js.map +2 -2
  109. package/dpr/components/_reports/report-columns-form/utils.ts +1 -1
  110. package/dpr/components/_reports/report-data-table/types.d.js +1 -1
  111. package/dpr/components/_reports/report-data-table/types.d.js.map +1 -1
  112. package/dpr/components/_reports/report-data-table/utils.js +1 -1
  113. package/dpr/components/_reports/report-data-table/utils.js.map +3 -3
  114. package/dpr/components/_reports/report-data-table/utils.test.ts +15 -8
  115. package/dpr/components/_reports/report-data-table/utils.ts +20 -8
  116. package/dpr/components/_reports/report-pagination/types.d.js +1 -1
  117. package/dpr/components/_reports/report-pagination/types.d.js.map +2 -2
  118. package/dpr/components/_reports/report-pagination/types.d.ts +2 -2
  119. package/dpr/components/_reports/report-pagination/utils.js +1 -1
  120. package/dpr/components/_reports/report-pagination/utils.js.map +1 -1
  121. package/dpr/components/_reports/report-pagination/utils.test.ts +1 -0
  122. package/dpr/components/_reports/report-totals/utils.js +1 -1
  123. package/dpr/components/_reports/report-totals/utils.js.map +1 -1
  124. package/dpr/components/card-group/utils.js +1 -1
  125. package/dpr/components/card-group/utils.js.map +1 -1
  126. package/dpr/components/card-group/utils.test.ts +7 -0
  127. package/dpr/components/report-list/defaultTokenProvider.js +1 -1
  128. package/dpr/components/report-list/defaultTokenProvider.js.map +3 -3
  129. package/dpr/components/report-list/defaultTokenProvider.ts +3 -3
  130. package/dpr/components/report-list/types.d.js +1 -1
  131. package/dpr/components/report-list/types.d.js.map +1 -1
  132. package/dpr/components/report-list/utils.js +1 -1
  133. package/dpr/components/report-list/utils.js.map +2 -2
  134. package/dpr/components/report-list/utils.test.ts +6 -4
  135. package/dpr/components/report-list/utils.ts +5 -5
  136. package/dpr/components/show-more/utils.js +1 -1
  137. package/dpr/components/show-more/utils.js.map +1 -1
  138. package/dpr/components/user-reports/bookmarks/utils.js +1 -1
  139. package/dpr/components/user-reports/bookmarks/utils.js.map +3 -3
  140. package/dpr/components/user-reports/bookmarks/utils.test.ts +14 -11
  141. package/dpr/components/user-reports/bookmarks/utils.ts +26 -31
  142. package/dpr/components/user-reports/requested/utils.js +1 -1
  143. package/dpr/components/user-reports/requested/utils.js.map +3 -3
  144. package/dpr/components/user-reports/requested/utils.test.ts +4 -3
  145. package/dpr/components/user-reports/requested/utils.ts +4 -3
  146. package/dpr/components/user-reports/types.d.js +1 -1
  147. package/dpr/components/user-reports/types.d.js.map +2 -2
  148. package/dpr/components/user-reports/types.d.ts +1 -1
  149. package/dpr/components/user-reports/utils.js +1 -1
  150. package/dpr/components/user-reports/utils.js.map +3 -3
  151. package/dpr/components/user-reports/utils.test.ts +48 -47
  152. package/dpr/components/user-reports/utils.ts +51 -57
  153. package/dpr/components/user-reports/viewed/utils.js +1 -1
  154. package/dpr/components/user-reports/viewed/utils.js.map +2 -2
  155. package/dpr/components/user-reports/viewed/utils.ts +5 -4
  156. package/dpr/data/agentConfig.js +1 -1
  157. package/dpr/data/agentConfig.js.map +1 -1
  158. package/dpr/data/dashboardClient.js +1 -1
  159. package/dpr/data/dashboardClient.js.map +2 -2
  160. package/dpr/data/dashboardClient.ts +2 -2
  161. package/dpr/data/dprReportingClient.js +1 -1
  162. package/dpr/data/dprReportingClient.js.map +3 -3
  163. package/dpr/data/dprReportingClient.ts +3 -3
  164. package/dpr/data/missingReportClient.js +2 -0
  165. package/dpr/data/missingReportClient.js.map +7 -0
  166. package/dpr/{services/missingReport → data}/missingReportClient.ts +4 -4
  167. package/dpr/data/productCollectionClient.js +2 -0
  168. package/dpr/data/productCollectionClient.js.map +7 -0
  169. package/dpr/data/productCollectionClient.ts +28 -0
  170. package/dpr/data/reportDataStore.js +1 -1
  171. package/dpr/data/reportDataStore.js.map +1 -1
  172. package/dpr/data/reportingClient.js +1 -1
  173. package/dpr/data/reportingClient.js.map +3 -3
  174. package/dpr/data/reportingClient.ts +7 -9
  175. package/dpr/data/restClient.js +1 -1
  176. package/dpr/data/restClient.js.map +2 -2
  177. package/dpr/data/restClient.ts +5 -5
  178. package/dpr/data/types.d.js +1 -1
  179. package/dpr/data/types.d.js.map +2 -2
  180. package/dpr/data/types.d.ts +1 -1
  181. package/dpr/middleware/reportAuthoriser.js +1 -1
  182. package/dpr/middleware/reportAuthoriser.js.map +2 -2
  183. package/dpr/middleware/reportAuthoriser.ts +2 -2
  184. package/dpr/middleware/setUpDprResources.js +1 -1
  185. package/dpr/middleware/setUpDprResources.js.map +2 -2
  186. package/dpr/middleware/setUpDprResources.test.ts +59 -20
  187. package/dpr/middleware/setUpDprResources.ts +30 -29
  188. package/dpr/middleware/setUpNestedRoute.js +1 -1
  189. package/dpr/middleware/setUpNestedRoute.js.map +2 -2
  190. package/dpr/middleware/setUpNestedRoute.ts +1 -1
  191. package/dpr/routes/index.js +1 -1
  192. package/dpr/routes/index.js.map +2 -2
  193. package/dpr/routes/index.ts +1 -2
  194. package/dpr/routes/journeys/download-report/controller.js +1 -1
  195. package/dpr/routes/journeys/download-report/controller.js.map +3 -3
  196. package/dpr/routes/journeys/download-report/controller.ts +7 -6
  197. package/dpr/routes/journeys/download-report/request-download/form/controller.js +1 -1
  198. package/dpr/routes/journeys/download-report/request-download/form/controller.js.map +3 -3
  199. package/dpr/routes/journeys/download-report/request-download/form/controller.ts +1 -1
  200. package/dpr/routes/journeys/download-report/request-download/form/routes.js +1 -1
  201. package/dpr/routes/journeys/download-report/request-download/form/routes.js.map +1 -1
  202. package/dpr/routes/journeys/download-report/request-download/form/submitted/controller.js +1 -1
  203. package/dpr/routes/journeys/download-report/request-download/form/submitted/controller.js.map +3 -3
  204. package/dpr/routes/journeys/download-report/request-download/form/submitted/controller.ts +1 -1
  205. package/dpr/routes/journeys/download-report/request-download/form/submitted/routes.js +1 -1
  206. package/dpr/routes/journeys/download-report/request-download/form/submitted/routes.js.map +1 -1
  207. package/dpr/routes/journeys/download-report/request-download/form/submitted/tests.cy.js +1 -1
  208. package/dpr/routes/journeys/download-report/request-download/form/submitted/tests.cy.js.map +1 -1
  209. package/dpr/routes/journeys/download-report/request-download/form/tests.cy.js +1 -1
  210. package/dpr/routes/journeys/download-report/request-download/form/tests.cy.js.map +1 -1
  211. package/dpr/routes/journeys/download-report/request-download/routes.js +1 -1
  212. package/dpr/routes/journeys/download-report/request-download/routes.js.map +1 -1
  213. package/dpr/routes/journeys/download-report/request-download/service.js +1 -1
  214. package/dpr/routes/journeys/download-report/request-download/service.js.map +3 -3
  215. package/dpr/routes/journeys/download-report/request-download/service.ts +20 -8
  216. package/dpr/routes/journeys/download-report/routes.js +1 -1
  217. package/dpr/routes/journeys/download-report/routes.js.map +3 -3
  218. package/dpr/routes/journeys/download-report/routes.ts +1 -4
  219. package/dpr/routes/journeys/download-report/tests.cy.js +1 -1
  220. package/dpr/routes/journeys/download-report/tests.cy.js.map +2 -2
  221. package/dpr/routes/journeys/download-report/tests.cy.ts +4 -1
  222. package/dpr/routes/journeys/download-report/utils.js +1 -1
  223. package/dpr/routes/journeys/download-report/utils.js.map +2 -2
  224. package/dpr/routes/journeys/download-report/utils.ts +2 -4
  225. package/dpr/routes/journeys/my-reports/bookmarks/controller.js +1 -1
  226. package/dpr/routes/journeys/my-reports/bookmarks/controller.js.map +1 -1
  227. package/dpr/routes/journeys/my-reports/bookmarks/list/controller.js +1 -1
  228. package/dpr/routes/journeys/my-reports/bookmarks/list/controller.js.map +3 -3
  229. package/dpr/routes/journeys/my-reports/bookmarks/list/controller.ts +2 -2
  230. package/dpr/routes/journeys/my-reports/bookmarks/list/routes.js +1 -1
  231. package/dpr/routes/journeys/my-reports/bookmarks/list/routes.js.map +1 -1
  232. package/dpr/routes/journeys/my-reports/bookmarks/list/tests.cy.js +1 -1
  233. package/dpr/routes/journeys/my-reports/bookmarks/list/tests.cy.js.map +2 -2
  234. package/dpr/routes/journeys/my-reports/bookmarks/list/tests.cy.ts +1 -2
  235. package/dpr/routes/journeys/my-reports/bookmarks/routes.js +1 -1
  236. package/dpr/routes/journeys/my-reports/bookmarks/routes.js.map +1 -1
  237. package/dpr/routes/journeys/my-reports/bookmarks/service.js +3 -3
  238. package/dpr/routes/journeys/my-reports/bookmarks/service.js.map +3 -3
  239. package/dpr/routes/journeys/my-reports/bookmarks/service.ts +31 -18
  240. package/dpr/routes/journeys/my-reports/bookmarks/tests.cy.js +1 -1
  241. package/dpr/routes/journeys/my-reports/bookmarks/tests.cy.js.map +2 -2
  242. package/dpr/routes/journeys/my-reports/bookmarks/tests.cy.ts +26 -26
  243. package/dpr/routes/journeys/my-reports/bookmarks/utils.js +1 -1
  244. package/dpr/routes/journeys/my-reports/bookmarks/utils.js.map +3 -3
  245. package/dpr/routes/journeys/my-reports/bookmarks/utils.ts +10 -11
  246. package/dpr/routes/journeys/my-reports/recently-viewed/controller.js +1 -1
  247. package/dpr/routes/journeys/my-reports/recently-viewed/controller.js.map +1 -1
  248. package/dpr/routes/journeys/my-reports/recently-viewed/list/controller.js +1 -1
  249. package/dpr/routes/journeys/my-reports/recently-viewed/list/controller.js.map +3 -3
  250. package/dpr/routes/journeys/my-reports/recently-viewed/list/controller.ts +1 -1
  251. package/dpr/routes/journeys/my-reports/recently-viewed/list/routes.js +1 -1
  252. package/dpr/routes/journeys/my-reports/recently-viewed/list/routes.js.map +1 -1
  253. package/dpr/routes/journeys/my-reports/recently-viewed/list/tests.cy.js +1 -1
  254. package/dpr/routes/journeys/my-reports/recently-viewed/list/tests.cy.js.map +2 -2
  255. package/dpr/routes/journeys/my-reports/recently-viewed/list/tests.cy.ts +7 -4
  256. package/dpr/routes/journeys/my-reports/recently-viewed/routes.js +1 -1
  257. package/dpr/routes/journeys/my-reports/recently-viewed/routes.js.map +1 -1
  258. package/dpr/routes/journeys/my-reports/recently-viewed/service.js +1 -1
  259. package/dpr/routes/journeys/my-reports/recently-viewed/service.js.map +3 -3
  260. package/dpr/routes/journeys/my-reports/recently-viewed/service.ts +0 -2
  261. package/dpr/routes/journeys/my-reports/requested-reports/controller.js +1 -1
  262. package/dpr/routes/journeys/my-reports/requested-reports/controller.js.map +1 -1
  263. package/dpr/routes/journeys/my-reports/requested-reports/list/controller.js +1 -1
  264. package/dpr/routes/journeys/my-reports/requested-reports/list/controller.js.map +3 -3
  265. package/dpr/routes/journeys/my-reports/requested-reports/list/controller.ts +1 -1
  266. package/dpr/routes/journeys/my-reports/requested-reports/list/routes.js +1 -1
  267. package/dpr/routes/journeys/my-reports/requested-reports/list/routes.js.map +1 -1
  268. package/dpr/routes/journeys/my-reports/requested-reports/list/tests.cy.js +1 -1
  269. package/dpr/routes/journeys/my-reports/requested-reports/list/tests.cy.js.map +1 -1
  270. package/dpr/routes/journeys/my-reports/requested-reports/routes.js +1 -1
  271. package/dpr/routes/journeys/my-reports/requested-reports/routes.js.map +1 -1
  272. package/dpr/routes/journeys/my-reports/requested-reports/service.js +1 -1
  273. package/dpr/routes/journeys/my-reports/requested-reports/service.js.map +3 -3
  274. package/dpr/routes/journeys/my-reports/requested-reports/service.ts +25 -17
  275. package/dpr/routes/journeys/my-reports/routes.js +1 -1
  276. package/dpr/routes/journeys/my-reports/routes.js.map +3 -3
  277. package/dpr/routes/journeys/my-reports/routes.ts +0 -3
  278. package/dpr/routes/journeys/product-collection/routes.js +1 -1
  279. package/dpr/routes/journeys/product-collection/routes.js.map +1 -1
  280. package/dpr/routes/journeys/product-collection/selected/controller.js +1 -1
  281. package/dpr/routes/journeys/product-collection/selected/controller.js.map +1 -1
  282. package/dpr/routes/journeys/product-collection/selected/routes.js +1 -1
  283. package/dpr/routes/journeys/product-collection/selected/routes.js.map +1 -1
  284. package/dpr/routes/journeys/product-collection/selected/tests.cy.js +1 -1
  285. package/dpr/routes/journeys/product-collection/selected/tests.cy.js.map +2 -2
  286. package/dpr/routes/journeys/product-collection/selected/tests.cy.ts +6 -4
  287. package/dpr/routes/journeys/product-collection/selected/validation.js +1 -1
  288. package/dpr/routes/journeys/product-collection/selected/validation.js.map +1 -1
  289. package/dpr/routes/journeys/request-missing-report/form/controller.js +1 -1
  290. package/dpr/routes/journeys/request-missing-report/form/controller.js.map +3 -3
  291. package/dpr/routes/journeys/request-missing-report/form/controller.ts +21 -19
  292. package/dpr/routes/journeys/request-missing-report/form/routes.js +1 -1
  293. package/dpr/routes/journeys/request-missing-report/form/routes.js.map +1 -1
  294. package/dpr/routes/journeys/request-missing-report/form/tests.cy.js +1 -1
  295. package/dpr/routes/journeys/request-missing-report/form/tests.cy.js.map +1 -1
  296. package/dpr/routes/journeys/request-missing-report/form/validation.js +1 -1
  297. package/dpr/routes/journeys/request-missing-report/form/validation.js.map +1 -1
  298. package/dpr/routes/journeys/request-missing-report/routes.js +1 -1
  299. package/dpr/routes/journeys/request-missing-report/routes.js.map +1 -1
  300. package/dpr/routes/journeys/request-missing-report/submitted/controller.js +1 -1
  301. package/dpr/routes/journeys/request-missing-report/submitted/controller.js.map +1 -1
  302. package/dpr/routes/journeys/request-missing-report/submitted/routes.js +1 -1
  303. package/dpr/routes/journeys/request-missing-report/submitted/routes.js.map +1 -1
  304. package/dpr/routes/journeys/request-missing-report/submitted/tests.cy.js +1 -1
  305. package/dpr/routes/journeys/request-missing-report/submitted/tests.cy.js.map +1 -1
  306. package/dpr/routes/journeys/request-missing-report/tests.cy.js +1 -1
  307. package/dpr/routes/journeys/request-missing-report/tests.cy.js.map +2 -2
  308. package/dpr/routes/journeys/request-missing-report/tests.cy.ts +1 -1
  309. package/dpr/routes/journeys/request-report/controller.js +1 -1
  310. package/dpr/routes/journeys/request-report/controller.js.map +3 -3
  311. package/dpr/routes/journeys/request-report/controller.ts +1 -1
  312. package/dpr/routes/journeys/request-report/filters/controller.js +1 -1
  313. package/dpr/routes/journeys/request-report/filters/controller.js.map +3 -3
  314. package/dpr/routes/journeys/request-report/filters/controller.ts +7 -8
  315. package/dpr/routes/journeys/request-report/filters/routes.js +1 -1
  316. package/dpr/routes/journeys/request-report/filters/routes.js.map +1 -1
  317. package/dpr/routes/journeys/request-report/filters/tests.cy.js +1 -1
  318. package/dpr/routes/journeys/request-report/filters/tests.cy.js.map +1 -1
  319. package/dpr/routes/journeys/request-report/filters/utils.js +1 -1
  320. package/dpr/routes/journeys/request-report/filters/utils.js.map +3 -3
  321. package/dpr/routes/journeys/request-report/filters/utils.ts +38 -23
  322. package/dpr/routes/journeys/request-report/filters/view.njk +2 -1
  323. package/dpr/routes/journeys/request-report/routes.js +1 -1
  324. package/dpr/routes/journeys/request-report/routes.js.map +2 -2
  325. package/dpr/routes/journeys/request-report/routes.ts +2 -2
  326. package/dpr/routes/journeys/request-report/status/controller.js +1 -1
  327. package/dpr/routes/journeys/request-report/status/controller.js.map +3 -3
  328. package/dpr/routes/journeys/request-report/status/controller.ts +4 -4
  329. package/dpr/routes/journeys/request-report/status/routes.js +1 -1
  330. package/dpr/routes/journeys/request-report/status/routes.js.map +1 -1
  331. package/dpr/routes/journeys/request-report/status/tests.cy.js +1 -1
  332. package/dpr/routes/journeys/request-report/status/tests.cy.js.map +2 -2
  333. package/dpr/routes/journeys/request-report/status/tests.cy.ts +9 -4
  334. package/dpr/routes/journeys/request-report/status/utils.js +1 -1
  335. package/dpr/routes/journeys/request-report/status/utils.js.map +3 -3
  336. package/dpr/routes/journeys/request-report/status/utils.ts +10 -13
  337. package/dpr/routes/journeys/request-report/tests.cy.js +1 -1
  338. package/dpr/routes/journeys/request-report/tests.cy.js.map +2 -2
  339. package/dpr/routes/journeys/request-report/tests.cy.ts +14 -11
  340. package/dpr/routes/journeys/routes.js +1 -1
  341. package/dpr/routes/journeys/routes.js.map +1 -1
  342. package/dpr/routes/journeys/view-report/async/controller.js +1 -1
  343. package/dpr/routes/journeys/view-report/async/controller.js.map +3 -3
  344. package/dpr/routes/journeys/view-report/async/controller.ts +4 -4
  345. package/dpr/routes/journeys/view-report/async/dashboard/controller.js +1 -1
  346. package/dpr/routes/journeys/view-report/async/dashboard/controller.js.map +3 -3
  347. package/dpr/routes/journeys/view-report/async/dashboard/controller.ts +4 -4
  348. package/dpr/routes/journeys/view-report/async/dashboard/routes.js +1 -1
  349. package/dpr/routes/journeys/view-report/async/dashboard/routes.js.map +1 -1
  350. package/dpr/routes/journeys/view-report/async/dashboard/tests.cy.js +1 -1
  351. package/dpr/routes/journeys/view-report/async/dashboard/tests.cy.js.map +2 -2
  352. package/dpr/routes/journeys/view-report/async/dashboard/tests.cy.ts +2 -2
  353. package/dpr/routes/journeys/view-report/async/dashboard/utils.js +1 -1
  354. package/dpr/routes/journeys/view-report/async/dashboard/utils.js.map +3 -3
  355. package/dpr/routes/journeys/view-report/async/dashboard/utils.ts +6 -8
  356. package/dpr/routes/journeys/view-report/async/report/controller.js +1 -1
  357. package/dpr/routes/journeys/view-report/async/report/controller.js.map +3 -3
  358. package/dpr/routes/journeys/view-report/async/report/controller.ts +5 -5
  359. package/dpr/routes/journeys/view-report/async/report/routes.js +1 -1
  360. package/dpr/routes/journeys/view-report/async/report/routes.js.map +1 -1
  361. package/dpr/routes/journeys/view-report/async/report/tests.cy.js +1 -1
  362. package/dpr/routes/journeys/view-report/async/report/tests.cy.js.map +2 -2
  363. package/dpr/routes/journeys/view-report/async/report/tests.cy.ts +9 -7
  364. package/dpr/routes/journeys/view-report/async/report/types.js +1 -1
  365. package/dpr/routes/journeys/view-report/async/report/types.js.map +2 -2
  366. package/dpr/routes/journeys/view-report/async/report/types.ts +8 -8
  367. package/dpr/routes/journeys/view-report/async/report/utils.js +1 -1
  368. package/dpr/routes/journeys/view-report/async/report/utils.js.map +2 -2
  369. package/dpr/routes/journeys/view-report/async/report/utils.ts +16 -18
  370. package/dpr/routes/journeys/view-report/async/routes.js +1 -1
  371. package/dpr/routes/journeys/view-report/async/routes.js.map +1 -1
  372. package/dpr/routes/journeys/view-report/controller.js +1 -1
  373. package/dpr/routes/journeys/view-report/controller.js.map +3 -3
  374. package/dpr/routes/journeys/view-report/controller.ts +1 -1
  375. package/dpr/routes/journeys/view-report/routes.js +1 -1
  376. package/dpr/routes/journeys/view-report/routes.js.map +2 -2
  377. package/dpr/routes/journeys/view-report/routes.ts +6 -3
  378. package/dpr/routes/journeys/view-report/sync/load-report/controller.js +1 -1
  379. package/dpr/routes/journeys/view-report/sync/load-report/controller.js.map +2 -2
  380. package/dpr/routes/journeys/view-report/sync/load-report/controller.ts +1 -1
  381. package/dpr/routes/journeys/view-report/sync/load-report/routes.js +1 -1
  382. package/dpr/routes/journeys/view-report/sync/load-report/routes.js.map +1 -1
  383. package/dpr/routes/journeys/view-report/sync/report/controller.js +1 -1
  384. package/dpr/routes/journeys/view-report/sync/report/controller.js.map +3 -3
  385. package/dpr/routes/journeys/view-report/sync/report/controller.ts +6 -6
  386. package/dpr/routes/journeys/view-report/sync/report/routes.js +1 -1
  387. package/dpr/routes/journeys/view-report/sync/report/routes.js.map +1 -1
  388. package/dpr/routes/journeys/view-report/sync/report/utils.js +1 -1
  389. package/dpr/routes/journeys/view-report/sync/report/utils.js.map +3 -3
  390. package/dpr/routes/journeys/view-report/sync/report/utils.ts +29 -19
  391. package/dpr/routes/journeys/view-report/sync/routes.js +1 -1
  392. package/dpr/routes/journeys/view-report/sync/routes.js.map +1 -1
  393. package/dpr/routes/journeys/view-report/sync/tests.cy.js +1 -1
  394. package/dpr/routes/journeys/view-report/sync/tests.cy.js.map +2 -2
  395. package/dpr/routes/journeys/view-report/sync/tests.cy.ts +1 -1
  396. package/dpr/routes/journeys/view-report/utils.js +1 -1
  397. package/dpr/routes/journeys/view-report/utils.js.map +3 -3
  398. package/dpr/routes/journeys/view-report/utils.ts +22 -12
  399. package/dpr/services/dashboardService.js +1 -1
  400. package/dpr/services/dashboardService.js.map +3 -3
  401. package/dpr/services/dashboardService.ts +1 -3
  402. package/dpr/services/defaultFilterValuesService.js +1 -1
  403. package/dpr/services/defaultFilterValuesService.js.map +3 -3
  404. package/dpr/services/defaultFilterValuesService.ts +34 -15
  405. package/dpr/services/index.js +1 -1
  406. package/dpr/services/index.js.map +1 -1
  407. package/dpr/services/missingReport/missingReportService.js +2 -0
  408. package/dpr/services/missingReport/missingReportService.js.map +7 -0
  409. package/dpr/services/missingReport/missingReportService.ts +26 -0
  410. package/dpr/services/productCollection/productCollectionService.js +1 -1
  411. package/dpr/services/productCollection/productCollectionService.js.map +3 -3
  412. package/dpr/services/productCollection/productCollectionService.ts +19 -14
  413. package/dpr/services/productCollection/productCollectionStoreService.js +1 -1
  414. package/dpr/services/productCollection/productCollectionStoreService.js.map +3 -3
  415. package/dpr/services/productCollection/productCollectionStoreService.ts +9 -3
  416. package/dpr/services/reportStoreService.js +1 -1
  417. package/dpr/services/reportStoreService.js.map +2 -2
  418. package/dpr/services/reportStoreService.ts +1 -1
  419. package/dpr/services/reportingService.js +1 -1
  420. package/dpr/services/reportingService.js.map +3 -3
  421. package/dpr/services/reportingService.ts +1 -3
  422. package/dpr/setUpNunjucksFilters.js +1 -1
  423. package/dpr/setUpNunjucksFilters.js.map +1 -1
  424. package/dpr/types/AsyncReportUtils.js +1 -1
  425. package/dpr/types/AsyncReportUtils.js.map +2 -2
  426. package/dpr/types/AsyncReportUtils.ts +2 -1
  427. package/dpr/types/Bookmark.js +1 -1
  428. package/dpr/types/Bookmark.js.map +2 -2
  429. package/dpr/types/Bookmark.ts +9 -3
  430. package/dpr/types/Charts.js +1 -1
  431. package/dpr/types/Charts.js.map +1 -1
  432. package/dpr/types/Download.js +1 -1
  433. package/dpr/types/Download.js.map +1 -1
  434. package/dpr/types/DprConfig.js +1 -1
  435. package/dpr/types/DprConfig.js.map +2 -2
  436. package/dpr/types/DprConfig.ts +8 -0
  437. package/dpr/types/DprUser.js +1 -1
  438. package/dpr/types/DprUser.js.map +2 -2
  439. package/dpr/types/DprUser.ts +2 -2
  440. package/dpr/types/EmbeddedReportUtils.js +1 -1
  441. package/dpr/types/EmbeddedReportUtils.js.map +1 -1
  442. package/dpr/types/ExecutionData.d.js +1 -1
  443. package/dpr/types/ExecutionData.d.js.map +2 -2
  444. package/dpr/types/ExecutionData.d.ts +2 -2
  445. package/dpr/types/Metrics.js +1 -1
  446. package/dpr/types/Metrics.js.map +2 -2
  447. package/dpr/types/Metrics.ts +1 -1
  448. package/dpr/types/ReportQuery.js +1 -1
  449. package/dpr/types/ReportQuery.js.map +2 -2
  450. package/dpr/types/ReportQuery.ts +15 -11
  451. package/dpr/types/ReportStore.js +1 -1
  452. package/dpr/types/ReportStore.js.map +1 -1
  453. package/dpr/types/Services.d.js +1 -1
  454. package/dpr/types/Services.d.js.map +2 -2
  455. package/dpr/types/Services.d.ts +8 -8
  456. package/dpr/types/Templates.d.js +1 -1
  457. package/dpr/types/Templates.d.js.map +1 -1
  458. package/dpr/types/UserReports.js +1 -1
  459. package/dpr/types/UserReports.js.map +2 -2
  460. package/dpr/types/UserReports.ts +29 -15
  461. package/dpr/types/api.d.js +1 -1
  462. package/dpr/types/api.d.js.map +1 -1
  463. package/dpr/types/index.d.js +1 -1
  464. package/dpr/types/index.d.js.map +2 -2
  465. package/dpr/types/index.d.ts +1 -1
  466. package/dpr/utils/CollatedSummaryBuilder/CollatedSummaryBuilder.js +1 -1
  467. package/dpr/utils/CollatedSummaryBuilder/CollatedSummaryBuilder.js.map +1 -1
  468. package/dpr/utils/CollatedSummaryBuilder/CollatedSummaryBuilder.test.ts +2 -0
  469. package/dpr/utils/CreateDprServices.js +2 -0
  470. package/dpr/utils/CreateDprServices.js.map +7 -0
  471. package/dpr/utils/CreateDprServices.ts +73 -0
  472. package/dpr/utils/DataTableBuilder/DataTableBuilder.js +1 -1
  473. package/dpr/utils/DataTableBuilder/DataTableBuilder.js.map +1 -1
  474. package/dpr/utils/DataTableBuilder/DataTableBuilder.test.ts +10 -0
  475. package/dpr/utils/DataTableBuilder/types.d.js +1 -1
  476. package/dpr/utils/DataTableBuilder/types.d.js.map +2 -2
  477. package/dpr/utils/DataTableBuilder/types.d.ts +3 -3
  478. package/dpr/utils/DateMapper/DateMapper.js +1 -1
  479. package/dpr/utils/DateMapper/DateMapper.js.map +2 -2
  480. package/dpr/utils/DateMapper/DateMapper.test.ts +22 -9
  481. package/dpr/utils/DateMapper/DateMapper.ts +9 -11
  482. package/dpr/utils/DateMapper/types.d.js +1 -1
  483. package/dpr/utils/DateMapper/types.d.js.map +1 -1
  484. package/dpr/utils/ErrorHandler.js +2 -0
  485. package/dpr/utils/ErrorHandler.js.map +7 -0
  486. package/dpr/utils/ErrorHandler.ts +85 -0
  487. package/dpr/utils/ParentChildDataTableBuilder/ParentChildDataTableBuilder.js +1 -1
  488. package/dpr/utils/ParentChildDataTableBuilder/ParentChildDataTableBuilder.js.map +2 -2
  489. package/dpr/utils/ParentChildDataTableBuilder/ParentChildDataTableBuilder.test.ts +13 -2
  490. package/dpr/utils/ParentChildDataTableBuilder/ParentChildDataTableBuilder.ts +3 -3
  491. package/dpr/utils/ParentChildDataTableBuilder/types.d.js +1 -1
  492. package/dpr/utils/ParentChildDataTableBuilder/types.d.js.map +1 -1
  493. package/dpr/utils/Personalisation/personalisationUtils.js +1 -1
  494. package/dpr/utils/Personalisation/personalisationUtils.js.map +3 -3
  495. package/dpr/utils/Personalisation/personalisationUtils.ts +6 -2
  496. package/dpr/utils/Personalisation/types.d.js +1 -1
  497. package/dpr/utils/Personalisation/types.d.js.map +1 -1
  498. package/dpr/utils/SectionedDataTableBuilder/SectionedDataTableBuilder.js +1 -1
  499. package/dpr/utils/SectionedDataTableBuilder/SectionedDataTableBuilder.js.map +2 -2
  500. package/dpr/utils/SectionedDataTableBuilder/SectionedDataTableBuilder.test.ts +5 -0
  501. package/dpr/utils/SectionedDataTableBuilder/SectionedDataTableBuilder.ts +1 -1
  502. package/dpr/utils/SectionedDataTableBuilder/types.d.js +1 -1
  503. package/dpr/utils/SectionedDataTableBuilder/types.d.js.map +1 -1
  504. package/dpr/utils/SectionedFieldsTableBuilder/SectionedFieldsTableBuilder.js +1 -1
  505. package/dpr/utils/SectionedFieldsTableBuilder/SectionedFieldsTableBuilder.js.map +2 -2
  506. package/dpr/utils/SectionedFieldsTableBuilder/SectionedFieldsTableBuilder.test.ts +7 -4
  507. package/dpr/utils/SectionedFieldsTableBuilder/SectionedFieldsTableBuilder.ts +3 -3
  508. package/dpr/utils/SummaryDataTableBuilder/SummaryDataTableBuilder.js +1 -1
  509. package/dpr/utils/SummaryDataTableBuilder/SummaryDataTableBuilder.js.map +1 -1
  510. package/dpr/utils/SummaryDataTableBuilder/SummaryDataTableBuilder.test.ts +1 -0
  511. package/dpr/utils/UserStoreItemBuilder.js +1 -1
  512. package/dpr/utils/UserStoreItemBuilder.js.map +2 -2
  513. package/dpr/utils/UserStoreItemBuilder.ts +19 -32
  514. package/dpr/utils/arrayUtils.js +1 -1
  515. package/dpr/utils/arrayUtils.js.map +1 -1
  516. package/dpr/utils/datasetHelper.js +1 -1
  517. package/dpr/utils/datasetHelper.js.map +2 -2
  518. package/dpr/utils/datasetHelper.test.ts +21 -33
  519. package/dpr/utils/datasetHelper.ts +12 -17
  520. package/dpr/utils/definitionUtils.js +1 -1
  521. package/dpr/utils/definitionUtils.js.map +3 -3
  522. package/dpr/utils/definitionUtils.ts +14 -3
  523. package/dpr/utils/index.js +1 -1
  524. package/dpr/utils/index.js.map +1 -1
  525. package/dpr/utils/indexedAccesHelper.js +2 -0
  526. package/dpr/utils/indexedAccesHelper.js.map +7 -0
  527. package/dpr/utils/indexedAccesHelper.ts +24 -0
  528. package/dpr/utils/localsHelper.js +1 -1
  529. package/dpr/utils/localsHelper.js.map +2 -2
  530. package/dpr/utils/localsHelper.ts +8 -8
  531. package/dpr/utils/logger.js +1 -1
  532. package/dpr/utils/logger.js.map +2 -2
  533. package/dpr/utils/logger.ts +1 -1
  534. package/dpr/utils/reportListsHelper.js +1 -1
  535. package/dpr/utils/reportListsHelper.js.map +1 -1
  536. package/dpr/utils/reportStoreHelper.js +1 -1
  537. package/dpr/utils/reportStoreHelper.js.map +1 -1
  538. package/dpr/utils/reportStoreHelper.test.ts +3 -2
  539. package/dpr/utils/requestStatusHelper.js +1 -1
  540. package/dpr/utils/requestStatusHelper.js.map +3 -3
  541. package/dpr/utils/requestStatusHelper.ts +29 -42
  542. package/dpr/utils/sanitisedError.js +1 -1
  543. package/dpr/utils/sanitisedError.js.map +2 -2
  544. package/dpr/utils/sanitisedError.ts +1 -1
  545. package/dpr/utils/urlHelper.js +1 -1
  546. package/dpr/utils/urlHelper.js.map +2 -2
  547. package/dpr/utils/urlHelper.ts +4 -4
  548. package/dpr/validation/validate.js +1 -1
  549. package/dpr/validation/validate.js.map +2 -2
  550. package/dpr/validation/validate.ts +2 -2
  551. package/package.json +4 -2
  552. package/dpr/components/error-summary/utils.js +0 -2
  553. package/dpr/components/error-summary/utils.js.map +0 -7
  554. package/dpr/components/error-summary/utils.test.ts +0 -54
  555. package/dpr/components/error-summary/utils.ts +0 -65
  556. package/dpr/services/missingReport/missingReportClient.js +0 -2
  557. package/dpr/services/missingReport/missingReportClient.js.map +0 -7
  558. package/dpr/utils/ReportStoreServiceUtils.js +0 -2
  559. package/dpr/utils/ReportStoreServiceUtils.js.map +0 -7
  560. package/dpr/utils/ReportStoreServiceUtils.ts +0 -140
@@ -1,4 +1,4 @@
1
- var $=Object.create;var u=Object.defineProperty;var k=Object.getOwnPropertyDescriptor;var f=Object.getOwnPropertyNames;var b=Object.getPrototypeOf,R=Object.prototype.hasOwnProperty;var y=(t,e)=>{for(var r in e)u(t,r,{get:e[r],enumerable:!0})},c=(t,e,r,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of f(e))!R.call(t,o)&&o!==r&&u(t,o,{get:()=>e[o],enumerable:!(s=k(e,o))||s.enumerable});return t};var h=(t,e,r)=>(r=t!=null?$(b(t)):{},c(e||!t||!t.__esModule?u(r,"default",{value:t,enumerable:!0}):r,t)),T=t=>c(u({},"__esModule",{value:!0}),t);var P={};y(P,{createListActions:()=>L,createListItemProduct:()=>C,createListItemProductMin:()=>x,itemActionsHtml:()=>q,setInitialHref:()=>A,toSentenceCase:()=>p});module.exports=T(P);var i=require("../types/UserReports"),v=h(require("./localsHelper"));const q=(t,e,r,s)=>{const o=s===i.RequestStatus.EXPIRED?"Refresh":"Retry";return`<div class="dpr-icon-wrapper__item-actions">
1
+ "use strict";var $=Object.create;var u=Object.defineProperty;var k=Object.getOwnPropertyDescriptor;var f=Object.getOwnPropertyNames;var b=Object.getPrototypeOf,R=Object.prototype.hasOwnProperty;var y=(t,e)=>{for(var r in e)u(t,r,{get:e[r],enumerable:!0})},c=(t,e,r,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of f(e))!R.call(t,o)&&o!==r&&u(t,o,{get:()=>e[o],enumerable:!(s=k(e,o))||s.enumerable});return t};var h=(t,e,r)=>(r=t!=null?$(b(t)):{},c(e||!t||!t.__esModule?u(r,"default",{value:t,enumerable:!0}):r,t)),T=t=>c(u({},"__esModule",{value:!0}),t);var P={};y(P,{createListActions:()=>L,createListItemProduct:()=>C,createListItemProductMin:()=>x,itemActionsHtml:()=>q,setInitialHref:()=>A,toSentenceCase:()=>p});module.exports=T(P);var i=require("../types/UserReports"),v=h(require("./localsHelper"));const q=(t,e,r,s)=>{const o=s===i.RequestStatus.EXPIRED?"Refresh":"Retry";return`<div class="dpr-icon-wrapper__item-actions">
2
2
  <a class='dpr-user-list-action govuk-link--no-visited-state govuk-!-margin-bottom-1' href="${t}">${o}</a>
3
3
  <a class="dpr-user-list-action govuk-link--no-visited-state dpr-remove-${r}-report-button"" href="#" data-execution-id='${e}'>Remove</a>
4
4
  </div>`},d=t=>{let e="";switch(t){case i.ReportType.DASHBOARD:e="govuk-tag--purple";break;case i.ReportType.UNAVAILABLE:e="govuk-tag--grey";break;default:e="";break}return e},C=(t,e,r,s)=>{const o=s?"":"dpr-display-none",g=d(r),a=p(r);return`<div>
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../src/dpr/utils/reportListsHelper.ts"],
4
4
  "sourcesContent": ["import { Response } from 'express'\nimport { LoadType, ReportType, RequestStatus } from '../types/UserReports'\nimport localsHelper from './localsHelper'\n\nexport const itemActionsHtml = (\n retryHref: string,\n executionId: string,\n type: 'requested' | 'viewed',\n status: RequestStatus,\n) => {\n const text = status === RequestStatus.EXPIRED ? 'Refresh' : 'Retry'\n return `<div class=\"dpr-icon-wrapper__item-actions\">\n <a class='dpr-user-list-action govuk-link--no-visited-state govuk-!-margin-bottom-1' href=\"${retryHref}\">${text}</a>\n <a class=\"dpr-user-list-action govuk-link--no-visited-state dpr-remove-${type}-report-button\"\" href=\"#\" data-execution-id='${executionId}'>Remove</a>\n </div>`\n}\n\nconst getTypeTagColor = (type: ReportType) => {\n let tagColourClass = ''\n switch (type) {\n case ReportType.DASHBOARD:\n tagColourClass = 'govuk-tag--purple'\n break\n case ReportType.UNAVAILABLE:\n tagColourClass = 'govuk-tag--grey'\n break\n default:\n tagColourClass = ''\n break\n }\n return tagColourClass\n}\n\nexport const createListItemProduct = (productName: string, reportName: string, type: ReportType, ts?: string) => {\n const tsClass = !ts ? 'dpr-display-none' : ''\n const tagColor = getTypeTagColor(type)\n const reportType = toSentenceCase(type)\n return `<div>\n <p class=\"govuk-body govuk-!-margin-bottom-1\" aria-label=\"Report name ${reportName}\"><strong>${reportName}</strong></p>\n <p class=\"govuk-body-s govuk-!-margin-bottom-3\" aria-label=\"Product name ${productName}\">${productName}</p>\n <strong class=\"govuk-tag ${tagColor} dpr-request-status-tag--small govuk-!-margin-bottom-4\" aria-label=\"Report type ${reportType}\">${reportType}</strong>\n <p class=\"govuk-body-xs govuk-!-margin-bottom-0 govuk-!-margin-top-3 ${tsClass}\" aria-label=\"Timestamp\">${ts}</p>\n</div>`\n}\n\nexport const createListItemProductMin = (reportName: string, type: ReportType) => {\n const tagColor = getTypeTagColor(type)\n const reportType = toSentenceCase(type)\n return `<div>\n <p class=\"govuk-body-s govuk-!-margin-bottom-2\"><strong>${reportName}</strong></p>\n <strong class=\"govuk-tag ${tagColor} dpr-request-status-tag--small\">${reportType}</strong>\n</div>`\n}\n\nexport const createListActions = (\n href: string,\n type: ReportType,\n loadType?: LoadType,\n bookmarkHtml?: string,\n authorised = true,\n missing = false,\n) => {\n if (!authorised) {\n return `<strong class=\"govuk-tag govuk-tag--red dpr-request-status-tag dpr-request-status-tag--small dpr-unauthorised-report\" aria-label=\"You are unauthorised to view this report\">Unauthorised</strong>`\n }\n\n let requestAction\n let actionText\n if (missing) {\n actionText = `Request report`\n requestAction = `<a class='dpr-user-list-action govuk-link--no-visited-state govuk-!-margin-bottom-1' href=\"${href}\">${actionText}</a>`\n } else {\n actionText = `Request ${type}`\n if (loadType && loadType === LoadType.SYNC) {\n actionText = `Load ${type}`\n }\n requestAction = `<a class='dpr-user-list-action govuk-link--no-visited-state govuk-!-margin-bottom-1 dpr-live-report dpr-type__${type}' href=\"${href}\">${actionText}</a>`\n }\n\n if (bookmarkHtml) {\n requestAction = `${requestAction}${bookmarkHtml}`\n }\n\n return requestAction\n}\n\nexport const toSentenceCase = (text: string) => {\n return text.charAt(0).toUpperCase() + text.substring(1).toLowerCase()\n}\n\nexport const setInitialHref = (\n loadType: LoadType,\n type: ReportType,\n reportId: string,\n id: string,\n res: Response,\n isMissing = false,\n) => {\n let href = ''\n if (isMissing) {\n href = `dpr/request-missing-report/${reportId}/${id}/form`\n } else {\n const { pathSuffix, dpdPathFromQuery } = localsHelper.getValues(res)\n const dpdPathQueryParam = dpdPathFromQuery ? pathSuffix : ''\n href = `dpr/request-report/${type}/${reportId}/${id}/filters${dpdPathQueryParam}`\n\n if (loadType && loadType === LoadType.SYNC) {\n href = `dpr/view-report/sync/${type}/${reportId}/${id}/load-report${dpdPathQueryParam}`\n }\n }\n return href\n}\n"],
5
- "mappings": "6iBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,uBAAAE,EAAA,0BAAAC,EAAA,6BAAAC,EAAA,oBAAAC,EAAA,mBAAAC,EAAA,mBAAAC,IAAA,eAAAC,EAAAR,GACA,IAAAS,EAAoD,gCACpDC,EAAyB,6BAElB,MAAML,EAAkB,CAC7BM,EACAC,EACAC,EACAC,IACG,CACH,MAAMC,EAAOD,IAAW,gBAAc,QAAU,UAAY,QAC5D,MAAO;AAAA,mGAC0FH,CAAS,KAAKI,CAAI;AAAA,+EACtCF,CAAI,gDAAgDD,CAAW;AAAA,WAE9I,EAEMI,EAAmBH,GAAqB,CAC5C,IAAII,EAAiB,GACrB,OAAQJ,EAAM,CACZ,KAAK,aAAW,UACdI,EAAiB,oBACjB,MACF,KAAK,aAAW,YACdA,EAAiB,kBACjB,MACF,QACEA,EAAiB,GACjB,KACJ,CACA,OAAOA,CACT,EAEad,EAAwB,CAACe,EAAqBC,EAAoBN,EAAkBO,IAAgB,CAC/G,MAAMC,EAAWD,EAA0B,GAArB,mBAChBE,EAAWN,EAAgBH,CAAI,EAC/BU,EAAahB,EAAeM,CAAI,EACtC,MAAO;AAAA,0EACiEM,CAAU,aAAaA,CAAU;AAAA,6EAC9BD,CAAW,KAAKA,CAAW;AAAA,6BAC3EI,CAAQ,mFAAmFC,CAAU,KAAKA,CAAU;AAAA,yEACxEF,CAAO,4BAA4BD,CAAE;AAAA,OAE9G,EAEahB,EAA2B,CAACe,EAAoBN,IAAqB,CAChF,MAAMS,EAAWN,EAAgBH,CAAI,EAC/BU,EAAahB,EAAeM,CAAI,EACtC,MAAO;AAAA,4DACmDM,CAAU;AAAA,6BACzCG,CAAQ,mCAAmCC,CAAU;AAAA,OAElF,EAEarB,EAAoB,CAC/BsB,EACAX,EACAY,EACAC,EACAC,EAAa,GACbC,EAAU,KACP,CACH,GAAI,CAACD,EACH,MAAO,oMAGT,IAAIE,EACAC,EACJ,OAAIF,GACFE,EAAa,iBACbD,EAAgB,8FAA8FL,CAAI,KAAKM,CAAU,SAEjIA,EAAa,WAAWjB,CAAI,GACxBY,GAAYA,IAAa,WAAS,OACpCK,EAAa,QAAQjB,CAAI,IAE3BgB,EAAgB,iHAAiHhB,CAAI,WAAWW,CAAI,KAAKM,CAAU,QAGjKJ,IACFG,EAAgB,GAAGA,CAAa,GAAGH,CAAY,IAG1CG,CACT,EAEatB,EAAkBQ,GACtBA,EAAK,OAAO,CAAC,EAAE,YAAY,EAAIA,EAAK,UAAU,CAAC,EAAE,YAAY,EAGzDT,EAAiB,CAC5BmB,EACAZ,EACAkB,EACAC,EACAC,EACAC,EAAY,KACT,CACH,IAAIV,EAAO,GACX,GAAIU,EACFV,EAAO,8BAA8BO,CAAQ,IAAIC,CAAE,YAC9C,CACL,KAAM,CAAE,WAAAG,EAAY,iBAAAC,CAAiB,EAAI,EAAAC,QAAa,UAAUJ,CAAG,EAC7DK,EAAoBF,EAAmBD,EAAa,GAC1DX,EAAO,sBAAsBX,CAAI,IAAIkB,CAAQ,IAAIC,CAAE,WAAWM,CAAiB,GAE3Eb,GAAYA,IAAa,WAAS,OACpCD,EAAO,wBAAwBX,CAAI,IAAIkB,CAAQ,IAAIC,CAAE,eAAeM,CAAiB,GAEzF,CACA,OAAOd,CACT",
5
+ "mappings": "0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,uBAAAE,EAAA,0BAAAC,EAAA,6BAAAC,EAAA,oBAAAC,EAAA,mBAAAC,EAAA,mBAAAC,IAAA,eAAAC,EAAAR,GACA,IAAAS,EAAoD,gCACpDC,EAAyB,6BAElB,MAAML,EAAkB,CAC7BM,EACAC,EACAC,EACAC,IACG,CACH,MAAMC,EAAOD,IAAW,gBAAc,QAAU,UAAY,QAC5D,MAAO;AAAA,mGAC0FH,CAAS,KAAKI,CAAI;AAAA,+EACtCF,CAAI,gDAAgDD,CAAW;AAAA,WAE9I,EAEMI,EAAmBH,GAAqB,CAC5C,IAAII,EAAiB,GACrB,OAAQJ,EAAM,CACZ,KAAK,aAAW,UACdI,EAAiB,oBACjB,MACF,KAAK,aAAW,YACdA,EAAiB,kBACjB,MACF,QACEA,EAAiB,GACjB,KACJ,CACA,OAAOA,CACT,EAEad,EAAwB,CAACe,EAAqBC,EAAoBN,EAAkBO,IAAgB,CAC/G,MAAMC,EAAWD,EAA0B,GAArB,mBAChBE,EAAWN,EAAgBH,CAAI,EAC/BU,EAAahB,EAAeM,CAAI,EACtC,MAAO;AAAA,0EACiEM,CAAU,aAAaA,CAAU;AAAA,6EAC9BD,CAAW,KAAKA,CAAW;AAAA,6BAC3EI,CAAQ,mFAAmFC,CAAU,KAAKA,CAAU;AAAA,yEACxEF,CAAO,4BAA4BD,CAAE;AAAA,OAE9G,EAEahB,EAA2B,CAACe,EAAoBN,IAAqB,CAChF,MAAMS,EAAWN,EAAgBH,CAAI,EAC/BU,EAAahB,EAAeM,CAAI,EACtC,MAAO;AAAA,4DACmDM,CAAU;AAAA,6BACzCG,CAAQ,mCAAmCC,CAAU;AAAA,OAElF,EAEarB,EAAoB,CAC/BsB,EACAX,EACAY,EACAC,EACAC,EAAa,GACbC,EAAU,KACP,CACH,GAAI,CAACD,EACH,MAAO,oMAGT,IAAIE,EACAC,EACJ,OAAIF,GACFE,EAAa,iBACbD,EAAgB,8FAA8FL,CAAI,KAAKM,CAAU,SAEjIA,EAAa,WAAWjB,CAAI,GACxBY,GAAYA,IAAa,WAAS,OACpCK,EAAa,QAAQjB,CAAI,IAE3BgB,EAAgB,iHAAiHhB,CAAI,WAAWW,CAAI,KAAKM,CAAU,QAGjKJ,IACFG,EAAgB,GAAGA,CAAa,GAAGH,CAAY,IAG1CG,CACT,EAEatB,EAAkBQ,GACtBA,EAAK,OAAO,CAAC,EAAE,YAAY,EAAIA,EAAK,UAAU,CAAC,EAAE,YAAY,EAGzDT,EAAiB,CAC5BmB,EACAZ,EACAkB,EACAC,EACAC,EACAC,EAAY,KACT,CACH,IAAIV,EAAO,GACX,GAAIU,EACFV,EAAO,8BAA8BO,CAAQ,IAAIC,CAAE,YAC9C,CACL,KAAM,CAAE,WAAAG,EAAY,iBAAAC,CAAiB,EAAI,EAAAC,QAAa,UAAUJ,CAAG,EAC7DK,EAAoBF,EAAmBD,EAAa,GAC1DX,EAAO,sBAAsBX,CAAI,IAAIkB,CAAQ,IAAIC,CAAE,WAAWM,CAAiB,GAE3Eb,GAAYA,IAAa,WAAS,OACpCD,EAAO,wBAAwBX,CAAI,IAAIkB,CAAQ,IAAIC,CAAE,eAAeM,CAAiB,GAEzF,CACA,OAAOd,CACT",
6
6
  "names": ["reportListsHelper_exports", "__export", "createListActions", "createListItemProduct", "createListItemProductMin", "itemActionsHtml", "setInitialHref", "toSentenceCase", "__toCommonJS", "import_UserReports", "import_localsHelper", "retryHref", "executionId", "type", "status", "text", "getTypeTagColor", "tagColourClass", "productName", "reportName", "ts", "tsClass", "tagColor", "reportType", "href", "loadType", "bookmarkHtml", "authorised", "missing", "requestAction", "actionText", "reportId", "id", "res", "isMissing", "pathSuffix", "dpdPathFromQuery", "localsHelper", "dpdPathQueryParam"]
7
7
  }
@@ -1,2 +1,2 @@
1
- var n=Object.defineProperty;var R=Object.getOwnPropertyDescriptor;var d=Object.getOwnPropertyNames;var g=Object.prototype.hasOwnProperty;var y=(t,e)=>{for(var s in e)n(t,s,{get:e[s],enumerable:!0})},v=(t,e,s,a)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of d(e))!g.call(t,r)&&r!==s&&n(t,r,{get:()=>e[r],enumerable:!(a=R(e,r))||a.enumerable});return t};var w=t=>v(n({},"__esModule",{value:!0}),t);var f={};y(f,{getDuplicateRequestIds:()=>l,removeDuplicates:()=>S});module.exports=w(f);const S=async({storeService:t,userId:e,id:s,search:a})=>{const r=await t.getAllReportsById(s,e),o=l(a,r);o.length&&await Promise.all(o.map(async c=>{await t.removeReport(c,e)}))},l=(t,e)=>{const s=[],a=new URLSearchParams(t);return e.forEach(r=>{const o=[],c=r.url?.request?.search||"",i=new URLSearchParams(c),{executionId:p}=r;i.entries.length===a.entries.length&&a.forEach((h,u)=>{const m=i.has(u,h);o.push(m)}),o.every(Boolean)&&p&&s.push(p)}),s};0&&(module.exports={getDuplicateRequestIds,removeDuplicates});
1
+ "use strict";var n=Object.defineProperty;var R=Object.getOwnPropertyDescriptor;var d=Object.getOwnPropertyNames;var g=Object.prototype.hasOwnProperty;var y=(t,e)=>{for(var s in e)n(t,s,{get:e[s],enumerable:!0})},v=(t,e,s,a)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of d(e))!g.call(t,r)&&r!==s&&n(t,r,{get:()=>e[r],enumerable:!(a=R(e,r))||a.enumerable});return t};var w=t=>v(n({},"__esModule",{value:!0}),t);var f={};y(f,{getDuplicateRequestIds:()=>l,removeDuplicates:()=>S});module.exports=w(f);const S=async({storeService:t,userId:e,id:s,search:a})=>{const r=await t.getAllReportsById(s,e),o=l(a,r);o.length&&await Promise.all(o.map(async c=>{await t.removeReport(c,e)}))},l=(t,e)=>{const s=[],a=new URLSearchParams(t);return e.forEach(r=>{const o=[],c=r.url?.request?.search||"",i=new URLSearchParams(c),{executionId:p}=r;i.entries.length===a.entries.length&&a.forEach((h,u)=>{const m=i.has(u,h);o.push(m)}),o.every(Boolean)&&p&&s.push(p)}),s};0&&(module.exports={getDuplicateRequestIds,removeDuplicates});
2
2
  //# sourceMappingURL=reportStoreHelper.js.map
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../src/dpr/utils/reportStoreHelper.ts"],
4
4
  "sourcesContent": ["import type { RecentlyViewedStoreService, RequestedReportService } from '../services'\nimport { UserReportData } from '../types/UserReports'\n\nexport const removeDuplicates = async ({\n storeService,\n userId,\n id,\n search,\n}: {\n storeService: RequestedReportService | RecentlyViewedStoreService\n userId: string\n id: string\n search: string\n}) => {\n const reports = await storeService.getAllReportsById(id, userId)\n const duplicateIds = getDuplicateRequestIds(search, reports)\n if (duplicateIds.length) {\n await Promise.all(\n duplicateIds.map(async (duplicateId: string) => {\n await storeService.removeReport(duplicateId, userId)\n }),\n )\n }\n}\n\n/**\n * Gets the execution IDs of duplicate requests\n * - Checks whether the request query are the same\n *\n * @param {string} newReportSearchParams\n * @param {UserReportData[]} existingReports\n * @return {string[]} ids of the duplicate requests\n */\nexport const getDuplicateRequestIds = (newReportSearchParams: string, existingReports: UserReportData[]) => {\n const duplicates: string[] = []\n const newQueryParams = new URLSearchParams(newReportSearchParams)\n\n existingReports.forEach((existingReportData: UserReportData) => {\n const matches: boolean[] = []\n const search = existingReportData.url?.request?.search || ''\n const existingQueryParams = new URLSearchParams(search)\n const { executionId } = existingReportData\n\n if (existingQueryParams.entries.length === newQueryParams.entries.length) {\n newQueryParams.forEach((newValue, newKey) => {\n const match = existingQueryParams.has(newKey, newValue)\n matches.push(match)\n })\n }\n if (matches.every(Boolean) && executionId) {\n duplicates.push(executionId)\n }\n })\n\n return duplicates\n}\n"],
5
- "mappings": "4ZAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,4BAAAE,EAAA,qBAAAC,IAAA,eAAAC,EAAAJ,GAGO,MAAMG,EAAmB,MAAO,CACrC,aAAAE,EACA,OAAAC,EACA,GAAAC,EACA,OAAAC,CACF,IAKM,CACJ,MAAMC,EAAU,MAAMJ,EAAa,kBAAkBE,EAAID,CAAM,EACzDI,EAAeR,EAAuBM,EAAQC,CAAO,EACvDC,EAAa,QACf,MAAM,QAAQ,IACZA,EAAa,IAAI,MAAOC,GAAwB,CAC9C,MAAMN,EAAa,aAAaM,EAAaL,CAAM,CACrD,CAAC,CACH,CAEJ,EAUaJ,EAAyB,CAACU,EAA+BC,IAAsC,CAC1G,MAAMC,EAAuB,CAAC,EACxBC,EAAiB,IAAI,gBAAgBH,CAAqB,EAEhE,OAAAC,EAAgB,QAASG,GAAuC,CAC9D,MAAMC,EAAqB,CAAC,EACtBT,EAASQ,EAAmB,KAAK,SAAS,QAAU,GACpDE,EAAsB,IAAI,gBAAgBV,CAAM,EAChD,CAAE,YAAAW,CAAY,EAAIH,EAEpBE,EAAoB,QAAQ,SAAWH,EAAe,QAAQ,QAChEA,EAAe,QAAQ,CAACK,EAAUC,IAAW,CAC3C,MAAMC,EAAQJ,EAAoB,IAAIG,EAAQD,CAAQ,EACtDH,EAAQ,KAAKK,CAAK,CACpB,CAAC,EAECL,EAAQ,MAAM,OAAO,GAAKE,GAC5BL,EAAW,KAAKK,CAAW,CAE/B,CAAC,EAEML,CACT",
5
+ "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,4BAAAE,EAAA,qBAAAC,IAAA,eAAAC,EAAAJ,GAGO,MAAMG,EAAmB,MAAO,CACrC,aAAAE,EACA,OAAAC,EACA,GAAAC,EACA,OAAAC,CACF,IAKM,CACJ,MAAMC,EAAU,MAAMJ,EAAa,kBAAkBE,EAAID,CAAM,EACzDI,EAAeR,EAAuBM,EAAQC,CAAO,EACvDC,EAAa,QACf,MAAM,QAAQ,IACZA,EAAa,IAAI,MAAOC,GAAwB,CAC9C,MAAMN,EAAa,aAAaM,EAAaL,CAAM,CACrD,CAAC,CACH,CAEJ,EAUaJ,EAAyB,CAACU,EAA+BC,IAAsC,CAC1G,MAAMC,EAAuB,CAAC,EACxBC,EAAiB,IAAI,gBAAgBH,CAAqB,EAEhE,OAAAC,EAAgB,QAASG,GAAuC,CAC9D,MAAMC,EAAqB,CAAC,EACtBT,EAASQ,EAAmB,KAAK,SAAS,QAAU,GACpDE,EAAsB,IAAI,gBAAgBV,CAAM,EAChD,CAAE,YAAAW,CAAY,EAAIH,EAEpBE,EAAoB,QAAQ,SAAWH,EAAe,QAAQ,QAChEA,EAAe,QAAQ,CAACK,EAAUC,IAAW,CAC3C,MAAMC,EAAQJ,EAAoB,IAAIG,EAAQD,CAAQ,EACtDH,EAAQ,KAAKK,CAAK,CACpB,CAAC,EAECL,EAAQ,MAAM,OAAO,GAAKE,GAC5BL,EAAW,KAAKK,CAAW,CAE/B,CAAC,EAEML,CACT",
6
6
  "names": ["reportStoreHelper_exports", "__export", "getDuplicateRequestIds", "removeDuplicates", "__toCommonJS", "storeService", "userId", "id", "search", "reports", "duplicateIds", "duplicateId", "newReportSearchParams", "existingReports", "duplicates", "newQueryParams", "existingReportData", "matches", "existingQueryParams", "executionId", "newValue", "newKey", "match"]
7
7
  }
@@ -1,3 +1,4 @@
1
+ import { expect, jest } from '@jest/globals'
1
2
  import { RequestedReport, UserReportData } from '../types/UserReports'
2
3
  import * as ReportStoreHelper from './reportStoreHelper'
3
4
  import type { RequestedReportService, RecentlyViewedStoreService } from '../services'
@@ -62,12 +63,12 @@ describe('ReportStoreHelper', () => {
62
63
  ] as unknown as UserReportData[]
63
64
 
64
65
  recentlyViewedService = {
65
- getAllReportsById: jest.fn().mockResolvedValue([...reports]),
66
+ getAllReportsById: jest.fn().mockReturnValueOnce([...reports]),
66
67
  removeReport: jest.fn(),
67
68
  } as unknown as RecentlyViewedStoreService
68
69
 
69
70
  requestedReportService = {
70
- getAllReportsById: jest.fn().mockResolvedValue([...reports]),
71
+ getAllReportsById: jest.fn().mockReturnValueOnce([...reports]),
71
72
  removeReport: jest.fn(),
72
73
  } as unknown as RequestedReportService
73
74
  })
@@ -1,2 +1,2 @@
1
- var h=Object.create;var E=Object.defineProperty;var v=Object.getOwnPropertyDescriptor;var b=Object.getOwnPropertyNames;var U=Object.getPrototypeOf,F=Object.prototype.hasOwnProperty;var w=(e,t)=>{for(var r in t)E(e,r,{get:t[r],enumerable:!0})},A=(e,t,r,u)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of b(t))!F.call(e,o)&&o!==r&&E(e,o,{get:()=>t[o],enumerable:!(u=v(t,o))||u.enumerable});return e};var l=(e,t,r)=>(r=e!=null?h(U(e)):{},A(t||!e||!e.__esModule?E(r,"default",{value:e,enumerable:!0}):r,e)),B=e=>A(E({},"__esModule",{value:!0}),e);var X={};w(X,{default:()=>N,getExpiredStatus:()=>M,getStatus:()=>x,shouldTimeoutRequest:()=>I});module.exports=B(X);var m=l(require("dayjs")),P=l(require("dayjs/plugin/customParseFormat")),s=require("../types/UserReports"),D=l(require("./logger")),g=l(require("./localsHelper"));m.default.extend(P.default);const L=[s.RequestStatus.ABORTED,s.RequestStatus.FAILED,s.RequestStatus.EXPIRED],O=[s.RequestStatus.SUBMITTED,s.RequestStatus.STARTED,s.RequestStatus.PICKED];function H(e){return Promise.all(e).then(t=>{const r=t.find(o=>typeof o.status=="number"||L.includes(o.status));if(r)return r;const u=t.find(o=>O.includes(o.status));return u||t[0]})}const T=async(e,t,r,u,o)=>{const{definitionsPath:R}=g.default.getValues(r),{type:d,reportId:c,executionId:a,id:i,tableId:n}=t.body,S=(await e.requestedReportService.getReportByExecutionId(a,o)).childExecutionData??[];d===s.ReportType.REPORT&&S.push({executionId:a,tableId:n,variantId:i});const q=S.map(f=>e.reportingService.getAsyncReportStatus(u,c,f.variantId,f.executionId,R,f.tableId));d===s.ReportType.DASHBOARD&&q.push(e.dashboardService.getAsyncStatus(u,c,i,a,n,R));const y=await H(q);return{status:y.status,statusResponse:y}},x=async({req:e,res:t,services:r})=>{const{token:u,dprUser:o}=g.default.getValues(t),{status:R,requestedAt:d}=e.body,c=[s.RequestStatus.READY,s.RequestStatus.EXPIRED,s.RequestStatus.FAILED];let a,i,n;try{if({status:a,statusResponse:n}=await T(r,e,t,u,o.id),I({requestedAt:d,compareTime:new Date,durationMins:15})&&!c.includes(a))throw new Error("Request taking too long. Request Halted");if(a===s.RequestStatus.FAILED){D.default.error(`Error: ${JSON.stringify(n.error)}`);const{userMessage:p,developerMessage:S}=n.error;p||S?i=n.error:i={developerMessage:n.error}}}catch(p){D.default.error(`Error: ${JSON.stringify(p)}`);const{data:S}=p;i=S||{userMessage:p.message},a=R===s.RequestStatus.FINISHED?s.RequestStatus.EXPIRED:s.RequestStatus.FAILED}return typeof a=="number"&&(a=s.RequestStatus.FAILED),{status:a,...i&&{errorMessage:i}}},M=async({req:e,res:t,services:r})=>{const{token:u,dprUser:o}=g.default.getValues(t),{executionId:R,status:d}=e.body;let c,a;try{({status:a}=await T(r,e,t,u,o.id))}catch(n){const{data:p}=n;c=(p??{}).userMessage,a=d===s.RequestStatus.READY||d===s.RequestStatus.FINISHED?s.RequestStatus.EXPIRED:s.RequestStatus.FAILED}return{isExpired:{status:a,...c&&{errorMessage:c}}.status===s.RequestStatus.EXPIRED,executionId:R}},I=({requestedAt:e,compareTime:t,durationMins:r})=>{const u=(0,m.default)(t),o=(0,m.default)(e);return u.diff(o,"minutes")>=r};var N={getStatus:x,getExpiredStatus:M,shouldTimeoutRequest:I};0&&(module.exports={getExpiredStatus,getStatus,shouldTimeoutRequest});
1
+ "use strict";var v=Object.create;var d=Object.defineProperty;var w=Object.getOwnPropertyDescriptor;var U=Object.getOwnPropertyNames;var F=Object.getPrototypeOf,M=Object.prototype.hasOwnProperty;var B=(t,e)=>{for(var r in e)d(t,r,{get:e[r],enumerable:!0})},A=(t,e,r,u)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of U(e))!M.call(t,o)&&o!==r&&d(t,o,{get:()=>e[o],enumerable:!(u=w(e,o))||u.enumerable});return t};var S=(t,e,r)=>(r=t!=null?v(F(t)):{},A(e||!t||!t.__esModule?d(r,"default",{value:t,enumerable:!0}):r,t)),H=t=>A(d({},"__esModule",{value:!0}),t);var G={};B(G,{default:()=>_,getExpiredStatus:()=>b,getStatus:()=>P,shouldTimeoutRequest:()=>q});module.exports=H(G);var E=S(require("dayjs")),T=S(require("dayjs/plugin/customParseFormat")),s=require("../types/UserReports"),h=S(require("./logger")),l=S(require("./localsHelper")),f=S(require("./ErrorHandler"));E.default.extend(T.default);const L=[s.RequestStatus.ABORTED,s.RequestStatus.FAILED,s.RequestStatus.EXPIRED],O=[s.RequestStatus.SUBMITTED,s.RequestStatus.STARTED,s.RequestStatus.PICKED];function X(t){return Promise.all(t).then(e=>{const r=e.find(o=>typeof o.status=="number"||L.includes(o.status));if(r)return r;const u=e.find(o=>O.includes(o.status));return u||e[0]})}const x=async(t,e,r,u,o)=>{const{definitionsPath:p}=l.default.getValues(r),{type:R,reportId:i,executionId:a,id:c,tableId:n}=e.body,g=(await t.requestedReportService.getReportByExecutionId(a,o))?.childExecutionData??[];let D=[];R===s.ReportType.REPORT&&(g.push({executionId:a,tableId:n,variantId:c}),D=g.map(I=>t.reportingService.getAsyncReportStatus(u,i,I.variantId,I.executionId||"",p,I.tableId||""))),R===s.ReportType.DASHBOARD&&D.push(t.dashboardService.getAsyncStatus(u,i,c,a,n,p));const y=await X(D);return{status:y.status,statusResponse:y}},P=async({req:t,res:e,services:r})=>{const{token:u,dprUser:o}=l.default.getValues(e),{status:p,requestedAt:R}=t.body,i=[s.RequestStatus.READY,s.RequestStatus.EXPIRED,s.RequestStatus.FAILED];let a,c,n;try{const m=await x(r,t,e,u,o.id);if(n=m.statusResponse,a=m.status,q({requestedAt:R,compareTime:new Date,durationMins:15})&&!i.includes(a))throw new Error("Request taking too long. Request Halted");a===s.RequestStatus.FAILED&&(h.default.error(`Error: ${JSON.stringify(n.error)}`),c=new f.default(n.error).formatError())}catch(m){c=new f.default(m).formatError(),a=p===s.RequestStatus.FINISHED?s.RequestStatus.EXPIRED:s.RequestStatus.FAILED}return typeof a=="number"&&(a=s.RequestStatus.FAILED),{status:a,...c&&{errorMessage:c}}},b=async({req:t,res:e,services:r})=>{const{token:u,dprUser:o}=l.default.getValues(e),{executionId:p,status:R}=t.body;let i,a;try{a=(await x(r,t,e,u,o.id)).status}catch(n){i=new f.default(n).formatError(),a=R===s.RequestStatus.READY||R===s.RequestStatus.FINISHED?s.RequestStatus.EXPIRED:s.RequestStatus.FAILED}return{isExpired:{status:a,...i&&{errorMessage:i}}.status===s.RequestStatus.EXPIRED,executionId:p}},q=({requestedAt:t,compareTime:e,durationMins:r})=>{const u=(0,E.default)(e),o=(0,E.default)(t);return u.diff(o,"minutes")>=r};var _={getStatus:P,getExpiredStatus:b,shouldTimeoutRequest:q};0&&(module.exports={getExpiredStatus,getStatus,shouldTimeoutRequest});
2
2
  //# sourceMappingURL=requestStatusHelper.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/dpr/utils/requestStatusHelper.ts"],
4
- "sourcesContent": ["import dayjs from 'dayjs'\nimport customParse from 'dayjs/plugin/customParseFormat'\nimport { Request, Response } from 'express'\nimport { ReportType, RequestedReport, RequestStatus } from '../types/UserReports'\nimport { ChildReportExecutionData } from '../types/ExecutionData'\nimport logger from './logger'\nimport { Services } from '../types/Services'\nimport localsHelper from './localsHelper'\n\ndayjs.extend(customParse)\ninterface GetStatusUtilsResponse {\n status: RequestStatus\n errorMessage?: string\n reportData?: RequestedReport | undefined\n}\n\ninterface StatusResponseError {\n userMessage: string\n developerMessage: string\n}\n\ninterface StatusResponse {\n status: RequestStatus\n error: StatusResponseError\n}\n\nconst BAD_REQUEST_STATUSES: Array<RequestStatus> = [RequestStatus.ABORTED, RequestStatus.FAILED, RequestStatus.EXPIRED]\n\nconst IN_PROGRESS_REQUEST_STATUSES: Array<RequestStatus> = [\n RequestStatus.SUBMITTED,\n RequestStatus.STARTED,\n RequestStatus.PICKED,\n]\n\nfunction findWorstStatusResponse(statusRequests: Array<Promise<StatusResponse>>): Promise<StatusResponse> {\n return Promise.all(statusRequests).then((statusResponses) => {\n const badStatus = statusResponses.find(\n (response) =>\n typeof response.status === 'number' || BAD_REQUEST_STATUSES.includes(response.status as RequestStatus),\n )\n\n if (badStatus) {\n return badStatus\n }\n\n const inProgressStatus = statusResponses.find((response) =>\n IN_PROGRESS_REQUEST_STATUSES.includes(response.status as RequestStatus),\n )\n\n if (inProgressStatus) {\n return inProgressStatus\n }\n\n return statusResponses[0]\n })\n}\n\nconst getStatusByReportType = async (\n services: Services,\n req: Request,\n res: Response,\n token: string,\n userId: string,\n) => {\n const { definitionsPath } = localsHelper.getValues(res)\n const { type, reportId, executionId, id, tableId } = req.body\n\n const requestedReport = await services.requestedReportService.getReportByExecutionId(executionId, userId)\n\n const reports = requestedReport.childExecutionData ?? []\n\n if (type === ReportType.REPORT) {\n reports.push({ executionId, tableId, variantId: id })\n }\n\n const statusRequests = reports.map((executionData: ChildReportExecutionData) =>\n services.reportingService.getAsyncReportStatus(\n token,\n reportId,\n executionData.variantId,\n executionData.executionId,\n definitionsPath,\n executionData.tableId,\n ),\n )\n\n if (type === ReportType.DASHBOARD) {\n statusRequests.push(\n services.dashboardService.getAsyncStatus(token, reportId, id, executionId, tableId, definitionsPath),\n )\n }\n\n const statusResponse = await findWorstStatusResponse(statusRequests)\n\n return {\n status: statusResponse.status,\n statusResponse,\n }\n}\n\nexport const getStatus = async ({\n req,\n res,\n services,\n}: {\n req: Request\n res: Response\n services: Services\n}): Promise<GetStatusUtilsResponse> => {\n const { token, dprUser } = localsHelper.getValues(res)\n const { status: currentStatus, requestedAt } = req.body\n const timeoutExemptStatuses = [RequestStatus.READY, RequestStatus.EXPIRED, RequestStatus.FAILED]\n\n let status\n let errorMessage\n let statusResponse\n try {\n ;({ status, statusResponse } = await getStatusByReportType(services, req, res, token, dprUser.id))\n if (\n shouldTimeoutRequest({ requestedAt, compareTime: new Date(), durationMins: 15 }) &&\n !timeoutExemptStatuses.includes(status)\n ) {\n throw new Error('Request taking too long. Request Halted')\n }\n\n if (status === RequestStatus.FAILED) {\n logger.error(`Error: ${JSON.stringify(statusResponse.error)}`)\n const { userMessage, developerMessage } = statusResponse.error\n if (userMessage || developerMessage) {\n errorMessage = statusResponse.error\n } else {\n errorMessage = {\n developerMessage: statusResponse.error,\n }\n }\n }\n } catch (error) {\n logger.error(`Error: ${JSON.stringify(error)}`)\n const { data } = error\n errorMessage = data || { userMessage: error.message }\n status = currentStatus === RequestStatus.FINISHED ? RequestStatus.EXPIRED : RequestStatus.FAILED\n }\n\n if (typeof status === 'number') {\n status = RequestStatus.FAILED\n }\n\n return {\n status,\n ...(errorMessage && { errorMessage }),\n }\n}\n\n/**\n * Gets the expired status of a viewed report\n * - if reports status was READY/FINISHED\n * - And the new Status is an error status\n * - it means the report has expired\n *\n * @param {AsyncReportUtilsParams} { req, res, services }\n * @return {*}\n */\nexport const getExpiredStatus = async ({ req, res, services }: { req: Request; res: Response; services: Services }) => {\n const { token, dprUser } = localsHelper.getValues(res)\n const { executionId, status: currentStatus } = req.body\n\n let errorMessage\n let status\n try {\n ;({ status } = await getStatusByReportType(services, req, res, token, dprUser.id))\n } catch (error) {\n const { data } = error\n errorMessage = (data ?? {}).userMessage\n status =\n currentStatus === RequestStatus.READY || currentStatus === RequestStatus.FINISHED\n ? RequestStatus.EXPIRED\n : RequestStatus.FAILED\n }\n\n const result: GetStatusUtilsResponse = {\n status,\n ...(errorMessage && { errorMessage }),\n }\n\n return {\n isExpired: result.status === RequestStatus.EXPIRED,\n executionId,\n }\n}\n\nexport const shouldTimeoutRequest = ({\n requestedAt,\n compareTime,\n durationMins,\n}: {\n requestedAt: Date\n compareTime: Date\n durationMins: number\n}) => {\n const compareDate = dayjs(compareTime)\n const requestDate = dayjs(requestedAt)\n\n const result = compareDate.diff(requestDate, 'minutes')\n\n return result >= durationMins\n}\n\nexport default {\n getStatus,\n getExpiredStatus,\n shouldTimeoutRequest,\n}\n"],
5
- "mappings": "6iBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,aAAAE,EAAA,qBAAAC,EAAA,cAAAC,EAAA,yBAAAC,IAAA,eAAAC,EAAAN,GAAA,IAAAO,EAAkB,oBAClBC,EAAwB,6CAExBC,EAA2D,gCAE3DC,EAAmB,uBAEnBC,EAAyB,6BAEzB,EAAAC,QAAM,OAAO,EAAAC,OAAW,EAiBxB,MAAMC,EAA6C,CAAC,gBAAc,QAAS,gBAAc,OAAQ,gBAAc,OAAO,EAEhHC,EAAqD,CACzD,gBAAc,UACd,gBAAc,QACd,gBAAc,MAChB,EAEA,SAASC,EAAwBC,EAAyE,CACxG,OAAO,QAAQ,IAAIA,CAAc,EAAE,KAAMC,GAAoB,CAC3D,MAAMC,EAAYD,EAAgB,KAC/BE,GACC,OAAOA,EAAS,QAAW,UAAYN,EAAqB,SAASM,EAAS,MAAuB,CACzG,EAEA,GAAID,EACF,OAAOA,EAGT,MAAME,EAAmBH,EAAgB,KAAME,GAC7CL,EAA6B,SAASK,EAAS,MAAuB,CACxE,EAEA,OAAIC,GAIGH,EAAgB,CAAC,CAC1B,CAAC,CACH,CAEA,MAAMI,EAAwB,MAC5BC,EACAC,EACAC,EACAC,EACAC,IACG,CACH,KAAM,CAAE,gBAAAC,CAAgB,EAAI,EAAAC,QAAa,UAAUJ,CAAG,EAChD,CAAE,KAAAK,EAAM,SAAAC,EAAU,YAAAC,EAAa,GAAAC,EAAI,QAAAC,CAAQ,EAAIV,EAAI,KAInDW,GAFkB,MAAMZ,EAAS,uBAAuB,uBAAuBS,EAAaL,CAAM,GAExE,oBAAsB,CAAC,EAEnDG,IAAS,aAAW,QACtBK,EAAQ,KAAK,CAAE,YAAAH,EAAa,QAAAE,EAAS,UAAWD,CAAG,CAAC,EAGtD,MAAMhB,EAAiBkB,EAAQ,IAAKC,GAClCb,EAAS,iBAAiB,qBACxBG,EACAK,EACAK,EAAc,UACdA,EAAc,YACdR,EACAQ,EAAc,OAChB,CACF,EAEIN,IAAS,aAAW,WACtBb,EAAe,KACbM,EAAS,iBAAiB,eAAeG,EAAOK,EAAUE,EAAID,EAAaE,EAASN,CAAe,CACrG,EAGF,MAAMS,EAAiB,MAAMrB,EAAwBC,CAAc,EAEnE,MAAO,CACL,OAAQoB,EAAe,OACvB,eAAAA,CACF,CACF,EAEajC,EAAY,MAAO,CAC9B,IAAAoB,EACA,IAAAC,EACA,SAAAF,CACF,IAIuC,CACrC,KAAM,CAAE,MAAAG,EAAO,QAAAY,CAAQ,EAAI,EAAAT,QAAa,UAAUJ,CAAG,EAC/C,CAAE,OAAQc,EAAe,YAAAC,CAAY,EAAIhB,EAAI,KAC7CiB,EAAwB,CAAC,gBAAc,MAAO,gBAAc,QAAS,gBAAc,MAAM,EAE/F,IAAIC,EACAC,EACAN,EACJ,GAAI,CAEF,GADE,CAAE,OAAAK,EAAQ,eAAAL,CAAe,EAAI,MAAMf,EAAsBC,EAAUC,EAAKC,EAAKC,EAAOY,EAAQ,EAAE,EAE9FjC,EAAqB,CAAE,YAAAmC,EAAa,YAAa,IAAI,KAAQ,aAAc,EAAG,CAAC,GAC/E,CAACC,EAAsB,SAASC,CAAM,EAEtC,MAAM,IAAI,MAAM,yCAAyC,EAG3D,GAAIA,IAAW,gBAAc,OAAQ,CACnC,EAAAE,QAAO,MAAM,UAAU,KAAK,UAAUP,EAAe,KAAK,CAAC,EAAE,EAC7D,KAAM,CAAE,YAAAQ,EAAa,iBAAAC,CAAiB,EAAIT,EAAe,MACrDQ,GAAeC,EACjBH,EAAeN,EAAe,MAE9BM,EAAe,CACb,iBAAkBN,EAAe,KACnC,CAEJ,CACF,OAASU,EAAO,CACd,EAAAH,QAAO,MAAM,UAAU,KAAK,UAAUG,CAAK,CAAC,EAAE,EAC9C,KAAM,CAAE,KAAAC,CAAK,EAAID,EACjBJ,EAAeK,GAAQ,CAAE,YAAaD,EAAM,OAAQ,EACpDL,EAASH,IAAkB,gBAAc,SAAW,gBAAc,QAAU,gBAAc,MAC5F,CAEA,OAAI,OAAOG,GAAW,WACpBA,EAAS,gBAAc,QAGlB,CACL,OAAAA,EACA,GAAIC,GAAgB,CAAE,aAAAA,CAAa,CACrC,CACF,EAWaxC,EAAmB,MAAO,CAAE,IAAAqB,EAAK,IAAAC,EAAK,SAAAF,CAAS,IAA2D,CACrH,KAAM,CAAE,MAAAG,EAAO,QAAAY,CAAQ,EAAI,EAAAT,QAAa,UAAUJ,CAAG,EAC/C,CAAE,YAAAO,EAAa,OAAQO,CAAc,EAAIf,EAAI,KAEnD,IAAImB,EACAD,EACJ,GAAI,EACA,CAAE,OAAAA,CAAO,EAAI,MAAMpB,EAAsBC,EAAUC,EAAKC,EAAKC,EAAOY,EAAQ,EAAE,EAClF,OAASS,EAAO,CACd,KAAM,CAAE,KAAAC,CAAK,EAAID,EACjBJ,GAAgBK,GAAQ,CAAC,GAAG,YAC5BN,EACEH,IAAkB,gBAAc,OAASA,IAAkB,gBAAc,SACrE,gBAAc,QACd,gBAAc,MACtB,CAOA,MAAO,CACL,UANqC,CACrC,OAAAG,EACA,GAAIC,GAAgB,CAAE,aAAAA,CAAa,CACrC,EAGoB,SAAW,gBAAc,QAC3C,YAAAX,CACF,CACF,EAEa3B,EAAuB,CAAC,CACnC,YAAAmC,EACA,YAAAS,EACA,aAAAC,CACF,IAIM,CACJ,MAAMC,KAAc,EAAAvC,SAAMqC,CAAW,EAC/BG,KAAc,EAAAxC,SAAM4B,CAAW,EAIrC,OAFeW,EAAY,KAAKC,EAAa,SAAS,GAErCF,CACnB,EAEA,IAAOhD,EAAQ,CACb,UAAAE,EACA,iBAAAD,EACA,qBAAAE,CACF",
6
- "names": ["requestStatusHelper_exports", "__export", "requestStatusHelper_default", "getExpiredStatus", "getStatus", "shouldTimeoutRequest", "__toCommonJS", "import_dayjs", "import_customParseFormat", "import_UserReports", "import_logger", "import_localsHelper", "dayjs", "customParse", "BAD_REQUEST_STATUSES", "IN_PROGRESS_REQUEST_STATUSES", "findWorstStatusResponse", "statusRequests", "statusResponses", "badStatus", "response", "inProgressStatus", "getStatusByReportType", "services", "req", "res", "token", "userId", "definitionsPath", "localsHelper", "type", "reportId", "executionId", "id", "tableId", "reports", "executionData", "statusResponse", "dprUser", "currentStatus", "requestedAt", "timeoutExemptStatuses", "status", "errorMessage", "logger", "userMessage", "developerMessage", "error", "data", "compareTime", "durationMins", "compareDate", "requestDate"]
4
+ "sourcesContent": ["import dayjs from 'dayjs'\nimport customParse from 'dayjs/plugin/customParseFormat'\nimport { Request, Response } from 'express'\nimport { ReportType, RequestedReport, RequestStatus } from '../types/UserReports'\nimport { ChildReportExecutionData } from '../types/ExecutionData'\nimport logger from './logger'\nimport { Services } from '../types/Services'\nimport localsHelper from './localsHelper'\nimport { components } from '../types/api'\nimport ErrorHandler from './ErrorHandler'\n\ndayjs.extend(customParse)\ninterface GetStatusUtilsResponse {\n status: RequestStatus\n errorMessage?: { userMessage?: string; developerMessage?: string }\n reportData?: RequestedReport | undefined\n}\n\nconst BAD_REQUEST_STATUSES: Array<RequestStatus> = [RequestStatus.ABORTED, RequestStatus.FAILED, RequestStatus.EXPIRED]\n\nconst IN_PROGRESS_REQUEST_STATUSES: Array<RequestStatus> = [\n RequestStatus.SUBMITTED,\n RequestStatus.STARTED,\n RequestStatus.PICKED,\n]\n\nfunction findWorstStatusResponse(\n statusRequests: Array<Promise<components['schemas']['StatementExecutionStatus']>>,\n): Promise<components['schemas']['StatementExecutionStatus']> {\n return Promise.all(statusRequests).then((statusResponses) => {\n const badStatus = statusResponses.find(\n (response) =>\n typeof response.status === 'number' || BAD_REQUEST_STATUSES.includes(response.status as RequestStatus),\n )\n\n if (badStatus) {\n return badStatus\n }\n\n const inProgressStatus = statusResponses.find((response) =>\n IN_PROGRESS_REQUEST_STATUSES.includes(response.status as RequestStatus),\n )\n\n if (inProgressStatus) {\n return inProgressStatus\n }\n\n return statusResponses[0]\n })\n}\n\nconst getStatusByReportType = async (\n services: Services,\n req: Request,\n res: Response,\n token: string,\n userId: string,\n) => {\n const { definitionsPath } = localsHelper.getValues(res)\n const { type, reportId, executionId, id, tableId } = req.body\n\n const requestedReport = await services.requestedReportService.getReportByExecutionId(executionId, userId)\n\n const reports = requestedReport?.childExecutionData ?? []\n\n let statusRequests: Array<Promise<components['schemas']['StatementExecutionStatus']>> = []\n if (type === ReportType.REPORT) {\n reports.push({ executionId, tableId, variantId: id })\n statusRequests = reports.map((executionData: ChildReportExecutionData) => {\n return services.reportingService.getAsyncReportStatus(\n token,\n reportId,\n executionData.variantId,\n executionData.executionId || '',\n definitionsPath,\n executionData.tableId || '',\n )\n })\n }\n\n if (type === ReportType.DASHBOARD) {\n statusRequests.push(\n services.dashboardService.getAsyncStatus(token, reportId, id, executionId, tableId, definitionsPath),\n )\n }\n\n const statusResponse = await findWorstStatusResponse(statusRequests)\n\n return {\n status: statusResponse.status,\n statusResponse,\n }\n}\n\nexport const getStatus = async ({\n req,\n res,\n services,\n}: {\n req: Request\n res: Response\n services: Services\n}): Promise<GetStatusUtilsResponse> => {\n const { token, dprUser } = localsHelper.getValues(res)\n const { status: currentStatus, requestedAt } = req.body\n const timeoutExemptStatuses = [RequestStatus.READY, RequestStatus.EXPIRED, RequestStatus.FAILED]\n\n let status: RequestStatus\n let errorMessage\n let statusResponse: components['schemas']['StatementExecutionStatus']\n try {\n const statusResponseData = await getStatusByReportType(services, req, res, token, dprUser.id)\n statusResponse = statusResponseData.statusResponse\n status = <RequestStatus>statusResponseData.status\n if (\n shouldTimeoutRequest({ requestedAt, compareTime: new Date(), durationMins: 15 }) &&\n !timeoutExemptStatuses.includes(<RequestStatus>status)\n ) {\n throw new Error('Request taking too long. Request Halted')\n }\n\n if (status === RequestStatus.FAILED) {\n logger.error(`Error: ${JSON.stringify(statusResponse.error)}`)\n errorMessage = new ErrorHandler(statusResponse.error).formatError()\n }\n } catch (error) {\n errorMessage = new ErrorHandler(error).formatError()\n status = currentStatus === RequestStatus.FINISHED ? RequestStatus.EXPIRED : RequestStatus.FAILED\n }\n\n if (typeof status === 'number') {\n status = RequestStatus.FAILED\n }\n\n return {\n status,\n ...(errorMessage && { errorMessage }),\n }\n}\n\n/**\n * Gets the expired status of a viewed report\n * - if reports status was READY/FINISHED\n * - And the new Status is an error status\n * - it means the report has expired\n *\n * @param {AsyncReportUtilsParams} { req, res, services }\n * @return {*}\n */\nexport const getExpiredStatus = async ({ req, res, services }: { req: Request; res: Response; services: Services }) => {\n const { token, dprUser } = localsHelper.getValues(res)\n const { executionId, status: currentStatus } = req.body\n\n let errorMessage\n let status\n try {\n const statusData = await getStatusByReportType(services, req, res, token, dprUser.id)\n status = <RequestStatus>statusData.status\n } catch (error) {\n errorMessage = new ErrorHandler(error).formatError()\n status =\n currentStatus === RequestStatus.READY || currentStatus === RequestStatus.FINISHED\n ? RequestStatus.EXPIRED\n : RequestStatus.FAILED\n }\n\n const result: GetStatusUtilsResponse = {\n status,\n ...(errorMessage && { errorMessage }),\n }\n\n return {\n isExpired: result.status === RequestStatus.EXPIRED,\n executionId,\n }\n}\n\nexport const shouldTimeoutRequest = ({\n requestedAt,\n compareTime,\n durationMins,\n}: {\n requestedAt: Date\n compareTime: Date\n durationMins: number\n}) => {\n const compareDate = dayjs(compareTime)\n const requestDate = dayjs(requestedAt)\n\n const result = compareDate.diff(requestDate, 'minutes')\n\n return result >= durationMins\n}\n\nexport default {\n getStatus,\n getExpiredStatus,\n shouldTimeoutRequest,\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["requestStatusHelper_exports", "__export", "requestStatusHelper_default", "getExpiredStatus", "getStatus", "shouldTimeoutRequest", "__toCommonJS", "import_dayjs", "import_customParseFormat", "import_UserReports", "import_logger", "import_localsHelper", "import_ErrorHandler", "dayjs", "customParse", "BAD_REQUEST_STATUSES", "IN_PROGRESS_REQUEST_STATUSES", "findWorstStatusResponse", "statusRequests", "statusResponses", "badStatus", "response", "inProgressStatus", "getStatusByReportType", "services", "req", "res", "token", "userId", "definitionsPath", "localsHelper", "type", "reportId", "executionId", "id", "tableId", "reports", "executionData", "statusResponse", "dprUser", "currentStatus", "requestedAt", "timeoutExemptStatuses", "status", "errorMessage", "statusResponseData", "logger", "ErrorHandler", "error", "compareTime", "durationMins", "compareDate", "requestDate"]
7
7
  }
@@ -6,24 +6,16 @@ import { ChildReportExecutionData } from '../types/ExecutionData'
6
6
  import logger from './logger'
7
7
  import { Services } from '../types/Services'
8
8
  import localsHelper from './localsHelper'
9
+ import { components } from '../types/api'
10
+ import ErrorHandler from './ErrorHandler'
9
11
 
10
12
  dayjs.extend(customParse)
11
13
  interface GetStatusUtilsResponse {
12
14
  status: RequestStatus
13
- errorMessage?: string
15
+ errorMessage?: { userMessage?: string; developerMessage?: string }
14
16
  reportData?: RequestedReport | undefined
15
17
  }
16
18
 
17
- interface StatusResponseError {
18
- userMessage: string
19
- developerMessage: string
20
- }
21
-
22
- interface StatusResponse {
23
- status: RequestStatus
24
- error: StatusResponseError
25
- }
26
-
27
19
  const BAD_REQUEST_STATUSES: Array<RequestStatus> = [RequestStatus.ABORTED, RequestStatus.FAILED, RequestStatus.EXPIRED]
28
20
 
29
21
  const IN_PROGRESS_REQUEST_STATUSES: Array<RequestStatus> = [
@@ -32,7 +24,9 @@ const IN_PROGRESS_REQUEST_STATUSES: Array<RequestStatus> = [
32
24
  RequestStatus.PICKED,
33
25
  ]
34
26
 
35
- function findWorstStatusResponse(statusRequests: Array<Promise<StatusResponse>>): Promise<StatusResponse> {
27
+ function findWorstStatusResponse(
28
+ statusRequests: Array<Promise<components['schemas']['StatementExecutionStatus']>>,
29
+ ): Promise<components['schemas']['StatementExecutionStatus']> {
36
30
  return Promise.all(statusRequests).then((statusResponses) => {
37
31
  const badStatus = statusResponses.find(
38
32
  (response) =>
@@ -67,23 +61,23 @@ const getStatusByReportType = async (
67
61
 
68
62
  const requestedReport = await services.requestedReportService.getReportByExecutionId(executionId, userId)
69
63
 
70
- const reports = requestedReport.childExecutionData ?? []
64
+ const reports = requestedReport?.childExecutionData ?? []
71
65
 
66
+ let statusRequests: Array<Promise<components['schemas']['StatementExecutionStatus']>> = []
72
67
  if (type === ReportType.REPORT) {
73
68
  reports.push({ executionId, tableId, variantId: id })
69
+ statusRequests = reports.map((executionData: ChildReportExecutionData) => {
70
+ return services.reportingService.getAsyncReportStatus(
71
+ token,
72
+ reportId,
73
+ executionData.variantId,
74
+ executionData.executionId || '',
75
+ definitionsPath,
76
+ executionData.tableId || '',
77
+ )
78
+ })
74
79
  }
75
80
 
76
- const statusRequests = reports.map((executionData: ChildReportExecutionData) =>
77
- services.reportingService.getAsyncReportStatus(
78
- token,
79
- reportId,
80
- executionData.variantId,
81
- executionData.executionId,
82
- definitionsPath,
83
- executionData.tableId,
84
- ),
85
- )
86
-
87
81
  if (type === ReportType.DASHBOARD) {
88
82
  statusRequests.push(
89
83
  services.dashboardService.getAsyncStatus(token, reportId, id, executionId, tableId, definitionsPath),
@@ -111,33 +105,26 @@ export const getStatus = async ({
111
105
  const { status: currentStatus, requestedAt } = req.body
112
106
  const timeoutExemptStatuses = [RequestStatus.READY, RequestStatus.EXPIRED, RequestStatus.FAILED]
113
107
 
114
- let status
108
+ let status: RequestStatus
115
109
  let errorMessage
116
- let statusResponse
110
+ let statusResponse: components['schemas']['StatementExecutionStatus']
117
111
  try {
118
- ;({ status, statusResponse } = await getStatusByReportType(services, req, res, token, dprUser.id))
112
+ const statusResponseData = await getStatusByReportType(services, req, res, token, dprUser.id)
113
+ statusResponse = statusResponseData.statusResponse
114
+ status = <RequestStatus>statusResponseData.status
119
115
  if (
120
116
  shouldTimeoutRequest({ requestedAt, compareTime: new Date(), durationMins: 15 }) &&
121
- !timeoutExemptStatuses.includes(status)
117
+ !timeoutExemptStatuses.includes(<RequestStatus>status)
122
118
  ) {
123
119
  throw new Error('Request taking too long. Request Halted')
124
120
  }
125
121
 
126
122
  if (status === RequestStatus.FAILED) {
127
123
  logger.error(`Error: ${JSON.stringify(statusResponse.error)}`)
128
- const { userMessage, developerMessage } = statusResponse.error
129
- if (userMessage || developerMessage) {
130
- errorMessage = statusResponse.error
131
- } else {
132
- errorMessage = {
133
- developerMessage: statusResponse.error,
134
- }
135
- }
124
+ errorMessage = new ErrorHandler(statusResponse.error).formatError()
136
125
  }
137
126
  } catch (error) {
138
- logger.error(`Error: ${JSON.stringify(error)}`)
139
- const { data } = error
140
- errorMessage = data || { userMessage: error.message }
127
+ errorMessage = new ErrorHandler(error).formatError()
141
128
  status = currentStatus === RequestStatus.FINISHED ? RequestStatus.EXPIRED : RequestStatus.FAILED
142
129
  }
143
130
 
@@ -167,10 +154,10 @@ export const getExpiredStatus = async ({ req, res, services }: { req: Request; r
167
154
  let errorMessage
168
155
  let status
169
156
  try {
170
- ;({ status } = await getStatusByReportType(services, req, res, token, dprUser.id))
157
+ const statusData = await getStatusByReportType(services, req, res, token, dprUser.id)
158
+ status = <RequestStatus>statusData.status
171
159
  } catch (error) {
172
- const { data } = error
173
- errorMessage = (data ?? {}).userMessage
160
+ errorMessage = new ErrorHandler(error).formatError()
174
161
  status =
175
162
  currentStatus === RequestStatus.READY || currentStatus === RequestStatus.FINISHED
176
163
  ? RequestStatus.EXPIRED
@@ -1,2 +1,2 @@
1
- var a=Object.defineProperty;var o=Object.getOwnPropertyDescriptor;var p=Object.getOwnPropertyNames;var d=Object.prototype.hasOwnProperty;var u=(s,e)=>{for(var n in e)a(s,n,{get:e[n],enumerable:!0})},g=(s,e,n,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let t of p(e))!d.call(s,t)&&t!==n&&a(s,t,{get:()=>e[t],enumerable:!(i=o(e,t))||i.enumerable});return s};var m=s=>g(a({},"__esModule",{value:!0}),s);var k={};u(k,{default:()=>c,sanitise:()=>r});module.exports=m(k);function r(s){return s.response?{text:s.response.text,status:s.response.status,headers:s.response.headers,data:s.response.body,message:s.message,stack:s.stack}:{message:s.message,stack:s.stack}}var c=r;0&&(module.exports={sanitise});
1
+ "use strict";var a=Object.defineProperty;var o=Object.getOwnPropertyDescriptor;var p=Object.getOwnPropertyNames;var d=Object.prototype.hasOwnProperty;var u=(s,e)=>{for(var n in e)a(s,n,{get:e[n],enumerable:!0})},g=(s,e,n,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let t of p(e))!d.call(s,t)&&t!==n&&a(s,t,{get:()=>e[t],enumerable:!(i=o(e,t))||i.enumerable});return s};var m=s=>g(a({},"__esModule",{value:!0}),s);var k={};u(k,{default:()=>c,sanitise:()=>r});module.exports=m(k);function r(s){return s.response?{text:s.response.text,status:s.response.status,headers:s.response.headers,data:s.response.body,message:s.message,stack:s.stack}:{message:s.message,stack:s.stack}}var c=r;0&&(module.exports={sanitise});
2
2
  //# sourceMappingURL=sanitisedError.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/dpr/utils/sanitisedError.ts"],
4
- "sourcesContent": ["import type { ResponseError } from 'superagent'\n\ninterface SanitisedError {\n text?: string\n status?: number\n headers?: unknown\n data?: unknown\n stack?: string\n message: string\n}\n\nexport type UnsanitisedError = ResponseError\n\nexport function sanitise(error: UnsanitisedError): SanitisedError {\n if (error.response) {\n return {\n text: error.response.text,\n status: error.response.status,\n headers: error.response.headers,\n data: error.response.body,\n message: error.message,\n stack: error.stack,\n }\n }\n return {\n message: error.message,\n stack: error.stack,\n }\n}\n\nexport default sanitise\n"],
5
- "mappings": "4ZAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,aAAAE,EAAA,aAAAC,IAAA,eAAAC,EAAAJ,GAaO,SAASG,EAASE,EAAyC,CAChE,OAAIA,EAAM,SACD,CACL,KAAMA,EAAM,SAAS,KACrB,OAAQA,EAAM,SAAS,OACvB,QAASA,EAAM,SAAS,QACxB,KAAMA,EAAM,SAAS,KACrB,QAASA,EAAM,QACf,MAAOA,EAAM,KACf,EAEK,CACL,QAASA,EAAM,QACf,MAAOA,EAAM,KACf,CACF,CAEA,IAAOH,EAAQC",
4
+ "sourcesContent": ["import type { ResponseError } from 'superagent'\n\ninterface SanitisedError {\n text?: string\n status?: number\n headers?: unknown\n data?: unknown\n stack?: string | undefined\n message: string\n}\n\nexport type UnsanitisedError = ResponseError\n\nexport function sanitise(error: UnsanitisedError): SanitisedError {\n if (error.response) {\n return {\n text: error.response.text,\n status: error.response.status,\n headers: error.response.headers,\n data: error.response.body,\n message: error.message,\n stack: error.stack,\n }\n }\n return {\n message: error.message,\n stack: error.stack,\n }\n}\n\nexport default sanitise\n"],
5
+ "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,aAAAE,EAAA,aAAAC,IAAA,eAAAC,EAAAJ,GAaO,SAASG,EAASE,EAAyC,CAChE,OAAIA,EAAM,SACD,CACL,KAAMA,EAAM,SAAS,KACrB,OAAQA,EAAM,SAAS,OACvB,QAASA,EAAM,SAAS,QACxB,KAAMA,EAAM,SAAS,KACrB,QAASA,EAAM,QACf,MAAOA,EAAM,KACf,EAEK,CACL,QAASA,EAAM,QACf,MAAOA,EAAM,KACf,CACF,CAEA,IAAOH,EAAQC",
6
6
  "names": ["sanitisedError_exports", "__export", "sanitisedError_default", "sanitise", "__toCommonJS", "error"]
7
7
  }
@@ -5,7 +5,7 @@ interface SanitisedError {
5
5
  status?: number
6
6
  headers?: unknown
7
7
  data?: unknown
8
- stack?: string
8
+ stack?: string | undefined
9
9
  message: string
10
10
  }
11
11
 
@@ -1,2 +1,2 @@
1
- var c=Object.defineProperty;var p=Object.getOwnPropertyDescriptor;var m=Object.getOwnPropertyNames;var D=Object.prototype.hasOwnProperty;var u=(e,t)=>{for(var s in t)c(e,s,{get:t[s],enumerable:!0})},x=(e,t,s,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of m(t))!D.call(e,o)&&o!==s&&c(e,o,{get:()=>t[o],enumerable:!(r=p(t,o))||r.enumerable});return e};var $=e=>x(c({},"__esModule",{value:!0}),e);var R={};u(R,{clearFilterValue:()=>l,createQuerystringFromObject:()=>d,createUrlForParameters:()=>a,default:()=>S,getDpdPathSuffix:()=>h,getRoutePrefix:()=>A});module.exports=$(R);var f=require("../components/_filters/filter-input/enum");const l="~clear~",a=(e,t,s)=>{let r;t?(r={...e,selectedPage:"1"},Object.keys(t).forEach(i=>{t[i]?r[i]=t[i]:Object.keys(r).filter(n=>n===i||n.startsWith(`${i}.`)).forEach(n=>{r[n]=l})})):r={selectedPage:"1",pageSize:e.pageSize,sortColumn:e.sortColumn,sortedAsc:e.sortedAsc,dataProductDefinitionsPath:e.dataProductDefinitionsPath};const o={};return Object.keys(r).filter(i=>r[i]).forEach(i=>{o[i]=r[i]}),d(o,s)},d=(e,t)=>`?${Object.keys(e).flatMap(r=>{const o=t?.find(n=>`filters.${n.name}`===r),i=e[r]||"";return Array.isArray(i)?i.map(n=>`${encodeURI(r)}=${encodeURI(n)}`):o&&o.filter&&o.filter.type.toLowerCase()===f.FilterType.multiselect.toLowerCase()?i.split(",").map(g=>`${encodeURI(r)}=${encodeURI(g)}`):[`${encodeURI(r)}=${encodeURI(i)}`]}).join("&")}`,h=e=>e&&e!==""?`?dataProductDefinitionsPath=${e}`:"",A=e=>{let t=e?.routePrefix;return t||(t="/dpr"),t==="dpr"&&(t=""),t};var S=a;0&&(module.exports={clearFilterValue,createQuerystringFromObject,createUrlForParameters,getDpdPathSuffix,getRoutePrefix});
1
+ "use strict";var c=Object.defineProperty;var p=Object.getOwnPropertyDescriptor;var m=Object.getOwnPropertyNames;var D=Object.prototype.hasOwnProperty;var u=(e,t)=>{for(var s in t)c(e,s,{get:t[s],enumerable:!0})},x=(e,t,s,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of m(t))!D.call(e,o)&&o!==s&&c(e,o,{get:()=>t[o],enumerable:!(r=p(t,o))||r.enumerable});return e};var $=e=>x(c({},"__esModule",{value:!0}),e);var R={};u(R,{clearFilterValue:()=>l,createQuerystringFromObject:()=>d,createUrlForParameters:()=>a,default:()=>S,getDpdPathSuffix:()=>h,getRoutePrefix:()=>A});module.exports=$(R);var f=require("../components/_filters/filter-input/enum");const l="~clear~",a=(e,t,s)=>{let r;t?(r={...e,selectedPage:"1"},Object.keys(t).forEach(i=>{t[i]?r[i]=t[i]:Object.keys(r).filter(n=>n===i||n.startsWith(`${i}.`)).forEach(n=>{r[n]=l})})):r={selectedPage:"1",pageSize:e.pageSize,sortColumn:e.sortColumn,sortedAsc:e.sortedAsc,dataProductDefinitionsPath:e.dataProductDefinitionsPath};const o={};return Object.keys(r).filter(i=>r[i]).forEach(i=>{o[i]=r[i]}),d(o,s)},d=(e,t)=>`?${Object.keys(e).flatMap(r=>{const o=t?.find(n=>`filters.${n.name}`===r),i=e[r]||"";return Array.isArray(i)?i.map(n=>`${encodeURI(r)}=${encodeURI(n)}`):o&&o.filter&&o.filter.type.toLowerCase()===f.FilterType.multiselect.toLowerCase()?i.split(",").map(g=>`${encodeURI(r)}=${encodeURI(g)}`):[`${encodeURI(r)}=${encodeURI(i)}`]}).join("&")}`,h=e=>e&&e!==""?`?dataProductDefinitionsPath=${e}`:"",A=e=>{let t=e?.routePrefix;return t||(t="/dpr"),t==="dpr"&&(t=""),t};var S=a;0&&(module.exports={clearFilterValue,createQuerystringFromObject,createUrlForParameters,getDpdPathSuffix,getRoutePrefix});
2
2
  //# sourceMappingURL=urlHelper.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/dpr/utils/urlHelper.ts"],
4
- "sourcesContent": ["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { FilterType } from '../components/_filters/filter-input/enum'\nimport { components } from '../types/api'\nimport { DprConfig } from '../types/DprConfig'\n\nexport const clearFilterValue = '~clear~'\n\nexport const createUrlForParameters = (\n currentQueryParams: NodeJS.Dict<string | Array<string>>,\n updateQueryParams: NodeJS.Dict<string>,\n fields?: components['schemas']['FieldDefinition'][],\n) => {\n let queryParams: NodeJS.Dict<string | Array<string>>\n\n if (updateQueryParams) {\n queryParams = {\n ...currentQueryParams,\n selectedPage: '1',\n }\n\n Object.keys(updateQueryParams).forEach((q) => {\n if (updateQueryParams[q]) {\n queryParams[q] = updateQueryParams[q]\n } else {\n Object.keys(queryParams)\n .filter((key) => key === q || key.startsWith(`${q}.`))\n .forEach((key) => {\n queryParams[key] = clearFilterValue\n })\n }\n })\n } else {\n queryParams = {\n selectedPage: '1',\n pageSize: currentQueryParams.pageSize,\n sortColumn: currentQueryParams.sortColumn,\n sortedAsc: currentQueryParams.sortedAsc,\n dataProductDefinitionsPath: currentQueryParams.dataProductDefinitionsPath,\n }\n }\n\n const nonEmptyQueryParams: NodeJS.Dict<string | Array<string>> = {}\n\n Object.keys(queryParams)\n .filter((key) => queryParams[key])\n .forEach((key) => {\n nonEmptyQueryParams[key] = queryParams[key]\n })\n\n return createQuerystringFromObject(nonEmptyQueryParams, fields)\n}\n\nexport const createQuerystringFromObject = (\n source: NodeJS.Dict<string | Array<string>>,\n fields?: components['schemas']['FieldDefinition'][],\n) => {\n const querystring = Object.keys(source)\n .flatMap((key: string) => {\n const fieldDef = fields?.find((f) => `filters.${f.name}` === key)\n const value = source[key] || ''\n\n if (Array.isArray(value)) {\n return value.map((v) => `${encodeURI(key)}=${encodeURI(v)}`)\n }\n\n if (fieldDef && fieldDef.filter && fieldDef.filter.type.toLowerCase() === FilterType.multiselect.toLowerCase()) {\n const values = value.split(',')\n return values.map((v) => {\n return `${encodeURI(key)}=${encodeURI(v)}`\n })\n }\n\n return [`${encodeURI(key)}=${encodeURI(value)}`]\n })\n .join('&')\n\n return `?${querystring}`\n}\n\nexport const getDpdPathSuffix = (dpdsPath: string) => {\n if (dpdsPath && dpdsPath !== '') {\n return `?dataProductDefinitionsPath=${dpdsPath}`\n }\n\n return ''\n}\n\nexport const getRoutePrefix = (config?: DprConfig) => {\n let prefix = config?.routePrefix\n if (!prefix) {\n prefix = '/dpr'\n }\n if (prefix === 'dpr') {\n prefix = ''\n }\n return prefix\n}\n\nexport default createUrlForParameters\n"],
5
- "mappings": "4ZAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,sBAAAE,EAAA,gCAAAC,EAAA,2BAAAC,EAAA,YAAAC,EAAA,qBAAAC,EAAA,mBAAAC,IAAA,eAAAC,EAAAR,GACA,IAAAS,EAA2B,oDAIpB,MAAMP,EAAmB,UAEnBE,EAAyB,CACpCM,EACAC,EACAC,IACG,CACH,IAAIC,EAEAF,GACFE,EAAc,CACZ,GAAGH,EACH,aAAc,GAChB,EAEA,OAAO,KAAKC,CAAiB,EAAE,QAASG,GAAM,CACxCH,EAAkBG,CAAC,EACrBD,EAAYC,CAAC,EAAIH,EAAkBG,CAAC,EAEpC,OAAO,KAAKD,CAAW,EACpB,OAAQE,GAAQA,IAAQD,GAAKC,EAAI,WAAW,GAAGD,CAAC,GAAG,CAAC,EACpD,QAASC,GAAQ,CAChBF,EAAYE,CAAG,EAAIb,CACrB,CAAC,CAEP,CAAC,GAEDW,EAAc,CACZ,aAAc,IACd,SAAUH,EAAmB,SAC7B,WAAYA,EAAmB,WAC/B,UAAWA,EAAmB,UAC9B,2BAA4BA,EAAmB,0BACjD,EAGF,MAAMM,EAA2D,CAAC,EAElE,cAAO,KAAKH,CAAW,EACpB,OAAQE,GAAQF,EAAYE,CAAG,CAAC,EAChC,QAASA,GAAQ,CAChBC,EAAoBD,CAAG,EAAIF,EAAYE,CAAG,CAC5C,CAAC,EAEIZ,EAA4Ba,EAAqBJ,CAAM,CAChE,EAEaT,EAA8B,CACzCc,EACAL,IAsBO,IApBa,OAAO,KAAKK,CAAM,EACnC,QAASF,GAAgB,CACxB,MAAMG,EAAWN,GAAQ,KAAMO,GAAM,WAAWA,EAAE,IAAI,KAAOJ,CAAG,EAC1DK,EAAQH,EAAOF,CAAG,GAAK,GAE7B,OAAI,MAAM,QAAQK,CAAK,EACdA,EAAM,IAAKC,GAAM,GAAG,UAAUN,CAAG,CAAC,IAAI,UAAUM,CAAC,CAAC,EAAE,EAGzDH,GAAYA,EAAS,QAAUA,EAAS,OAAO,KAAK,YAAY,IAAM,aAAW,YAAY,YAAY,EAC5FE,EAAM,MAAM,GAAG,EAChB,IAAKC,GACV,GAAG,UAAUN,CAAG,CAAC,IAAI,UAAUM,CAAC,CAAC,EACzC,EAGI,CAAC,GAAG,UAAUN,CAAG,CAAC,IAAI,UAAUK,CAAK,CAAC,EAAE,CACjD,CAAC,EACA,KAAK,GAAG,CAEW,GAGXd,EAAoBgB,GAC3BA,GAAYA,IAAa,GACpB,+BAA+BA,CAAQ,GAGzC,GAGIf,EAAkBgB,GAAuB,CACpD,IAAIC,EAASD,GAAQ,YACrB,OAAKC,IACHA,EAAS,QAEPA,IAAW,QACbA,EAAS,IAEJA,CACT,EAEA,IAAOnB,EAAQD",
4
+ "sourcesContent": ["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { FilterType } from '../components/_filters/filter-input/enum'\nimport { components } from '../types/api'\nimport { DprConfig } from '../types/DprConfig'\n\nexport const clearFilterValue = '~clear~'\n\nexport const createUrlForParameters = (\n currentQueryParams: NodeJS.Dict<string | Array<string>>,\n updateQueryParams: NodeJS.Dict<string>,\n fields?: components['schemas']['FieldDefinition'][],\n) => {\n let queryParams: NodeJS.Dict<string | Array<string>>\n\n if (updateQueryParams) {\n queryParams = {\n ...currentQueryParams,\n selectedPage: '1',\n }\n\n Object.keys(updateQueryParams).forEach((q) => {\n if (updateQueryParams[q]) {\n queryParams[q] = updateQueryParams[q]\n } else {\n Object.keys(queryParams)\n .filter((key) => key === q || key.startsWith(`${q}.`))\n .forEach((key) => {\n queryParams[key] = clearFilterValue\n })\n }\n })\n } else {\n queryParams = {\n selectedPage: '1',\n pageSize: currentQueryParams['pageSize'],\n sortColumn: currentQueryParams['sortColumn'],\n sortedAsc: currentQueryParams['sortedAsc'],\n dataProductDefinitionsPath: currentQueryParams['dataProductDefinitionsPath'],\n }\n }\n\n const nonEmptyQueryParams: NodeJS.Dict<string | Array<string>> = {}\n\n Object.keys(queryParams)\n .filter((key) => queryParams[key])\n .forEach((key) => {\n nonEmptyQueryParams[key] = queryParams[key]\n })\n\n return createQuerystringFromObject(nonEmptyQueryParams, fields)\n}\n\nexport const createQuerystringFromObject = (\n source: NodeJS.Dict<string | Array<string>>,\n fields?: components['schemas']['FieldDefinition'][],\n) => {\n const querystring = Object.keys(source)\n .flatMap((key: string) => {\n const fieldDef = fields?.find((f) => `filters.${f.name}` === key)\n const value = source[key] || ''\n\n if (Array.isArray(value)) {\n return value.map((v) => `${encodeURI(key)}=${encodeURI(v)}`)\n }\n\n if (fieldDef && fieldDef.filter && fieldDef.filter.type.toLowerCase() === FilterType.multiselect.toLowerCase()) {\n const values = value.split(',')\n return values.map((v) => {\n return `${encodeURI(key)}=${encodeURI(v)}`\n })\n }\n\n return [`${encodeURI(key)}=${encodeURI(value)}`]\n })\n .join('&')\n\n return `?${querystring}`\n}\n\nexport const getDpdPathSuffix = (dpdsPath: string) => {\n if (dpdsPath && dpdsPath !== '') {\n return `?dataProductDefinitionsPath=${dpdsPath}`\n }\n\n return ''\n}\n\nexport const getRoutePrefix = (config?: DprConfig) => {\n let prefix = config?.routePrefix\n if (!prefix) {\n prefix = '/dpr'\n }\n if (prefix === 'dpr') {\n prefix = ''\n }\n return prefix\n}\n\nexport default createUrlForParameters\n"],
5
+ "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,sBAAAE,EAAA,gCAAAC,EAAA,2BAAAC,EAAA,YAAAC,EAAA,qBAAAC,EAAA,mBAAAC,IAAA,eAAAC,EAAAR,GACA,IAAAS,EAA2B,oDAIpB,MAAMP,EAAmB,UAEnBE,EAAyB,CACpCM,EACAC,EACAC,IACG,CACH,IAAIC,EAEAF,GACFE,EAAc,CACZ,GAAGH,EACH,aAAc,GAChB,EAEA,OAAO,KAAKC,CAAiB,EAAE,QAASG,GAAM,CACxCH,EAAkBG,CAAC,EACrBD,EAAYC,CAAC,EAAIH,EAAkBG,CAAC,EAEpC,OAAO,KAAKD,CAAW,EACpB,OAAQE,GAAQA,IAAQD,GAAKC,EAAI,WAAW,GAAGD,CAAC,GAAG,CAAC,EACpD,QAASC,GAAQ,CAChBF,EAAYE,CAAG,EAAIb,CACrB,CAAC,CAEP,CAAC,GAEDW,EAAc,CACZ,aAAc,IACd,SAAUH,EAAmB,SAC7B,WAAYA,EAAmB,WAC/B,UAAWA,EAAmB,UAC9B,2BAA4BA,EAAmB,0BACjD,EAGF,MAAMM,EAA2D,CAAC,EAElE,cAAO,KAAKH,CAAW,EACpB,OAAQE,GAAQF,EAAYE,CAAG,CAAC,EAChC,QAASA,GAAQ,CAChBC,EAAoBD,CAAG,EAAIF,EAAYE,CAAG,CAC5C,CAAC,EAEIZ,EAA4Ba,EAAqBJ,CAAM,CAChE,EAEaT,EAA8B,CACzCc,EACAL,IAsBO,IApBa,OAAO,KAAKK,CAAM,EACnC,QAASF,GAAgB,CACxB,MAAMG,EAAWN,GAAQ,KAAMO,GAAM,WAAWA,EAAE,IAAI,KAAOJ,CAAG,EAC1DK,EAAQH,EAAOF,CAAG,GAAK,GAE7B,OAAI,MAAM,QAAQK,CAAK,EACdA,EAAM,IAAKC,GAAM,GAAG,UAAUN,CAAG,CAAC,IAAI,UAAUM,CAAC,CAAC,EAAE,EAGzDH,GAAYA,EAAS,QAAUA,EAAS,OAAO,KAAK,YAAY,IAAM,aAAW,YAAY,YAAY,EAC5FE,EAAM,MAAM,GAAG,EAChB,IAAKC,GACV,GAAG,UAAUN,CAAG,CAAC,IAAI,UAAUM,CAAC,CAAC,EACzC,EAGI,CAAC,GAAG,UAAUN,CAAG,CAAC,IAAI,UAAUK,CAAK,CAAC,EAAE,CACjD,CAAC,EACA,KAAK,GAAG,CAEW,GAGXd,EAAoBgB,GAC3BA,GAAYA,IAAa,GACpB,+BAA+BA,CAAQ,GAGzC,GAGIf,EAAkBgB,GAAuB,CACpD,IAAIC,EAASD,GAAQ,YACrB,OAAKC,IACHA,EAAS,QAEPA,IAAW,QACbA,EAAS,IAEJA,CACT,EAEA,IAAOnB,EAAQD",
6
6
  "names": ["urlHelper_exports", "__export", "clearFilterValue", "createQuerystringFromObject", "createUrlForParameters", "urlHelper_default", "getDpdPathSuffix", "getRoutePrefix", "__toCommonJS", "import_enum", "currentQueryParams", "updateQueryParams", "fields", "queryParams", "q", "key", "nonEmptyQueryParams", "source", "fieldDef", "f", "value", "v", "dpdsPath", "config", "prefix"]
7
7
  }
@@ -32,10 +32,10 @@ export const createUrlForParameters = (
32
32
  } else {
33
33
  queryParams = {
34
34
  selectedPage: '1',
35
- pageSize: currentQueryParams.pageSize,
36
- sortColumn: currentQueryParams.sortColumn,
37
- sortedAsc: currentQueryParams.sortedAsc,
38
- dataProductDefinitionsPath: currentQueryParams.dataProductDefinitionsPath,
35
+ pageSize: currentQueryParams['pageSize'],
36
+ sortColumn: currentQueryParams['sortColumn'],
37
+ sortedAsc: currentQueryParams['sortedAsc'],
38
+ dataProductDefinitionsPath: currentQueryParams['dataProductDefinitionsPath'],
39
39
  }
40
40
  }
41
41
 
@@ -1,2 +1,2 @@
1
- var d=Object.create;var n=Object.defineProperty;var u=Object.getOwnPropertyDescriptor;var R=Object.getOwnPropertyNames;var m=Object.getPrototypeOf,p=Object.prototype.hasOwnProperty;var g=(r,e)=>{for(var t in e)n(r,t,{get:e[t],enumerable:!0})},i=(r,e,t,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of R(e))!p.call(r,s)&&s!==t&&n(r,s,{get:()=>e[s],enumerable:!(o=u(e,s))||o.enumerable});return r};var b=(r,e,t)=>(t=r!=null?d(m(r)):{},i(e||!r||!r.__esModule?n(t,"default",{value:r,enumerable:!0}):t,r)),y=r=>i(n({},"__esModule",{value:!0}),r);var O={};g(O,{validate:()=>E});module.exports=y(O);var a=b(require("zod"));const E=r=>(e,t,o)=>{const s=r.safeParse(e.body);if(s.success)return o();const f=Object.entries(a.default.flattenError(s.error).fieldErrors).map(([l,c])=>({href:`#${l}`,text:c[0]}));return e.flash("DPR_ERRORS",JSON.stringify(f)),t.redirect(`${e.baseUrl}#`)};0&&(module.exports={validate});
1
+ "use strict";var d=Object.create;var n=Object.defineProperty;var u=Object.getOwnPropertyDescriptor;var R=Object.getOwnPropertyNames;var m=Object.getPrototypeOf,p=Object.prototype.hasOwnProperty;var y=(r,e)=>{for(var t in e)n(r,t,{get:e[t],enumerable:!0})},i=(r,e,t,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of R(e))!p.call(r,s)&&s!==t&&n(r,s,{get:()=>e[s],enumerable:!(o=u(e,s))||o.enumerable});return r};var b=(r,e,t)=>(t=r!=null?d(m(r)):{},i(e||!r||!r.__esModule?n(t,"default",{value:r,enumerable:!0}):t,r)),E=r=>i(n({},"__esModule",{value:!0}),r);var g={};y(g,{validate:()=>O});module.exports=E(g);var f=b(require("zod"));const O=r=>(e,t,o)=>{const s=r.safeParse(e.body);if(s.success)return o();const l=Object.entries(f.default.flattenError(s.error).fieldErrors).map(([c,a])=>({href:`#${c}`,text:Array.isArray(a)?a[0]:a}));return e.flash("DPR_ERRORS",JSON.stringify(l)),t.redirect(`${e.baseUrl}#`)};0&&(module.exports={validate});
2
2
  //# sourceMappingURL=validate.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/dpr/validation/validate.ts"],
4
- "sourcesContent": ["import { RequestHandler } from 'express'\nimport z from 'zod'\n\nexport const validate =\n (schema: z.ZodType): RequestHandler =>\n (req, res, next) => {\n const result = schema.safeParse(req.body)\n if (result.success) {\n return next()\n }\n\n const errors = Object.entries(z.flattenError(result.error).fieldErrors).map(\n ([fieldName, err]: [string, string | string[]]) => ({\n href: `#${fieldName}`,\n text: err[0],\n }),\n )\n req.flash(`DPR_ERRORS`, JSON.stringify(errors))\n return res.redirect(`${req.baseUrl}#`)\n }\n"],
5
- "mappings": "6iBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,cAAAE,IAAA,eAAAC,EAAAH,GACA,IAAAI,EAAc,kBAEP,MAAMF,EACVG,GACD,CAACC,EAAKC,EAAKC,IAAS,CAClB,MAAMC,EAASJ,EAAO,UAAUC,EAAI,IAAI,EACxC,GAAIG,EAAO,QACT,OAAOD,EAAK,EAGd,MAAME,EAAS,OAAO,QAAQ,EAAAC,QAAE,aAAaF,EAAO,KAAK,EAAE,WAAW,EAAE,IACtE,CAAC,CAACG,EAAWC,CAAG,KAAoC,CAClD,KAAM,IAAID,CAAS,GACnB,KAAMC,EAAI,CAAC,CACb,EACF,EACA,OAAAP,EAAI,MAAM,aAAc,KAAK,UAAUI,CAAM,CAAC,EACvCH,EAAI,SAAS,GAAGD,EAAI,OAAO,GAAG,CACvC",
4
+ "sourcesContent": ["import { RequestHandler } from 'express'\nimport z from 'zod'\n\nexport const validate =\n (schema: z.ZodType): RequestHandler =>\n (req, res, next) => {\n const result = schema.safeParse(req.body)\n if (result.success) {\n return next()\n }\n\n const errors = Object.entries(z.flattenError(result.error).fieldErrors).map(\n ([fieldName, err]: [string, unknown]) => ({\n href: `#${fieldName}`,\n text: Array.isArray(err) ? err[0] : err,\n }),\n )\n req.flash(`DPR_ERRORS`, JSON.stringify(errors))\n return res.redirect(`${req.baseUrl}#`)\n }\n"],
5
+ "mappings": "0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,cAAAE,IAAA,eAAAC,EAAAH,GACA,IAAAI,EAAc,kBAEP,MAAMF,EACVG,GACD,CAACC,EAAKC,EAAKC,IAAS,CAClB,MAAMC,EAASJ,EAAO,UAAUC,EAAI,IAAI,EACxC,GAAIG,EAAO,QACT,OAAOD,EAAK,EAGd,MAAME,EAAS,OAAO,QAAQ,EAAAC,QAAE,aAAaF,EAAO,KAAK,EAAE,WAAW,EAAE,IACtE,CAAC,CAACG,EAAWC,CAAG,KAA0B,CACxC,KAAM,IAAID,CAAS,GACnB,KAAM,MAAM,QAAQC,CAAG,EAAIA,EAAI,CAAC,EAAIA,CACtC,EACF,EACA,OAAAP,EAAI,MAAM,aAAc,KAAK,UAAUI,CAAM,CAAC,EACvCH,EAAI,SAAS,GAAGD,EAAI,OAAO,GAAG,CACvC",
6
6
  "names": ["validate_exports", "__export", "validate", "__toCommonJS", "import_zod", "schema", "req", "res", "next", "result", "errors", "z", "fieldName", "err"]
7
7
  }
@@ -10,9 +10,9 @@ export const validate =
10
10
  }
11
11
 
12
12
  const errors = Object.entries(z.flattenError(result.error).fieldErrors).map(
13
- ([fieldName, err]: [string, string | string[]]) => ({
13
+ ([fieldName, err]: [string, unknown]) => ({
14
14
  href: `#${fieldName}`,
15
- text: err[0],
15
+ text: Array.isArray(err) ? err[0] : err,
16
16
  }),
17
17
  )
18
18
  req.flash(`DPR_ERRORS`, JSON.stringify(errors))
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@ministryofjustice/hmpps-digital-prison-reporting-frontend",
3
3
  "description": "The Digital Prison Reporting Frontend contains templates and code to help display data effectively in UI applications.",
4
- "version": "4.17.4",
4
+ "version": "4.17.5",
5
5
  "main": "dpr/all.mjs",
6
6
  "sass": "dpr/all.scss",
7
7
  "engines": {
@@ -64,7 +64,8 @@
64
64
  "lint:fix": "./node_modules/.bin/eslint . --fix",
65
65
  "axe_tests": "axe --exit --save axe_results.json $npm_package_config_home_url, $npm_package_config_request_url, $npm_package_config_polling_url, $npm_package_config_report_url",
66
66
  "accessibility_tests": "npm run axe_tests && npm run pa11y_tests",
67
- "generate-api-types": "openapi-typescript https://digital-prison-reporting-mi-dev.hmpps.service.justice.gov.uk/v3/api-docs --output src/dpr/types/api.d.ts && npm run lint:fix"
67
+ "generate-api-types": "openapi-typescript https://digital-prison-reporting-mi-dev.hmpps.service.justice.gov.uk/v3/api-docs --output src/dpr/types/api.d.ts && npm run lint:fix",
68
+ "typecheck": "tsc"
68
69
  },
69
70
  "jest": {
70
71
  "transform": {
@@ -172,6 +173,7 @@
172
173
  "@axe-core/cli": "^4.10.0",
173
174
  "@badeball/cypress-cucumber-preprocessor": "^22.2.0",
174
175
  "@bahmutov/cypress-esbuild-preprocessor": "^2.2.5",
176
+ "@jest/globals": "^30.2.0",
175
177
  "@semantic-release/git": "^10.0.1",
176
178
  "@semantic-release/npm": "^11.0.0",
177
179
  "@testing-library/cypress": "^10.0.3",
@@ -1,2 +0,0 @@
1
- var o=Object.defineProperty;var E=Object.getOwnPropertyDescriptor;var i=Object.getOwnPropertyNames;var g=Object.prototype.hasOwnProperty;var D=(r,e)=>{for(var s in e)o(r,s,{get:e[s],enumerable:!0})},u=(r,e,s,a)=>{if(e&&typeof e=="object"||typeof e=="function")for(let t of i(e))!g.call(r,t)&&t!==s&&o(r,t,{get:()=>e[t],enumerable:!(a=E(e,t))||a.enumerable});return r};var d=r=>u(o({},"__esModule",{value:!0}),r);var l={};D(l,{default:()=>f,handleError:()=>p});module.exports=d(l);const p=(r,e)=>{const s=n(r);return c(s,e)},c=(r,e)=>{const s=n(r);let a="FAILED",t;return s.userMessage.includes("TypeError:")&&(t="There is an issue in the client. This has been reported to admin staff"),s.userMessage.includes("The stored report or dashboard was not found.")&&(a="EXPIRED",t=`This ${e} has expired`),{status:a,developerMessage:s.developerMessage,userMessage:t||s.userMessage}},n=r=>{if(r&&r.data)return r.data;if(r&&r.message){const e=r;return{status:500,userMessage:`${e.name}: ${e.message}`,developerMessage:e.stack}}return r};var f={handleError:p};0&&(module.exports={handleError});
2
- //# sourceMappingURL=utils.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../../src/dpr/components/error-summary/utils.ts"],
4
- "sourcesContent": ["export const handleError = (error: DprError | DprErrorData | Error, reportType?: string) => {\n const dprError: DprError = formatError(error)\n return mapError(dprError, reportType)\n}\n\nconst mapError = (error: DprError | DprErrorData | Error, reportType?: string): DprUIError => {\n const dprError: DprError = formatError(error)\n\n let status = 'FAILED'\n let message\n\n if (dprError.userMessage.includes('TypeError:')) {\n message = 'There is an issue in the client. This has been reported to admin staff'\n }\n\n if (dprError.userMessage.includes('The stored report or dashboard was not found.')) {\n status = 'EXPIRED'\n message = `This ${reportType} has expired`\n }\n\n return {\n status,\n developerMessage: dprError.developerMessage,\n userMessage: message || dprError.userMessage,\n }\n}\n\nconst formatError = (error: DprError | DprErrorData | Error) => {\n if (error && (<DprErrorData>error).data) {\n return (<DprErrorData>error).data\n }\n\n if (error && (<Error>error).message) {\n const e: Error = error as Error\n return {\n status: 500,\n userMessage: `${e.name}: ${e.message}`,\n developerMessage: e.stack,\n }\n }\n\n return error as DprError\n}\n\nexport interface DprErrorData {\n data: DprError\n}\n\nexport interface DprError {\n status: number | string\n errorCode?: number\n userMessage: string\n developerMessage?: string\n moreInfo?: string\n}\n\ninterface DprUIError {\n status: string\n userMessage: string\n developerMessage?: string\n}\n\nexport default {\n handleError,\n}\n"],
5
- "mappings": "4ZAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,aAAAE,EAAA,gBAAAC,IAAA,eAAAC,EAAAJ,GAAO,MAAMG,EAAc,CAACE,EAAwCC,IAAwB,CAC1F,MAAMC,EAAqBC,EAAYH,CAAK,EAC5C,OAAOI,EAASF,EAAUD,CAAU,CACtC,EAEMG,EAAW,CAACJ,EAAwCC,IAAoC,CAC5F,MAAMC,EAAqBC,EAAYH,CAAK,EAE5C,IAAIK,EAAS,SACTC,EAEJ,OAAIJ,EAAS,YAAY,SAAS,YAAY,IAC5CI,EAAU,0EAGRJ,EAAS,YAAY,SAAS,+CAA+C,IAC/EG,EAAS,UACTC,EAAU,QAAQL,CAAU,gBAGvB,CACL,OAAAI,EACA,iBAAkBH,EAAS,iBAC3B,YAAaI,GAAWJ,EAAS,WACnC,CACF,EAEMC,EAAeH,GAA2C,CAC9D,GAAIA,GAAwBA,EAAO,KACjC,OAAsBA,EAAO,KAG/B,GAAIA,GAAiBA,EAAO,QAAS,CACnC,MAAM,EAAWA,EACjB,MAAO,CACL,OAAQ,IACR,YAAa,GAAG,EAAE,IAAI,KAAK,EAAE,OAAO,GACpC,iBAAkB,EAAE,KACtB,CACF,CAEA,OAAOA,CACT,EAoBA,IAAOH,EAAQ,CACb,YAAAC,CACF",
6
- "names": ["utils_exports", "__export", "utils_default", "handleError", "__toCommonJS", "error", "reportType", "dprError", "formatError", "mapError", "status", "message"]
7
- }
@@ -1,54 +0,0 @@
1
- import ErrorSummaryUtils, { DprError, DprErrorData } from './utils'
2
-
3
- describe('ErrorSummaryUtils', () => {
4
- describe('handleError', () => {
5
- let dprError: DprError
6
- let dprErrorData: DprErrorData
7
- let error: Error
8
-
9
- beforeEach(() => {
10
- dprError = {
11
- status: 404,
12
- errorCode: 404,
13
- userMessage: 'TypeError:',
14
- developerMessage: 'stack trace',
15
- }
16
-
17
- dprErrorData = {
18
- data: dprError,
19
- }
20
-
21
- error = {
22
- name: 'TypeError',
23
- message: 'error message',
24
- stack: 'stack',
25
- }
26
- })
27
-
28
- it('should handle a dpr error and map it to friendly message', () => {
29
- const mappedError = ErrorSummaryUtils.handleError(dprError)
30
-
31
- expect(mappedError.userMessage).toEqual('There is an issue in the client. This has been reported to admin staff')
32
- })
33
-
34
- it('should handle a dpr data error and map it to friendly message', () => {
35
- const mappedError = ErrorSummaryUtils.handleError(dprErrorData)
36
-
37
- expect(mappedError.userMessage).toEqual('There is an issue in the client. This has been reported to admin staff')
38
- })
39
-
40
- it('should handle a generic data and map it to friendly message', () => {
41
- const mappedError = ErrorSummaryUtils.handleError(error)
42
-
43
- expect(mappedError.userMessage).toEqual('There is an issue in the client. This has been reported to admin staff')
44
- })
45
-
46
- it('should handle a dpr error and map it to an expired message', () => {
47
- dprError.userMessage = 'The stored report or dashboard was not found.'
48
- const mappedError = ErrorSummaryUtils.handleError(dprError, 'report')
49
-
50
- expect(mappedError.userMessage).toEqual('This report has expired')
51
- expect(mappedError.status).toEqual('EXPIRED')
52
- })
53
- })
54
- })
@@ -1,65 +0,0 @@
1
- export const handleError = (error: DprError | DprErrorData | Error, reportType?: string) => {
2
- const dprError: DprError = formatError(error)
3
- return mapError(dprError, reportType)
4
- }
5
-
6
- const mapError = (error: DprError | DprErrorData | Error, reportType?: string): DprUIError => {
7
- const dprError: DprError = formatError(error)
8
-
9
- let status = 'FAILED'
10
- let message
11
-
12
- if (dprError.userMessage.includes('TypeError:')) {
13
- message = 'There is an issue in the client. This has been reported to admin staff'
14
- }
15
-
16
- if (dprError.userMessage.includes('The stored report or dashboard was not found.')) {
17
- status = 'EXPIRED'
18
- message = `This ${reportType} has expired`
19
- }
20
-
21
- return {
22
- status,
23
- developerMessage: dprError.developerMessage,
24
- userMessage: message || dprError.userMessage,
25
- }
26
- }
27
-
28
- const formatError = (error: DprError | DprErrorData | Error) => {
29
- if (error && (<DprErrorData>error).data) {
30
- return (<DprErrorData>error).data
31
- }
32
-
33
- if (error && (<Error>error).message) {
34
- const e: Error = error as Error
35
- return {
36
- status: 500,
37
- userMessage: `${e.name}: ${e.message}`,
38
- developerMessage: e.stack,
39
- }
40
- }
41
-
42
- return error as DprError
43
- }
44
-
45
- export interface DprErrorData {
46
- data: DprError
47
- }
48
-
49
- export interface DprError {
50
- status: number | string
51
- errorCode?: number
52
- userMessage: string
53
- developerMessage?: string
54
- moreInfo?: string
55
- }
56
-
57
- interface DprUIError {
58
- status: string
59
- userMessage: string
60
- developerMessage?: string
61
- }
62
-
63
- export default {
64
- handleError,
65
- }
@@ -1,2 +0,0 @@
1
- var g=Object.create;var r=Object.defineProperty;var l=Object.getOwnPropertyDescriptor;var C=Object.getOwnPropertyNames;var a=Object.getPrototypeOf,c=Object.prototype.hasOwnProperty;var f=(t,i)=>{for(var s in i)r(t,s,{get:i[s],enumerable:!0})},p=(t,i,s,n)=>{if(i&&typeof i=="object"||typeof i=="function")for(let e of C(i))!c.call(t,e)&&e!==s&&r(t,e,{get:()=>i[e],enumerable:!(n=l(i,e))||n.enumerable});return t};var u=(t,i,s)=>(s=t!=null?g(a(t)):{},p(i||!t||!t.__esModule?r(s,"default",{value:t,enumerable:!0}):s,t)),R=t=>p(r({},"__esModule",{value:!0}),t);var M={};f(M,{MissingReportClient:()=>o,default:()=>h});module.exports=R(M);var m=u(require("../../data/restClient"));class o{constructor(i){this.restClient=new m.default("Missing report API Client",i)}submitMissingReportEntry(i,s,n,e){return this.restClient.post({path:`/missingRequest/${s}/${n}`,data:e},i)}}var h=o;0&&(module.exports={MissingReportClient});
2
- //# sourceMappingURL=missingReportClient.js.map