@ministryofjustice/hmpps-digital-prison-reporting-frontend 4.28.0 → 4.28.2

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 (351) hide show
  1. package/dpr/DprClientClass.js +43 -0
  2. package/dpr/DprClientClass.js.map +7 -0
  3. package/dpr/{DprClientClass.mjs → DprClientClass.ts} +1 -0
  4. package/dpr/DprFormValidationClass.js +157 -0
  5. package/dpr/DprFormValidationClass.js.map +7 -0
  6. package/dpr/{DprFormValidationClass.mjs → DprFormValidationClass.ts} +2 -1
  7. package/dpr/DprGenericFormClass.js +66 -0
  8. package/dpr/DprGenericFormClass.js.map +7 -0
  9. package/dpr/{DprGenericFormClass.mjs → DprGenericFormClass.ts} +2 -1
  10. package/dpr/DprLoadingHelper.js +51 -0
  11. package/dpr/DprLoadingHelper.js.map +7 -0
  12. package/dpr/{DprLoadingHelper.mjs → DprLoadingHelper.ts} +1 -0
  13. package/dpr/DprPollingStatusClass.js +79 -0
  14. package/dpr/DprPollingStatusClass.js.map +7 -0
  15. package/dpr/{DprPollingStatusClass.mjs → DprPollingStatusClass.ts} +2 -1
  16. package/dpr/DprQueryParamClass.js +231 -0
  17. package/dpr/DprQueryParamClass.js.map +7 -0
  18. package/dpr/{DprQueryParamClass.mjs → DprQueryParamClass.ts} +2 -1
  19. package/dpr/DprSyncLoading.js +44 -0
  20. package/dpr/DprSyncLoading.js.map +7 -0
  21. package/dpr/{DprSyncLoading.mjs → DprSyncLoading.ts} +2 -1
  22. package/dpr/all.js +111 -0
  23. package/dpr/all.js.map +7 -0
  24. package/dpr/{all.mjs → all.ts} +29 -28
  25. package/dpr/assets/app.js +1 -1
  26. package/dpr/assets/app.js.map +2 -2
  27. package/dpr/components/_async/async-filters-form/clientClass.js +76 -0
  28. package/dpr/components/_async/async-filters-form/clientClass.js.map +7 -0
  29. package/dpr/components/_async/async-filters-form/{clientClass.mjs → clientClass.ts} +3 -2
  30. package/dpr/components/_async/async-filters-form/sortByTemplate.js.map +1 -1
  31. package/dpr/components/_async/async-filters-form/types.d.js.map +1 -1
  32. package/dpr/components/_async/async-filters-form/utils.js.map +1 -1
  33. package/dpr/components/_async/async-polling/clientClass.js +78 -0
  34. package/dpr/components/_async/async-polling/clientClass.js.map +7 -0
  35. package/dpr/components/_async/async-polling/{clientClass.mjs → clientClass.ts} +2 -1
  36. package/dpr/components/_catalogue/catalogue/types.js.map +1 -1
  37. package/dpr/components/_catalogue/catalogue/utils.js.map +1 -1
  38. package/dpr/components/_catalogue/catalogue-filter-by-type/clientClass.js +94 -0
  39. package/dpr/components/_catalogue/catalogue-filter-by-type/clientClass.js.map +7 -0
  40. package/dpr/components/_catalogue/catalogue-filter-by-type/{clientClass.mjs → clientClass.ts} +2 -1
  41. package/dpr/components/_catalogue/catalogue-filters/clientClass.js +70 -0
  42. package/dpr/components/_catalogue/catalogue-filters/clientClass.js.map +7 -0
  43. package/dpr/components/_catalogue/catalogue-filters/{clientClass.mjs → clientClass.ts} +2 -1
  44. package/dpr/components/_catalogue/catalogue-list/utils.js.map +1 -1
  45. package/dpr/components/_catalogue/catalogue-search/clientClass.js +106 -0
  46. package/dpr/components/_catalogue/catalogue-search/clientClass.js.map +7 -0
  47. package/dpr/components/_catalogue/catalogue-search/{clientClass.mjs → clientClass.ts} +3 -2
  48. package/dpr/components/_catalogue/catalogue-unauthorised-toggle/clientClass.js +135 -0
  49. package/dpr/components/_catalogue/catalogue-unauthorised-toggle/clientClass.js.map +7 -0
  50. package/dpr/components/_catalogue/catalogue-unauthorised-toggle/{clientClass.mjs → clientClass.ts} +2 -1
  51. package/dpr/components/_charts/chart/Chart.js.map +1 -1
  52. package/dpr/components/_charts/chart/ChartColours.js.map +1 -1
  53. package/dpr/components/_charts/chart/ChartTimeseries.js.map +1 -1
  54. package/dpr/components/_charts/chart/bar/BarChart.js.map +1 -1
  55. package/dpr/components/_charts/chart/bar/clientClass.js +98 -0
  56. package/dpr/components/_charts/chart/bar/clientClass.js.map +7 -0
  57. package/dpr/components/_charts/chart/bar/{clientClass.mjs → clientClass.ts} +2 -1
  58. package/dpr/components/_charts/chart/bar/types.js.map +1 -1
  59. package/dpr/components/_charts/chart/bar/validate.js.map +1 -1
  60. package/dpr/components/_charts/chart/bar-timeseries/BarTimeseriesChart.js.map +1 -1
  61. package/dpr/components/_charts/chart/bar-timeseries/types.js.map +1 -1
  62. package/dpr/components/_charts/chart/bar-timeseries/validate.js.map +1 -1
  63. package/dpr/components/_charts/chart/buckets/Buckets.js.map +1 -1
  64. package/dpr/components/_charts/chart/buckets/types.js.map +1 -1
  65. package/dpr/components/_charts/chart/buckets/validate.js.map +1 -1
  66. package/dpr/components/_charts/chart/chart-config.js.map +1 -1
  67. package/dpr/components/_charts/chart/clientClass.js +136 -0
  68. package/dpr/components/_charts/chart/clientClass.js.map +7 -0
  69. package/dpr/components/_charts/chart/{clientClass.mjs → clientClass.ts} +2 -1
  70. package/dpr/components/_charts/chart/doughnut/DoughnutChart.js.map +1 -1
  71. package/dpr/components/_charts/chart/doughnut/clientClass.js +170 -0
  72. package/dpr/components/_charts/chart/doughnut/clientClass.js.map +7 -0
  73. package/dpr/components/_charts/chart/doughnut/{clientClass.mjs → clientClass.ts} +2 -1
  74. package/dpr/components/_charts/chart/doughnut/types.js.map +1 -1
  75. package/dpr/components/_charts/chart/doughnut/validate.js.map +1 -1
  76. package/dpr/components/_charts/chart/heatmap/HeatmapChart.js.map +1 -1
  77. package/dpr/components/_charts/chart/heatmap/clientClass.js +118 -0
  78. package/dpr/components/_charts/chart/heatmap/clientClass.js.map +7 -0
  79. package/dpr/components/_charts/chart/heatmap/{clientClass.mjs → clientClass.ts} +2 -1
  80. package/dpr/components/_charts/chart/heatmap/types.js.map +1 -1
  81. package/dpr/components/_charts/chart/heatmap/validate.js.map +1 -1
  82. package/dpr/components/_charts/chart/line/LineChart.js.map +1 -1
  83. package/dpr/components/_charts/chart/line/clientClass.js +93 -0
  84. package/dpr/components/_charts/chart/line/clientClass.js.map +7 -0
  85. package/dpr/components/_charts/chart/line/{clientClass.mjs → clientClass.ts} +2 -1
  86. package/dpr/components/_charts/chart/line/types.js.map +1 -1
  87. package/dpr/components/_charts/chart/line/validate.js.map +1 -1
  88. package/dpr/components/_charts/chart/line-timeseries/LineTimeseriesChart.js.map +1 -1
  89. package/dpr/components/_charts/chart/line-timeseries/types.js.map +1 -1
  90. package/dpr/components/_charts/chart/line-timeseries/validate.js.map +1 -1
  91. package/dpr/components/_charts/utils.js.map +1 -1
  92. package/dpr/components/_dashboards/dashboard-list/types.js.map +1 -1
  93. package/dpr/components/_dashboards/dashboard-list/utils.js.map +1 -1
  94. package/dpr/components/_dashboards/dashboard-list/validate.js.map +1 -1
  95. package/dpr/components/_dashboards/dashboard-visualisation/Validate.js.map +1 -1
  96. package/dpr/components/_dashboards/dashboard-visualisation/types.js.map +1 -1
  97. package/dpr/components/_dashboards/scorecard/Scorecard.js.map +1 -1
  98. package/dpr/components/_dashboards/scorecard/clientClass.js +50 -0
  99. package/dpr/components/_dashboards/scorecard/clientClass.js.map +7 -0
  100. package/dpr/components/_dashboards/scorecard/{clientClass.mjs → clientClass.ts} +2 -1
  101. package/dpr/components/_dashboards/scorecard/types.js.map +1 -1
  102. package/dpr/components/_dashboards/scorecard/utils.js.map +1 -1
  103. package/dpr/components/_dashboards/scorecard/validate.js.map +1 -1
  104. package/dpr/components/_dashboards/scorecard-group/ScorecardGroup.js.map +1 -1
  105. package/dpr/components/_dashboards/scorecard-group/types.js.map +1 -1
  106. package/dpr/components/_dashboards/scorecard-group/validate.js.map +1 -1
  107. package/dpr/components/_filters/filter-input/enum.js.map +1 -1
  108. package/dpr/components/_filters/filter-input/filters.js.map +1 -1
  109. package/dpr/components/_filters/filter-input/types.d.js.map +1 -1
  110. package/dpr/components/_filters/filters-form/clientClass.js +104 -0
  111. package/dpr/components/_filters/filters-form/clientClass.js.map +7 -0
  112. package/dpr/components/_filters/filters-form/{clientClass.mjs → clientClass.ts} +2 -1
  113. package/dpr/components/_filters/filters-interactive/clientClass.js +55 -0
  114. package/dpr/components/_filters/filters-interactive/clientClass.js.map +7 -0
  115. package/dpr/components/_filters/filters-interactive/{clientClass.mjs → clientClass.ts} +2 -1
  116. package/dpr/components/_filters/filters-selected/clientClass.js +396 -0
  117. package/dpr/components/_filters/filters-selected/clientClass.js.map +7 -0
  118. package/dpr/components/_filters/filters-selected/{clientClass.mjs → clientClass.ts} +7 -7
  119. package/dpr/components/_filters/filters-selected/utils.js.map +1 -1
  120. package/dpr/components/_filters/filtersTypeEnum.js.map +1 -1
  121. package/dpr/components/_filters/types.d.js.map +1 -1
  122. package/dpr/components/_filters/utils.js.map +1 -1
  123. package/dpr/components/_inputs/autocomplete-text-input/clientClass.js +153 -0
  124. package/dpr/components/_inputs/autocomplete-text-input/clientClass.js.map +7 -0
  125. package/dpr/components/_inputs/autocomplete-text-input/{clientClass.mjs → clientClass.ts} +2 -1
  126. package/dpr/components/_inputs/autocomplete-text-input/utils.js.map +1 -1
  127. package/dpr/components/_inputs/date-input/clientClass.js +109 -0
  128. package/dpr/components/_inputs/date-input/clientClass.js.map +7 -0
  129. package/dpr/components/_inputs/date-input/{clientClass.mjs → clientClass.ts} +2 -1
  130. package/dpr/components/_inputs/date-input/utils.js.map +1 -1
  131. package/dpr/components/_inputs/date-range/clientClass.js +206 -0
  132. package/dpr/components/_inputs/date-range/clientClass.js.map +7 -0
  133. package/dpr/components/_inputs/date-range/{clientClass.mjs → clientClass.ts} +2 -1
  134. package/dpr/components/_inputs/date-range/types.js.map +1 -1
  135. package/dpr/components/_inputs/date-range/utils.js.map +1 -1
  136. package/dpr/components/_inputs/granular-date-range/clientClass.js +245 -0
  137. package/dpr/components/_inputs/granular-date-range/clientClass.js.map +7 -0
  138. package/dpr/components/_inputs/granular-date-range/{clientClass.mjs → clientClass.ts} +2 -1
  139. package/dpr/components/_inputs/granular-date-range/types.js.map +1 -1
  140. package/dpr/components/_inputs/granular-date-range/utils.js.map +1 -1
  141. package/dpr/components/_inputs/multi-select/utils.js.map +1 -1
  142. package/dpr/components/_inputs/start-end-date/utils.js.map +1 -1
  143. package/dpr/components/_reports/report-actions/actionsTemplate.js.map +1 -1
  144. package/dpr/components/_reports/report-actions/clientClass.js +103 -0
  145. package/dpr/components/_reports/report-actions/clientClass.js.map +7 -0
  146. package/dpr/components/_reports/report-actions/{clientClass.mjs → clientClass.ts} +2 -1
  147. package/dpr/components/_reports/report-actions/types.d.js.map +1 -1
  148. package/dpr/components/_reports/report-actions/utils.js.map +1 -1
  149. package/dpr/components/_reports/report-columns-form/clientClass.js +76 -0
  150. package/dpr/components/_reports/report-columns-form/clientClass.js.map +7 -0
  151. package/dpr/components/_reports/report-columns-form/{clientClass.mjs → clientClass.ts} +2 -1
  152. package/dpr/components/_reports/report-columns-form/types.d.js.map +1 -1
  153. package/dpr/components/_reports/report-columns-form/utils.js.map +1 -1
  154. package/dpr/components/_reports/report-data-table/clientClass.js +80 -0
  155. package/dpr/components/_reports/report-data-table/clientClass.js.map +7 -0
  156. package/dpr/components/_reports/report-data-table/{clientClass.mjs → clientClass.ts} +2 -1
  157. package/dpr/components/_reports/report-data-table/types.d.js.map +1 -1
  158. package/dpr/components/_reports/report-data-table/utils.js.map +1 -1
  159. package/dpr/components/_reports/report-download-message/clientClass.js +42 -0
  160. package/dpr/components/_reports/report-download-message/clientClass.js.map +7 -0
  161. package/dpr/components/_reports/report-download-message/{clientClass.mjs → clientClass.ts} +2 -1
  162. package/dpr/components/_reports/report-pagination/clientClass.js +61 -0
  163. package/dpr/components/_reports/report-pagination/clientClass.js.map +7 -0
  164. package/dpr/components/_reports/report-pagination/{clientClass.mjs → clientClass.ts} +2 -1
  165. package/dpr/components/_reports/report-pagination/types.d.js.map +1 -1
  166. package/dpr/components/_reports/report-pagination/utils.js.map +1 -1
  167. package/dpr/components/_reports/report-totals/utils.js.map +1 -1
  168. package/dpr/components/_sync/sync-load/view.njk +1 -1
  169. package/dpr/components/bookmark-toggle/clientClass.js +111 -0
  170. package/dpr/components/bookmark-toggle/clientClass.js.map +7 -0
  171. package/dpr/components/bookmark-toggle/{clientClass.mjs → clientClass.ts} +2 -1
  172. package/dpr/components/card-group/clientClass.js +53 -0
  173. package/dpr/components/card-group/clientClass.js.map +7 -0
  174. package/dpr/components/card-group/{clientClass.mjs → clientClass.ts} +2 -1
  175. package/dpr/components/card-group/utils.js.map +1 -1
  176. package/dpr/components/report-list/defaultTokenProvider.js.map +1 -1
  177. package/dpr/components/report-list/types.d.js.map +1 -1
  178. package/dpr/components/report-list/utils.js.map +1 -1
  179. package/dpr/components/show-more/clientClass.js +63 -0
  180. package/dpr/components/show-more/clientClass.js.map +7 -0
  181. package/dpr/components/show-more/{clientClass.mjs → clientClass.ts} +2 -1
  182. package/dpr/components/show-more/utils.js.map +1 -1
  183. package/dpr/components/user-reports/bookmarks/utils.js.map +1 -1
  184. package/dpr/components/user-reports/requested/clientClass.js +132 -0
  185. package/dpr/components/user-reports/requested/clientClass.js.map +7 -0
  186. package/dpr/components/user-reports/requested/{clientClass.mjs → clientClass.ts} +2 -1
  187. package/dpr/components/user-reports/requested/utils.js.map +1 -1
  188. package/dpr/components/user-reports/types.d.js.map +1 -1
  189. package/dpr/components/user-reports/utils.js.map +1 -1
  190. package/dpr/components/user-reports/viewed/clientClass.js +102 -0
  191. package/dpr/components/user-reports/viewed/clientClass.js.map +7 -0
  192. package/dpr/components/user-reports/viewed/{clientClass.mjs → clientClass.ts} +2 -1
  193. package/dpr/components/user-reports/viewed/utils.js.map +1 -1
  194. package/dpr/data/agentConfig.js.map +1 -1
  195. package/dpr/data/dashboardClient.js.map +1 -1
  196. package/dpr/data/dprReportingClient.js.map +1 -1
  197. package/dpr/data/missingReportClient.js.map +1 -1
  198. package/dpr/data/productCollectionClient.js.map +1 -1
  199. package/dpr/data/reportDataStore.js.map +1 -1
  200. package/dpr/data/reportingClient.js.map +1 -1
  201. package/dpr/data/restClient.js.map +1 -1
  202. package/dpr/data/types.d.js.map +1 -1
  203. package/dpr/middleware/reportAuthoriser.js.map +1 -1
  204. package/dpr/middleware/setUpDprResources.js.map +1 -1
  205. package/dpr/middleware/setUpNestedRoute.js.map +1 -1
  206. package/dpr/routes/index.js.map +1 -1
  207. package/dpr/routes/journeys/api-failures.cy.js.map +1 -1
  208. package/dpr/routes/journeys/download-report/controller.js.map +1 -1
  209. package/dpr/routes/journeys/download-report/request-download/form/controller.js.map +1 -1
  210. package/dpr/routes/journeys/download-report/request-download/form/routes.js.map +1 -1
  211. package/dpr/routes/journeys/download-report/request-download/form/submitted/controller.js.map +1 -1
  212. package/dpr/routes/journeys/download-report/request-download/form/submitted/routes.js.map +1 -1
  213. package/dpr/routes/journeys/download-report/request-download/form/submitted/tests.cy.js.map +1 -1
  214. package/dpr/routes/journeys/download-report/request-download/form/tests.cy.js.map +1 -1
  215. package/dpr/routes/journeys/download-report/request-download/routes.js.map +1 -1
  216. package/dpr/routes/journeys/download-report/request-download/service.js.map +1 -1
  217. package/dpr/routes/journeys/download-report/routes.js.map +1 -1
  218. package/dpr/routes/journeys/download-report/tests.cy.js.map +1 -1
  219. package/dpr/routes/journeys/download-report/utils.js.map +1 -1
  220. package/dpr/routes/journeys/my-reports/bookmarks/controller.js.map +1 -1
  221. package/dpr/routes/journeys/my-reports/bookmarks/list/controller.js.map +1 -1
  222. package/dpr/routes/journeys/my-reports/bookmarks/list/routes.js.map +1 -1
  223. package/dpr/routes/journeys/my-reports/bookmarks/list/tests.cy.js.map +1 -1
  224. package/dpr/routes/journeys/my-reports/bookmarks/routes.js.map +1 -1
  225. package/dpr/routes/journeys/my-reports/bookmarks/service.js.map +1 -1
  226. package/dpr/routes/journeys/my-reports/bookmarks/tests.cy.js.map +1 -1
  227. package/dpr/routes/journeys/my-reports/bookmarks/utils.js.map +1 -1
  228. package/dpr/routes/journeys/my-reports/recently-viewed/controller.js.map +1 -1
  229. package/dpr/routes/journeys/my-reports/recently-viewed/list/controller.js.map +1 -1
  230. package/dpr/routes/journeys/my-reports/recently-viewed/list/routes.js.map +1 -1
  231. package/dpr/routes/journeys/my-reports/recently-viewed/list/tests.cy.js.map +1 -1
  232. package/dpr/routes/journeys/my-reports/recently-viewed/routes.js.map +1 -1
  233. package/dpr/routes/journeys/my-reports/recently-viewed/service.js.map +1 -1
  234. package/dpr/routes/journeys/my-reports/requested-reports/controller.js.map +1 -1
  235. package/dpr/routes/journeys/my-reports/requested-reports/list/controller.js.map +1 -1
  236. package/dpr/routes/journeys/my-reports/requested-reports/list/routes.js.map +1 -1
  237. package/dpr/routes/journeys/my-reports/requested-reports/list/tests.cy.js.map +1 -1
  238. package/dpr/routes/journeys/my-reports/requested-reports/routes.js.map +1 -1
  239. package/dpr/routes/journeys/my-reports/requested-reports/service.js.map +1 -1
  240. package/dpr/routes/journeys/my-reports/routes.js.map +1 -1
  241. package/dpr/routes/journeys/product-collection/routes.js.map +1 -1
  242. package/dpr/routes/journeys/product-collection/selected/controller.js.map +1 -1
  243. package/dpr/routes/journeys/product-collection/selected/routes.js.map +1 -1
  244. package/dpr/routes/journeys/product-collection/selected/tests.cy.js.map +1 -1
  245. package/dpr/routes/journeys/product-collection/selected/validation.js.map +1 -1
  246. package/dpr/routes/journeys/request-missing-report/form/controller.js.map +1 -1
  247. package/dpr/routes/journeys/request-missing-report/form/routes.js.map +1 -1
  248. package/dpr/routes/journeys/request-missing-report/form/tests.cy.js.map +1 -1
  249. package/dpr/routes/journeys/request-missing-report/form/validation.js.map +1 -1
  250. package/dpr/routes/journeys/request-missing-report/routes.js.map +1 -1
  251. package/dpr/routes/journeys/request-missing-report/submitted/controller.js.map +1 -1
  252. package/dpr/routes/journeys/request-missing-report/submitted/routes.js.map +1 -1
  253. package/dpr/routes/journeys/request-missing-report/submitted/tests.cy.js.map +1 -1
  254. package/dpr/routes/journeys/request-missing-report/tests.cy.js.map +1 -1
  255. package/dpr/routes/journeys/request-report/controller.js.map +1 -1
  256. package/dpr/routes/journeys/request-report/filters/controller.js.map +1 -1
  257. package/dpr/routes/journeys/request-report/filters/routes.js.map +1 -1
  258. package/dpr/routes/journeys/request-report/filters/tests.cy.js.map +1 -1
  259. package/dpr/routes/journeys/request-report/filters/utils.js.map +1 -1
  260. package/dpr/routes/journeys/request-report/routes.js.map +1 -1
  261. package/dpr/routes/journeys/request-report/status/controller.js.map +1 -1
  262. package/dpr/routes/journeys/request-report/status/routes.js.map +1 -1
  263. package/dpr/routes/journeys/request-report/status/tests.cy.js.map +1 -1
  264. package/dpr/routes/journeys/request-report/status/utils.js.map +1 -1
  265. package/dpr/routes/journeys/request-report/tests.cy.js.map +1 -1
  266. package/dpr/routes/journeys/routes.js.map +1 -1
  267. package/dpr/routes/journeys/view-report/async/controller.js.map +1 -1
  268. package/dpr/routes/journeys/view-report/async/dashboard/controller.js.map +1 -1
  269. package/dpr/routes/journeys/view-report/async/dashboard/routes.js.map +1 -1
  270. package/dpr/routes/journeys/view-report/async/dashboard/tests.cy.js.map +1 -1
  271. package/dpr/routes/journeys/view-report/async/dashboard/utils.js.map +1 -1
  272. package/dpr/routes/journeys/view-report/async/report/controller.js.map +1 -1
  273. package/dpr/routes/journeys/view-report/async/report/report-variants.cy.js.map +1 -1
  274. package/dpr/routes/journeys/view-report/async/report/routes.js.map +1 -1
  275. package/dpr/routes/journeys/view-report/async/report/tests.cy.js.map +1 -1
  276. package/dpr/routes/journeys/view-report/async/report/types.js.map +1 -1
  277. package/dpr/routes/journeys/view-report/async/report/utils.js +2 -2
  278. package/dpr/routes/journeys/view-report/async/report/utils.js.map +3 -3
  279. package/dpr/routes/journeys/view-report/async/report/utils.ts +2 -2
  280. package/dpr/routes/journeys/view-report/async/routes.js.map +1 -1
  281. package/dpr/routes/journeys/view-report/controller.js.map +2 -2
  282. package/dpr/routes/journeys/view-report/controller.ts +1 -1
  283. package/dpr/routes/journeys/view-report/routes.js.map +1 -1
  284. package/dpr/routes/journeys/view-report/sync/dashboard/controller.js.map +1 -1
  285. package/dpr/routes/journeys/view-report/sync/dashboard/routes.js.map +1 -1
  286. package/dpr/routes/journeys/view-report/sync/dashboard/utils.js.map +1 -1
  287. package/dpr/routes/journeys/view-report/sync/load-report/controller.js.map +1 -1
  288. package/dpr/routes/journeys/view-report/sync/load-report/routes.js.map +1 -1
  289. package/dpr/routes/journeys/view-report/sync/report/controller.js.map +1 -1
  290. package/dpr/routes/journeys/view-report/sync/report/routes.js.map +1 -1
  291. package/dpr/routes/journeys/view-report/sync/report/utils.js.map +1 -1
  292. package/dpr/routes/journeys/view-report/sync/routes.js.map +1 -1
  293. package/dpr/routes/journeys/view-report/sync/tests.cy.js.map +1 -1
  294. package/dpr/routes/journeys/view-report/utils.js.map +1 -1
  295. package/dpr/services/dashboardService.js.map +1 -1
  296. package/dpr/services/defaultFilterValuesService.js.map +1 -1
  297. package/dpr/services/featureFlagService.js.map +1 -1
  298. package/dpr/services/featureFlags.cy.js.map +1 -1
  299. package/dpr/services/index.js.map +1 -1
  300. package/dpr/services/missingReport/missingReportService.js.map +1 -1
  301. package/dpr/services/productCollection/productCollectionService.js.map +1 -1
  302. package/dpr/services/productCollection/productCollectionStoreService.js.map +1 -1
  303. package/dpr/services/reportStoreService.js.map +1 -1
  304. package/dpr/services/reportingService.js.map +1 -1
  305. package/dpr/setUpNunjucksFilters.js.map +1 -1
  306. package/dpr/types/AsyncReportUtils.js.map +1 -1
  307. package/dpr/types/Bookmark.js.map +1 -1
  308. package/dpr/types/Charts.js.map +1 -1
  309. package/dpr/types/Download.js.map +1 -1
  310. package/dpr/types/DprConfig.js.map +1 -1
  311. package/dpr/types/DprUser.js.map +1 -1
  312. package/dpr/types/EmbeddedReportUtils.js.map +1 -1
  313. package/dpr/types/ExecutionData.d.js.map +1 -1
  314. package/dpr/types/Metrics.js.map +1 -1
  315. package/dpr/types/ReportQuery.js.map +1 -1
  316. package/dpr/types/ReportStore.js.map +1 -1
  317. package/dpr/types/Services.d.js.map +1 -1
  318. package/dpr/types/Templates.d.js.map +1 -1
  319. package/dpr/types/UserReports.js.map +1 -1
  320. package/dpr/types/api.d.js.map +1 -1
  321. package/dpr/types/index.d.js.map +1 -1
  322. package/dpr/utils/CollatedSummaryBuilder/CollatedSummaryBuilder.js.map +1 -1
  323. package/dpr/utils/CreateDprServices.js.map +1 -1
  324. package/dpr/utils/DataTableBuilder/DataTableBuilder.js.map +1 -1
  325. package/dpr/utils/DataTableBuilder/types.d.js.map +1 -1
  326. package/dpr/utils/DateMapper/DateMapper.js.map +1 -1
  327. package/dpr/utils/DateMapper/types.d.js.map +1 -1
  328. package/dpr/utils/ErrorHandler.js.map +1 -1
  329. package/dpr/utils/ParentChildDataTableBuilder/ParentChildDataTableBuilder.js.map +1 -1
  330. package/dpr/utils/ParentChildDataTableBuilder/types.d.js.map +1 -1
  331. package/dpr/utils/Personalisation/personalisationUtils.js.map +1 -1
  332. package/dpr/utils/Personalisation/types.d.js.map +1 -1
  333. package/dpr/utils/SectionedDataTableBuilder/SectionedDataTableBuilder.js.map +1 -1
  334. package/dpr/utils/SectionedDataTableBuilder/types.d.js.map +1 -1
  335. package/dpr/utils/SectionedFieldsTableBuilder/SectionedFieldsTableBuilder.js.map +1 -1
  336. package/dpr/utils/SummaryDataTableBuilder/SummaryDataTableBuilder.js.map +1 -1
  337. package/dpr/utils/UserStoreItemBuilder.js.map +1 -1
  338. package/dpr/utils/arrayUtils.js.map +1 -1
  339. package/dpr/utils/datasetHelper.js.map +1 -1
  340. package/dpr/utils/definitionUtils.js.map +1 -1
  341. package/dpr/utils/index.js.map +1 -1
  342. package/dpr/utils/indexedAccesHelper.js.map +1 -1
  343. package/dpr/utils/localsHelper.js.map +1 -1
  344. package/dpr/utils/logger.js.map +1 -1
  345. package/dpr/utils/reportListsHelper.js.map +1 -1
  346. package/dpr/utils/reportStoreHelper.js.map +1 -1
  347. package/dpr/utils/requestStatusHelper.js.map +1 -1
  348. package/dpr/utils/sanitisedError.js.map +1 -1
  349. package/dpr/utils/urlHelper.js.map +1 -1
  350. package/dpr/validation/validate.js.map +1 -1
  351. package/package.json +10 -6
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../src/dpr/utils/arrayUtils.ts"],
3
+ "sources": ["../../dpr/utils/arrayUtils.ts"],
4
4
  "sourcesContent": ["/* eslint-disable import/prefer-default-export */\n\nexport const distinct = (values: string[], value: string) => (values.includes(value) ? values : values.concat(value))\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEO,MAAM,WAAW,CAAC,QAAkB,UAAmB,OAAO,SAAS,KAAK,IAAI,SAAS,OAAO,OAAO,KAAK;",
6
6
  "names": []
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../src/dpr/utils/datasetHelper.ts"],
3
+ "sources": ["../../dpr/utils/datasetHelper.ts"],
4
4
  "sourcesContent": ["import { DashboardDataResponse } from '../types/Metrics'\nimport { components } from '../types/api'\nimport logger from './logger'\n\nexport const getDatasetRows = (\n listDefinition: components['schemas']['DashboardVisualisationDefinition'],\n dashboardData: DashboardDataResponse[],\n) => {\n const { measures, filters, expectNulls } = listDefinition.columns\n logger.info('DEBUG: Dashboard vis filterValues:', filters)\n const keys = <Array<components['schemas']['DashboardVisualisationColumnDefinition']>>listDefinition.columns.keys\n\n const displayColumnsIds = measures.map((col) => col.id)\n const keyColumnsIds = keys?.map((col) => col.id) || []\n let filterColIds = filters?.map((col) => col.id) || []\n filterColIds = [...new Set(filterColIds)]\n const hasOptionalKeys = keys?.some((key) => key.optional)\n\n if (dashboardData.length && dashboardData[0]['ts']) keyColumnsIds.unshift('ts')\n\n const filtered = dashboardData.filter((datasetRow: DashboardDataResponse) => {\n const validRow: boolean[] = []\n\n Object.keys(datasetRow).forEach((fieldId) => {\n const value = datasetRow[fieldId].raw\n // All rows are valid until proven otherwise\n let valid = true\n\n // 1. check if the column value is equal to a defined column value\n if (filterColIds.includes(fieldId) && filters) {\n const filterValues = filters ? filters.filter((f) => f.id === fieldId).map((f) => f.equals) : []\n const validFilters: boolean[] = []\n filterValues.forEach((filterValue) => {\n if (filterValue === null) {\n validFilters.push(value === '' || value === undefined || value === null)\n } else {\n validFilters.push(filterValue === value)\n }\n })\n valid = validFilters.some(Boolean)\n\n // 3. check keys exist in the defined columns\n } else if (keyColumnsIds.includes(fieldId) && hasOptionalKeys) {\n valid = true\n\n // 3. check keys exist in the defined columns\n } else if (keyColumnsIds.includes(fieldId) && !hasOptionalKeys) {\n valid = value !== '' && value !== undefined && value !== null\n\n // 2. check values exist in the defined columns\n } else if (displayColumnsIds.includes(fieldId)) {\n valid = value !== '' && value !== undefined && value !== null\n\n // 3. check that all remaining columns are null.\n } else if (expectNulls) {\n valid = value === '' || value === undefined || value === null\n }\n\n validRow.push(valid)\n })\n\n return validRow.every((val) => val)\n })\n\n if (hasOptionalKeys) {\n return filterKeys(filtered, keys || [])\n }\n\n return filtered\n}\n\nexport const getKeyVariations = (keys: Array<components['schemas']['DashboardVisualisationColumnDefinition']>) => {\n const colIdVariations: string[][] = []\n const keyColumnsIds = keys.map((col) => col.id)\n const allOptional = keys.every((key) => key.optional)\n const colIdCopy = [...keyColumnsIds]\n\n keyColumnsIds.reverse().forEach((id) => {\n const key = keys.find((k) => k.id === id)\n colIdVariations.push([...colIdCopy])\n if (key && key.optional) {\n colIdCopy.pop()\n }\n })\n\n if (allOptional) colIdVariations.push([])\n return colIdVariations\n}\n\nexport const getKeyIds = (dashboardData: DashboardDataResponse[], colIdVariations: string[][]) => {\n let validHeadIds: string[] = []\n colIdVariations.every((ids: string[]) => {\n const validRows = []\n\n dashboardData.forEach((datasetRow: DashboardDataResponse) => {\n const validRow: boolean[] = []\n\n Object.keys(datasetRow).forEach((datasetField) => {\n const value = datasetRow[datasetField].raw\n let valid = true\n if (ids.includes(datasetField)) {\n valid = value !== '' && value !== undefined && value !== null\n }\n validRow.push(valid)\n })\n\n if (validRow.every((val) => val)) {\n validRows.push(datasetRow)\n }\n })\n\n if (validRows.length > 0) {\n validHeadIds = ids\n return false\n }\n validHeadIds = ids\n return true\n })\n\n return validHeadIds\n}\n\nexport const filterKeys = (\n dashboardData: DashboardDataResponse[],\n keys: Array<components['schemas']['DashboardVisualisationColumnDefinition']>,\n) => {\n const colIdVariations = getKeyVariations(keys)\n const validHeadIds = getKeyIds(dashboardData, colIdVariations)\n\n return dashboardData.filter((datasetRow: DashboardDataResponse) => {\n const validRow: boolean[] = []\n Object.keys(datasetRow).forEach((datasetField) => {\n const value = datasetRow[datasetField].raw\n let valid = true\n if (validHeadIds.includes(datasetField)) {\n valid = value !== '' && value !== undefined && value !== null\n }\n validRow.push(valid)\n })\n\n return validRow.every((val) => val)\n })\n}\n\nexport const getLastestDataset = (dashboardData: DashboardDataResponse[]): DashboardDataResponse[] => {\n const latestTimestamp = dashboardData[dashboardData.length - 1]?.['ts']?.raw\n if (latestTimestamp) {\n return dashboardData.filter((data) => data['ts'].raw === latestTimestamp)\n }\n return dashboardData\n}\n\nexport const getEarliestDataset = (dashboardData: DashboardDataResponse[]): DashboardDataResponse[] => {\n const latestTimestamp = dashboardData[0]?.['ts']?.raw\n if (latestTimestamp) {\n return dashboardData.filter((data) => data['ts'].raw === latestTimestamp)\n }\n return dashboardData\n}\n\nexport const groupRowsByTimestamp = (dashboardData: DashboardDataResponse[]): DashboardDataResponse[][] => {\n const uniqueTimestamps = [...new Set(dashboardData.map((item) => item['ts'].raw))]\n return uniqueTimestamps.map((ts) => {\n return dashboardData.filter((d) => d['ts'].raw === ts)\n })\n}\n\nexport const groupRowsByKey = (dashboardData: DashboardDataResponse[], key: string): DashboardDataResponse[][] => {\n const uniqueKeyValues = [...new Set(dashboardData.map((item) => item[key].raw))]\n return uniqueKeyValues.map((keyValue) => {\n return dashboardData.filter((d) => d[key].raw === keyValue)\n })\n}\n\nexport const getGroupKey = (\n rawData: DashboardDataResponse[],\n keys?: Array<components['schemas']['DashboardVisualisationColumnDefinition']>,\n) => {\n if (!keys || !keys.length || !rawData.length) {\n return undefined\n }\n\n const data = rawData[0]\n let index = keys.length - 1\n let keyFound = false\n while (!keyFound) {\n const k = `${keys[index]?.id}`\n if (k && index !== -1 && (!data[k] || !data[k].raw || data[k].raw === '' || data[k].raw === null)) {\n index -= 1\n } else {\n keyFound = true\n }\n }\n\n return index !== -1 ? keys[index] : undefined\n}\n\nexport const filterRowsByDisplayColumns = (\n listDefinition: components['schemas']['DashboardVisualisationDefinition'],\n dashboardData: DashboardDataResponse[],\n includeKeys = false,\n) => {\n const { keys: keyCols, measures } = listDefinition.columns\n const keys = keyCols || []\n let displayColumns = [...measures]\n if (includeKeys) {\n displayColumns = [...keys, ...measures]\n }\n const displayColumnsIds = displayColumns.map((col) => col.id)\n\n return dashboardData.map((datasetRow: DashboardDataResponse) => {\n return Object.keys(datasetRow)\n .filter((key) => displayColumnsIds.includes(key))\n .reduce((acc, key) => {\n acc[key] = datasetRow[key]\n return acc\n }, {} as unknown as DashboardDataResponse)\n })\n}\n\nexport default {\n getDatasetRows,\n getLastestDataset,\n getEarliestDataset,\n filterRowsByDisplayColumns,\n groupRowsByTimestamp,\n groupRowsByKey,\n getGroupKey,\n getKeyVariations,\n getKeyIds,\n filterKeys,\n}\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,oBAAmB;AAEZ,MAAM,iBAAiB,CAC5B,gBACA,kBACG;AACH,QAAM,EAAE,UAAU,SAAS,YAAY,IAAI,eAAe;AAC1D,gBAAAA,QAAO,KAAK,sCAAsC,OAAO;AACzD,QAAM,OAA+E,eAAe,QAAQ;AAE5G,QAAM,oBAAoB,SAAS,IAAI,CAAC,QAAQ,IAAI,EAAE;AACtD,QAAM,gBAAgB,MAAM,IAAI,CAAC,QAAQ,IAAI,EAAE,KAAK,CAAC;AACrD,MAAI,eAAe,SAAS,IAAI,CAAC,QAAQ,IAAI,EAAE,KAAK,CAAC;AACrD,iBAAe,CAAC,GAAG,IAAI,IAAI,YAAY,CAAC;AACxC,QAAM,kBAAkB,MAAM,KAAK,CAAC,QAAQ,IAAI,QAAQ;AAExD,MAAI,cAAc,UAAU,cAAc,CAAC,EAAE,IAAI,EAAG,eAAc,QAAQ,IAAI;AAE9E,QAAM,WAAW,cAAc,OAAO,CAAC,eAAsC;AAC3E,UAAM,WAAsB,CAAC;AAE7B,WAAO,KAAK,UAAU,EAAE,QAAQ,CAAC,YAAY;AAC3C,YAAM,QAAQ,WAAW,OAAO,EAAE;AAElC,UAAI,QAAQ;AAGZ,UAAI,aAAa,SAAS,OAAO,KAAK,SAAS;AAC7C,cAAM,eAAe,UAAU,QAAQ,OAAO,CAAC,MAAM,EAAE,OAAO,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC;AAC/F,cAAM,eAA0B,CAAC;AACjC,qBAAa,QAAQ,CAAC,gBAAgB;AACpC,cAAI,gBAAgB,MAAM;AACxB,yBAAa,KAAK,UAAU,MAAM,UAAU,UAAa,UAAU,IAAI;AAAA,UACzE,OAAO;AACL,yBAAa,KAAK,gBAAgB,KAAK;AAAA,UACzC;AAAA,QACF,CAAC;AACD,gBAAQ,aAAa,KAAK,OAAO;AAAA,MAGnC,WAAW,cAAc,SAAS,OAAO,KAAK,iBAAiB;AAC7D,gBAAQ;AAAA,MAGV,WAAW,cAAc,SAAS,OAAO,KAAK,CAAC,iBAAiB;AAC9D,gBAAQ,UAAU,MAAM,UAAU,UAAa,UAAU;AAAA,MAG3D,WAAW,kBAAkB,SAAS,OAAO,GAAG;AAC9C,gBAAQ,UAAU,MAAM,UAAU,UAAa,UAAU;AAAA,MAG3D,WAAW,aAAa;AACtB,gBAAQ,UAAU,MAAM,UAAU,UAAa,UAAU;AAAA,MAC3D;AAEA,eAAS,KAAK,KAAK;AAAA,IACrB,CAAC;AAED,WAAO,SAAS,MAAM,CAAC,QAAQ,GAAG;AAAA,EACpC,CAAC;AAED,MAAI,iBAAiB;AACnB,WAAO,WAAW,UAAU,QAAQ,CAAC,CAAC;AAAA,EACxC;AAEA,SAAO;AACT;AAEO,MAAM,mBAAmB,CAAC,SAAiF;AAChH,QAAM,kBAA8B,CAAC;AACrC,QAAM,gBAAgB,KAAK,IAAI,CAAC,QAAQ,IAAI,EAAE;AAC9C,QAAM,cAAc,KAAK,MAAM,CAAC,QAAQ,IAAI,QAAQ;AACpD,QAAM,YAAY,CAAC,GAAG,aAAa;AAEnC,gBAAc,QAAQ,EAAE,QAAQ,CAAC,OAAO;AACtC,UAAM,MAAM,KAAK,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE;AACxC,oBAAgB,KAAK,CAAC,GAAG,SAAS,CAAC;AACnC,QAAI,OAAO,IAAI,UAAU;AACvB,gBAAU,IAAI;AAAA,IAChB;AAAA,EACF,CAAC;AAED,MAAI,YAAa,iBAAgB,KAAK,CAAC,CAAC;AACxC,SAAO;AACT;AAEO,MAAM,YAAY,CAAC,eAAwC,oBAAgC;AAChG,MAAI,eAAyB,CAAC;AAC9B,kBAAgB,MAAM,CAAC,QAAkB;AACvC,UAAM,YAAY,CAAC;AAEnB,kBAAc,QAAQ,CAAC,eAAsC;AAC3D,YAAM,WAAsB,CAAC;AAE7B,aAAO,KAAK,UAAU,EAAE,QAAQ,CAAC,iBAAiB;AAChD,cAAM,QAAQ,WAAW,YAAY,EAAE;AACvC,YAAI,QAAQ;AACZ,YAAI,IAAI,SAAS,YAAY,GAAG;AAC9B,kBAAQ,UAAU,MAAM,UAAU,UAAa,UAAU;AAAA,QAC3D;AACA,iBAAS,KAAK,KAAK;AAAA,MACrB,CAAC;AAED,UAAI,SAAS,MAAM,CAAC,QAAQ,GAAG,GAAG;AAChC,kBAAU,KAAK,UAAU;AAAA,MAC3B;AAAA,IACF,CAAC;AAED,QAAI,UAAU,SAAS,GAAG;AACxB,qBAAe;AACf,aAAO;AAAA,IACT;AACA,mBAAe;AACf,WAAO;AAAA,EACT,CAAC;AAED,SAAO;AACT;AAEO,MAAM,aAAa,CACxB,eACA,SACG;AACH,QAAM,kBAAkB,iBAAiB,IAAI;AAC7C,QAAM,eAAe,UAAU,eAAe,eAAe;AAE7D,SAAO,cAAc,OAAO,CAAC,eAAsC;AACjE,UAAM,WAAsB,CAAC;AAC7B,WAAO,KAAK,UAAU,EAAE,QAAQ,CAAC,iBAAiB;AAChD,YAAM,QAAQ,WAAW,YAAY,EAAE;AACvC,UAAI,QAAQ;AACZ,UAAI,aAAa,SAAS,YAAY,GAAG;AACvC,gBAAQ,UAAU,MAAM,UAAU,UAAa,UAAU;AAAA,MAC3D;AACA,eAAS,KAAK,KAAK;AAAA,IACrB,CAAC;AAED,WAAO,SAAS,MAAM,CAAC,QAAQ,GAAG;AAAA,EACpC,CAAC;AACH;AAEO,MAAM,oBAAoB,CAAC,kBAAoE;AACpG,QAAM,kBAAkB,cAAc,cAAc,SAAS,CAAC,IAAI,IAAI,GAAG;AACzE,MAAI,iBAAiB;AACnB,WAAO,cAAc,OAAO,CAAC,SAAS,KAAK,IAAI,EAAE,QAAQ,eAAe;AAAA,EAC1E;AACA,SAAO;AACT;AAEO,MAAM,qBAAqB,CAAC,kBAAoE;AACrG,QAAM,kBAAkB,cAAc,CAAC,IAAI,IAAI,GAAG;AAClD,MAAI,iBAAiB;AACnB,WAAO,cAAc,OAAO,CAAC,SAAS,KAAK,IAAI,EAAE,QAAQ,eAAe;AAAA,EAC1E;AACA,SAAO;AACT;AAEO,MAAM,uBAAuB,CAAC,kBAAsE;AACzG,QAAM,mBAAmB,CAAC,GAAG,IAAI,IAAI,cAAc,IAAI,CAAC,SAAS,KAAK,IAAI,EAAE,GAAG,CAAC,CAAC;AACjF,SAAO,iBAAiB,IAAI,CAAC,OAAO;AAClC,WAAO,cAAc,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE;AAAA,EACvD,CAAC;AACH;AAEO,MAAM,iBAAiB,CAAC,eAAwC,QAA2C;AAChH,QAAM,kBAAkB,CAAC,GAAG,IAAI,IAAI,cAAc,IAAI,CAAC,SAAS,KAAK,GAAG,EAAE,GAAG,CAAC,CAAC;AAC/E,SAAO,gBAAgB,IAAI,CAAC,aAAa;AACvC,WAAO,cAAc,OAAO,CAAC,MAAM,EAAE,GAAG,EAAE,QAAQ,QAAQ;AAAA,EAC5D,CAAC;AACH;AAEO,MAAM,cAAc,CACzB,SACA,SACG;AACH,MAAI,CAAC,QAAQ,CAAC,KAAK,UAAU,CAAC,QAAQ,QAAQ;AAC5C,WAAO;AAAA,EACT;AAEA,QAAM,OAAO,QAAQ,CAAC;AACtB,MAAI,QAAQ,KAAK,SAAS;AAC1B,MAAI,WAAW;AACf,SAAO,CAAC,UAAU;AAChB,UAAM,IAAI,GAAG,KAAK,KAAK,GAAG,EAAE;AAC5B,QAAI,KAAK,UAAU,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC,EAAE,QAAQ,MAAM,KAAK,CAAC,EAAE,QAAQ,OAAO;AACjG,eAAS;AAAA,IACX,OAAO;AACL,iBAAW;AAAA,IACb;AAAA,EACF;AAEA,SAAO,UAAU,KAAK,KAAK,KAAK,IAAI;AACtC;AAEO,MAAM,6BAA6B,CACxC,gBACA,eACA,cAAc,UACX;AACH,QAAM,EAAE,MAAM,SAAS,SAAS,IAAI,eAAe;AACnD,QAAM,OAAO,WAAW,CAAC;AACzB,MAAI,iBAAiB,CAAC,GAAG,QAAQ;AACjC,MAAI,aAAa;AACf,qBAAiB,CAAC,GAAG,MAAM,GAAG,QAAQ;AAAA,EACxC;AACA,QAAM,oBAAoB,eAAe,IAAI,CAAC,QAAQ,IAAI,EAAE;AAE5D,SAAO,cAAc,IAAI,CAAC,eAAsC;AAC9D,WAAO,OAAO,KAAK,UAAU,EAC1B,OAAO,CAAC,QAAQ,kBAAkB,SAAS,GAAG,CAAC,EAC/C,OAAO,CAAC,KAAK,QAAQ;AACpB,UAAI,GAAG,IAAI,WAAW,GAAG;AACzB,aAAO;AAAA,IACT,GAAG,CAAC,CAAqC;AAAA,EAC7C,CAAC;AACH;AAEA,IAAO,wBAAQ;AAAA,EACb;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;",
6
6
  "names": ["logger"]
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../src/dpr/utils/definitionUtils.ts"],
3
+ "sources": ["../../dpr/utils/definitionUtils.ts"],
4
4
  "sourcesContent": ["import { FiltersType } from '../components/_filters/filtersTypeEnum'\nimport ReportingService from '../services/reportingService'\nimport { components } from '../types/api'\nimport { Template } from '../types/Templates'\nimport { ReportType } from '../types/UserReports'\nimport logger from './logger'\n\nexport const getFilter = (\n fields: components['schemas']['FieldDefinition'][],\n fieldId: string,\n): components['schemas']['FilterDefinition'] | undefined => {\n return fields.find((f) => f.name === fieldId)?.filter\n}\n\nexport const getFiltersDefaultsValues = (fields: components['schemas']['FieldDefinition'][]) => {\n return fields\n .filter((field) => field.filter)\n .map((field) => {\n const { name, display } = field\n\n const defaultValue = field.filter?.defaultValue\n const defaultGranularity = field.filter?.defaultGranularity\n const defaultQuickFilterValue = field.filter?.defaultQuickFilterValue\n const type = field.filter?.type || ReportType.REPORT\n const interactive = field.filter?.interactive || FiltersType.REQUEST\n\n return {\n name,\n display,\n type,\n interactive,\n ...(defaultValue && { defaultValue }),\n ...(defaultGranularity && { defaultGranularity }),\n ...(defaultQuickFilterValue && { defaultQuickFilterValue }),\n }\n })\n}\n\nexport const getCurrentVariantDefinition = (\n definitions: components['schemas']['ReportDefinitionSummary'][],\n reportId: string,\n variantId: string,\n): components['schemas']['VariantDefinition'] | undefined => {\n if (!definitions) {\n logger.info('No definitions')\n return undefined\n }\n\n let variantDef: components['schemas']['VariantDefinition']\n const reportDef = definitions.find(\n (report: components['schemas']['ReportDefinitionSummary']) => report.id === reportId,\n )\n\n if (reportDef) {\n // TODO: this needs fixing, we should never be using `as unknown as`, but the types are very mixed up here\n variantDef = reportDef.variants.find(\n (variant) => variantId === variant.id,\n ) as unknown as components['schemas']['VariantDefinition']\n\n return variantDef\n }\n\n return undefined\n}\n\nexport const getFieldDisplayName = (fields: components['schemas']['FieldDefinition'][], fieldId: string) => {\n const ids = fieldId.split('.')\n const field = fields.find((f) => {\n return f.name === ids[0]\n })\n if (field) {\n return ids[1] ? `${field.display} ${ids[1]}` : field.display\n }\n return fieldId\n}\n\nexport const getField = (fields: components['schemas']['FieldDefinition'][], fieldId: string) => {\n return fields.find((field) => {\n return field.name === fieldId\n })\n}\n\nexport const getFields = (\n definition: components['schemas']['SingleVariantReportDefinition'],\n): components['schemas']['FieldDefinition'][] => {\n return definition.variant.specification?.fields || []\n}\n\nexport const getTemplate = (definition: components['schemas']['SingleVariantReportDefinition']): Template => {\n return definition.variant.specification?.template || 'list'\n}\n\nexport const getFilters = (\n fields: components['schemas']['FieldDefinition'][],\n): components['schemas']['FilterDefinition'][] => {\n const filters: components['schemas']['FilterDefinition'][] = fields\n .filter((field: components['schemas']['FieldDefinition']) => field.filter)\n .map((field: components['schemas']['FieldDefinition']) => <components['schemas']['FilterDefinition']>field.filter)\n\n return filters.length ? filters : []\n}\n\nexport const getReportSummary = (\n reportId: string,\n reportingService: ReportingService,\n token: string,\n definitionPath: string,\n) => reportingService.getDefinitionSummary(token, reportId, definitionPath)\n\nexport default {\n getCurrentVariantDefinition,\n getFieldDisplayName,\n getField,\n getFields,\n getTemplate,\n getFilter,\n getFilters,\n getFiltersDefaultsValues,\n getReportSummary,\n}\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,6BAA4B;AAI5B,yBAA2B;AAC3B,oBAAmB;AAEZ,MAAM,YAAY,CACvB,QACA,YAC0D;AAC1D,SAAO,OAAO,KAAK,CAAC,MAAM,EAAE,SAAS,OAAO,GAAG;AACjD;AAEO,MAAM,2BAA2B,CAAC,WAAuD;AAC9F,SAAO,OACJ,OAAO,CAAC,UAAU,MAAM,MAAM,EAC9B,IAAI,CAAC,UAAU;AACd,UAAM,EAAE,MAAM,QAAQ,IAAI;AAE1B,UAAM,eAAe,MAAM,QAAQ;AACnC,UAAM,qBAAqB,MAAM,QAAQ;AACzC,UAAM,0BAA0B,MAAM,QAAQ;AAC9C,UAAM,OAAO,MAAM,QAAQ,QAAQ,8BAAW;AAC9C,UAAM,cAAc,MAAM,QAAQ,eAAe,mCAAY;AAE7D,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,GAAI,gBAAgB,EAAE,aAAa;AAAA,MACnC,GAAI,sBAAsB,EAAE,mBAAmB;AAAA,MAC/C,GAAI,2BAA2B,EAAE,wBAAwB;AAAA,IAC3D;AAAA,EACF,CAAC;AACL;AAEO,MAAM,8BAA8B,CACzC,aACA,UACA,cAC2D;AAC3D,MAAI,CAAC,aAAa;AAChB,kBAAAA,QAAO,KAAK,gBAAgB;AAC5B,WAAO;AAAA,EACT;AAEA,MAAI;AACJ,QAAM,YAAY,YAAY;AAAA,IAC5B,CAAC,WAA6D,OAAO,OAAO;AAAA,EAC9E;AAEA,MAAI,WAAW;AAEb,iBAAa,UAAU,SAAS;AAAA,MAC9B,CAAC,YAAY,cAAc,QAAQ;AAAA,IACrC;AAEA,WAAO;AAAA,EACT;AAEA,SAAO;AACT;AAEO,MAAM,sBAAsB,CAAC,QAAoD,YAAoB;AAC1G,QAAM,MAAM,QAAQ,MAAM,GAAG;AAC7B,QAAM,QAAQ,OAAO,KAAK,CAAC,MAAM;AAC/B,WAAO,EAAE,SAAS,IAAI,CAAC;AAAA,EACzB,CAAC;AACD,MAAI,OAAO;AACT,WAAO,IAAI,CAAC,IAAI,GAAG,MAAM,OAAO,IAAI,IAAI,CAAC,CAAC,KAAK,MAAM;AAAA,EACvD;AACA,SAAO;AACT;AAEO,MAAM,WAAW,CAAC,QAAoD,YAAoB;AAC/F,SAAO,OAAO,KAAK,CAAC,UAAU;AAC5B,WAAO,MAAM,SAAS;AAAA,EACxB,CAAC;AACH;AAEO,MAAM,YAAY,CACvB,eAC+C;AAC/C,SAAO,WAAW,QAAQ,eAAe,UAAU,CAAC;AACtD;AAEO,MAAM,cAAc,CAAC,eAAiF;AAC3G,SAAO,WAAW,QAAQ,eAAe,YAAY;AACvD;AAEO,MAAM,aAAa,CACxB,WACgD;AAChD,QAAM,UAAuD,OAC1D,OAAO,CAAC,UAAoD,MAAM,MAAM,EACxE,IAAI,CAAC,UAA+F,MAAM,MAAM;AAEnH,SAAO,QAAQ,SAAS,UAAU,CAAC;AACrC;AAEO,MAAM,mBAAmB,CAC9B,UACA,kBACA,OACA,mBACG,iBAAiB,qBAAqB,OAAO,UAAU,cAAc;AAE1E,IAAO,0BAAQ;AAAA,EACb;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;",
6
6
  "names": ["logger"]
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../src/dpr/utils/index.ts"],
3
+ "sources": ["../../dpr/utils/index.ts"],
4
4
  "sourcesContent": ["import SyncReportUtils from '../routes/journeys/view-report/sync/report/utils'\nimport DownloadUtils from '../routes/journeys/download-report/utils'\nimport BookmarkUtils from '../routes/journeys/my-reports/bookmarks/utils'\n\nexport { SyncReportUtils, DownloadUtils, BookmarkUtils }\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA,qCAAAA;AAAA,EAAA,mCAAAC;AAAA,EAAA,oCAAAC;AAAA;AAAA;AAAA,mBAA4B;AAC5B,IAAAC,gBAA0B;AAC1B,IAAAA,gBAA0B;",
6
6
  "names": ["BookmarkUtils", "DownloadUtils", "SyncReportUtils", "import_utils"]
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../src/dpr/utils/indexedAccesHelper.ts"],
3
+ "sources": ["../../dpr/utils/indexedAccesHelper.ts"],
4
4
  "sourcesContent": ["import { Request } from 'express'\n\nexport const getRequestParam = ({\n req,\n param,\n defaultValue,\n error,\n errorString,\n}: {\n req: Request\n param: string\n defaultValue?: string\n error?: boolean\n errorString?: string\n}): string => {\n const value = req.params[param]\n\n if (value === undefined && error) {\n const errorMessage = errorString || 'Crtitical request parameter is undefined:'\n throw new Error(`${errorMessage}: paramname: ${param}`)\n }\n\n return value || defaultValue || ''\n}\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEO,MAAM,kBAAkB,CAAC;AAAA,EAC9B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAMc;AACZ,QAAM,QAAQ,IAAI,OAAO,KAAK;AAE9B,MAAI,UAAU,UAAa,OAAO;AAChC,UAAM,eAAe,eAAe;AACpC,UAAM,IAAI,MAAM,GAAG,YAAY,gBAAgB,KAAK,EAAE;AAAA,EACxD;AAEA,SAAO,SAAS,gBAAgB;AAClC;",
6
6
  "names": []
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../src/dpr/utils/localsHelper.ts"],
3
+ "sources": ["../../dpr/utils/localsHelper.ts"],
4
4
  "sourcesContent": ["import type { Response, Request } from 'express'\nimport { StoredReportData } from '../types/UserReports'\nimport { BookmarkStoreData } from '../types/Bookmark'\n\nexport const getValues = (res: Response) => {\n const csrfToken = (res.locals['csrfToken'] as unknown as string) || 'csrfToken'\n const dprUser = setDprUserContext(res)\n\n return {\n token: dprUser.token,\n dprUser,\n ...setUserReports(res),\n ...setDpdPaths(res),\n ...setFeatures(res),\n ...setDefinitions(res),\n csrfToken,\n nestedBaseUrl: res.locals['nestedBaseUrl'],\n }\n}\n\nconst setDefinitions = (res: Response) => {\n const definitions = res.locals['definitions'] || []\n return {\n definitions,\n }\n}\n\nconst setFeatures = (res: Response) => {\n return {\n bookmarkingEnabled: <boolean>res.locals['bookmarkingEnabled'],\n downloadingEnabled: <boolean>res.locals['downloadingEnabled'],\n }\n}\n\nconst setUserReports = (res: Response) => {\n const requestedReports: StoredReportData[] = res.locals['requestedReports'] || []\n const recentlyViewedReports: StoredReportData[] = res.locals['recentlyViewedReports'] || []\n const bookmarks: BookmarkStoreData[] = res.locals['bookmarks'] || []\n\n return {\n requestedReports,\n recentlyViewedReports,\n bookmarks,\n }\n}\n\nconst setDpdPaths = (res: Response) => {\n const { definitionsPath, dpdPathFromQuery, dpdPathFromConfig, pathSuffix } = res.locals\n return {\n definitionsPath,\n dpdPathFromQuery,\n dpdPathFromConfig,\n pathSuffix: pathSuffix || '',\n }\n}\n\nconst setDprUserContext = (res: Response) => {\n const { dprUser } = res.locals\n const id = dprUser?.id\n const token = dprUser?.token\n const activeCaseLoadId = dprUser?.activeCaseLoadId\n const staffId = dprUser?.staffId\n const email = dprUser?.emailAddress || ''\n const displayName = dprUser?.displayName || ''\n\n return {\n id,\n token,\n activeCaseLoadId,\n staffId,\n email,\n displayName,\n }\n}\n\nexport const setDdpPathToReqQuery = (req: Request, value: string) => {\n if (value) {\n req.query = {\n ...req.query,\n dataProductDefinitionsPath: value,\n }\n }\n\n return req.query\n}\n\nexport default {\n getValues,\n setDdpPathToReqQuery,\n}\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAIO,MAAM,YAAY,CAAC,QAAkB;AAC1C,QAAM,YAAa,IAAI,OAAO,WAAW,KAA2B;AACpE,QAAM,UAAU,kBAAkB,GAAG;AAErC,SAAO;AAAA,IACL,OAAO,QAAQ;AAAA,IACf;AAAA,IACA,GAAG,eAAe,GAAG;AAAA,IACrB,GAAG,YAAY,GAAG;AAAA,IAClB,GAAG,YAAY,GAAG;AAAA,IAClB,GAAG,eAAe,GAAG;AAAA,IACrB;AAAA,IACA,eAAe,IAAI,OAAO,eAAe;AAAA,EAC3C;AACF;AAEA,MAAM,iBAAiB,CAAC,QAAkB;AACxC,QAAM,cAAc,IAAI,OAAO,aAAa,KAAK,CAAC;AAClD,SAAO;AAAA,IACL;AAAA,EACF;AACF;AAEA,MAAM,cAAc,CAAC,QAAkB;AACrC,SAAO;AAAA,IACL,oBAA6B,IAAI,OAAO,oBAAoB;AAAA,IAC5D,oBAA6B,IAAI,OAAO,oBAAoB;AAAA,EAC9D;AACF;AAEA,MAAM,iBAAiB,CAAC,QAAkB;AACxC,QAAM,mBAAuC,IAAI,OAAO,kBAAkB,KAAK,CAAC;AAChF,QAAM,wBAA4C,IAAI,OAAO,uBAAuB,KAAK,CAAC;AAC1F,QAAM,YAAiC,IAAI,OAAO,WAAW,KAAK,CAAC;AAEnE,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAEA,MAAM,cAAc,CAAC,QAAkB;AACrC,QAAM,EAAE,iBAAiB,kBAAkB,mBAAmB,WAAW,IAAI,IAAI;AACjF,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA,YAAY,cAAc;AAAA,EAC5B;AACF;AAEA,MAAM,oBAAoB,CAAC,QAAkB;AAC3C,QAAM,EAAE,QAAQ,IAAI,IAAI;AACxB,QAAM,KAAK,SAAS;AACpB,QAAM,QAAQ,SAAS;AACvB,QAAM,mBAAmB,SAAS;AAClC,QAAM,UAAU,SAAS;AACzB,QAAM,QAAQ,SAAS,gBAAgB;AACvC,QAAM,cAAc,SAAS,eAAe;AAE5C,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAEO,MAAM,uBAAuB,CAAC,KAAc,UAAkB;AACnE,MAAI,OAAO;AACT,QAAI,QAAQ;AAAA,MACV,GAAG,IAAI;AAAA,MACP,4BAA4B;AAAA,IAC9B;AAAA,EACF;AAEA,SAAO,IAAI;AACb;AAEA,IAAO,uBAAQ;AAAA,EACb;AAAA,EACA;AACF;",
6
6
  "names": []
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../src/dpr/utils/logger.ts"],
3
+ "sources": ["../../dpr/utils/logger.ts"],
4
4
  "sourcesContent": ["import bunyan from 'bunyan'\nimport bunyanFormat from 'bunyan-format'\n\nconst formatOut = bunyanFormat({ outputMode: 'short', color: false })\n\nconst disableLogs = process.env['SUPPRESS_LOGS']\nexport const logger = bunyan.createLogger({\n name: 'Digital Prison Reporting:',\n stream: formatOut,\n level: disableLogs ? bunyan.FATAL + 1 : 'debug',\n})\n\nexport default logger\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAAmB;AACnB,2BAAyB;AAEzB,MAAM,gBAAY,qBAAAA,SAAa,EAAE,YAAY,SAAS,OAAO,MAAM,CAAC;AAEpE,MAAM,cAAc,QAAQ,IAAI,eAAe;AACxC,MAAM,SAAS,cAAAC,QAAO,aAAa;AAAA,EACxC,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,OAAO,cAAc,cAAAA,QAAO,QAAQ,IAAI;AAC1C,CAAC;AAED,IAAO,iBAAQ;",
6
6
  "names": ["bunyanFormat", "bunyan"]
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../src/dpr/utils/reportListsHelper.ts"],
3
+ "sources": ["../../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
5
  "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,yBAAoD;AACpD,0BAAyB;AAElB,MAAM,kBAAkB,CAC7B,WACA,aACA,MACA,WACG;AACH,QAAM,OAAO,WAAW,iCAAc,UAAU,YAAY;AAC5D,SAAO;AAAA,mGAC0F,SAAS,KAAK,IAAI;AAAA,+EACtC,IAAI,gDAAgD,WAAW;AAAA;AAE9I;AAEA,MAAM,kBAAkB,CAAC,SAAqB;AAC5C,MAAI,iBAAiB;AACrB,UAAQ,MAAM;AAAA,IACZ,KAAK,8BAAW;AACd,uBAAiB;AACjB;AAAA,IACF,KAAK,8BAAW;AACd,uBAAiB;AACjB;AAAA,IACF;AACE,uBAAiB;AACjB;AAAA,EACJ;AACA,SAAO;AACT;AAEO,MAAM,wBAAwB,CAAC,aAAqB,YAAoB,MAAkB,OAAgB;AAC/G,QAAM,UAAU,CAAC,KAAK,qBAAqB;AAC3C,QAAM,WAAW,gBAAgB,IAAI;AACrC,QAAM,aAAa,eAAe,IAAI;AACtC,SAAO;AAAA,0EACiE,UAAU,aAAa,UAAU;AAAA,6EAC9B,WAAW,KAAK,WAAW;AAAA,6BAC3E,QAAQ,mFAAmF,UAAU,KAAK,UAAU;AAAA,yEACxE,OAAO,4BAA4B,EAAE;AAAA;AAE9G;AAEO,MAAM,2BAA2B,CAAC,YAAoB,SAAqB;AAChF,QAAM,WAAW,gBAAgB,IAAI;AACrC,QAAM,aAAa,eAAe,IAAI;AACtC,SAAO;AAAA,4DACmD,UAAU;AAAA,6BACzC,QAAQ,mCAAmC,UAAU;AAAA;AAElF;AAEO,MAAM,oBAAoB,CAC/B,MACA,MACA,UACA,cACA,aAAa,MACb,UAAU,UACP;AACH,MAAI,CAAC,YAAY;AACf,WAAO;AAAA,EACT;AAEA,MAAI;AACJ,MAAI;AACJ,MAAI,SAAS;AACX,iBAAa;AACb,oBAAgB,8FAA8F,IAAI,KAAK,UAAU;AAAA,EACnI,OAAO;AACL,iBAAa,WAAW,IAAI;AAC5B,QAAI,YAAY,aAAa,4BAAS,MAAM;AAC1C,mBAAa,QAAQ,IAAI;AAAA,IAC3B;AACA,oBAAgB,iHAAiH,IAAI,WAAW,IAAI,KAAK,UAAU;AAAA,EACrK;AAEA,MAAI,cAAc;AAChB,oBAAgB,GAAG,aAAa,GAAG,YAAY;AAAA,EACjD;AAEA,SAAO;AACT;AAEO,MAAM,iBAAiB,CAAC,SAAiB;AAC9C,SAAO,KAAK,OAAO,CAAC,EAAE,YAAY,IAAI,KAAK,UAAU,CAAC,EAAE,YAAY;AACtE;AAEO,MAAM,iBAAiB,CAC5B,UACA,MACA,UACA,IACA,KACA,YAAY,UACT;AACH,MAAI,OAAO;AACX,MAAI,WAAW;AACb,WAAO,8BAA8B,QAAQ,IAAI,EAAE;AAAA,EACrD,OAAO;AACL,UAAM,EAAE,YAAY,iBAAiB,IAAI,oBAAAA,QAAa,UAAU,GAAG;AACnE,UAAM,oBAAoB,mBAAmB,aAAa;AAC1D,WAAO,sBAAsB,IAAI,IAAI,QAAQ,IAAI,EAAE,WAAW,iBAAiB;AAE/E,QAAI,YAAY,aAAa,4BAAS,MAAM;AAC1C,aAAO,wBAAwB,IAAI,IAAI,QAAQ,IAAI,EAAE,eAAe,iBAAiB;AAAA,IACvF;AAAA,EACF;AACA,SAAO;AACT;",
6
6
  "names": ["localsHelper"]
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../src/dpr/utils/reportStoreHelper.ts"],
3
+ "sources": ["../../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
5
  "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGO,MAAM,mBAAmB,OAAO;AAAA,EACrC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAKM;AACJ,QAAM,UAAU,MAAM,aAAa,kBAAkB,IAAI,MAAM;AAC/D,QAAM,eAAe,uBAAuB,QAAQ,OAAO;AAC3D,MAAI,aAAa,QAAQ;AACvB,UAAM,QAAQ;AAAA,MACZ,aAAa,IAAI,OAAO,gBAAwB;AAC9C,cAAM,aAAa,aAAa,aAAa,MAAM;AAAA,MACrD,CAAC;AAAA,IACH;AAAA,EACF;AACF;AAUO,MAAM,yBAAyB,CAAC,uBAA+B,oBAAsC;AAC1G,QAAM,aAAuB,CAAC;AAC9B,QAAM,iBAAiB,IAAI,gBAAgB,qBAAqB;AAEhE,kBAAgB,QAAQ,CAAC,uBAAuC;AAC9D,UAAM,UAAqB,CAAC;AAC5B,UAAM,SAAS,mBAAmB,KAAK,SAAS,UAAU;AAC1D,UAAM,sBAAsB,IAAI,gBAAgB,MAAM;AACtD,UAAM,EAAE,YAAY,IAAI;AAExB,QAAI,oBAAoB,QAAQ,WAAW,eAAe,QAAQ,QAAQ;AACxE,qBAAe,QAAQ,CAAC,UAAU,WAAW;AAC3C,cAAM,QAAQ,oBAAoB,IAAI,QAAQ,QAAQ;AACtD,gBAAQ,KAAK,KAAK;AAAA,MACpB,CAAC;AAAA,IACH;AACA,QAAI,QAAQ,MAAM,OAAO,KAAK,aAAa;AACzC,iBAAW,KAAK,WAAW;AAAA,IAC7B;AAAA,EACF,CAAC;AAED,SAAO;AACT;",
6
6
  "names": []
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../src/dpr/utils/requestStatusHelper.ts"],
3
+ "sources": ["../../dpr/utils/requestStatusHelper.ts"],
4
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
5
  "mappings": "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",
6
6
  "names": ["dayjs", "customParse", "localsHelper", "logger", "ErrorHandler"]
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../src/dpr/utils/sanitisedError.ts"],
3
+ "sources": ["../../dpr/utils/sanitisedError.ts"],
4
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
5
  "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAaO,SAAS,SAAS,OAAyC;AAChE,MAAI,MAAM,UAAU;AAClB,WAAO;AAAA,MACL,MAAM,MAAM,SAAS;AAAA,MACrB,QAAQ,MAAM,SAAS;AAAA,MACvB,SAAS,MAAM,SAAS;AAAA,MACxB,MAAM,MAAM,SAAS;AAAA,MACrB,SAAS,MAAM;AAAA,MACf,OAAO,MAAM;AAAA,IACf;AAAA,EACF;AACA,SAAO;AAAA,IACL,SAAS,MAAM;AAAA,IACf,OAAO,MAAM;AAAA,EACf;AACF;AAEA,IAAO,yBAAQ;",
6
6
  "names": []
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../src/dpr/utils/urlHelper.ts"],
3
+ "sources": ["../../dpr/utils/urlHelper.ts"],
4
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
5
  "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,kBAA2B;AAIpB,MAAM,mBAAmB;AAEzB,MAAM,yBAAyB,CACpC,oBACA,mBACA,WACG;AACH,MAAI;AAEJ,MAAI,mBAAmB;AACrB,kBAAc;AAAA,MACZ,GAAG;AAAA,MACH,cAAc;AAAA,IAChB;AAEA,WAAO,KAAK,iBAAiB,EAAE,QAAQ,CAAC,MAAM;AAC5C,UAAI,kBAAkB,CAAC,GAAG;AACxB,oBAAY,CAAC,IAAI,kBAAkB,CAAC;AAAA,MACtC,OAAO;AACL,eAAO,KAAK,WAAW,EACpB,OAAO,CAAC,QAAQ,QAAQ,KAAK,IAAI,WAAW,GAAG,CAAC,GAAG,CAAC,EACpD,QAAQ,CAAC,QAAQ;AAChB,sBAAY,GAAG,IAAI;AAAA,QACrB,CAAC;AAAA,MACL;AAAA,IACF,CAAC;AAAA,EACH,OAAO;AACL,kBAAc;AAAA,MACZ,cAAc;AAAA,MACd,UAAU,mBAAmB,UAAU;AAAA,MACvC,YAAY,mBAAmB,YAAY;AAAA,MAC3C,WAAW,mBAAmB,WAAW;AAAA,MACzC,4BAA4B,mBAAmB,4BAA4B;AAAA,IAC7E;AAAA,EACF;AAEA,QAAM,sBAA2D,CAAC;AAElE,SAAO,KAAK,WAAW,EACpB,OAAO,CAAC,QAAQ,YAAY,GAAG,CAAC,EAChC,QAAQ,CAAC,QAAQ;AAChB,wBAAoB,GAAG,IAAI,YAAY,GAAG;AAAA,EAC5C,CAAC;AAEH,SAAO,4BAA4B,qBAAqB,MAAM;AAChE;AAEO,MAAM,8BAA8B,CACzC,QACA,WACG;AACH,QAAM,cAAc,OAAO,KAAK,MAAM,EACnC,QAAQ,CAAC,QAAgB;AACxB,UAAM,WAAW,QAAQ,KAAK,CAAC,MAAM,WAAW,EAAE,IAAI,OAAO,GAAG;AAChE,UAAM,QAAQ,OAAO,GAAG,KAAK;AAE7B,QAAI,MAAM,QAAQ,KAAK,GAAG;AACxB,aAAO,MAAM,IAAI,CAAC,MAAM,GAAG,UAAU,GAAG,CAAC,IAAI,UAAU,CAAC,CAAC,EAAE;AAAA,IAC7D;AAEA,QAAI,YAAY,SAAS,UAAU,SAAS,OAAO,KAAK,YAAY,MAAM,uBAAW,YAAY,YAAY,GAAG;AAC9G,YAAM,SAAS,MAAM,MAAM,GAAG;AAC9B,aAAO,OAAO,IAAI,CAAC,MAAM;AACvB,eAAO,GAAG,UAAU,GAAG,CAAC,IAAI,UAAU,CAAC,CAAC;AAAA,MAC1C,CAAC;AAAA,IACH;AAEA,WAAO,CAAC,GAAG,UAAU,GAAG,CAAC,IAAI,UAAU,KAAK,CAAC,EAAE;AAAA,EACjD,CAAC,EACA,KAAK,GAAG;AAEX,SAAO,IAAI,WAAW;AACxB;AAEO,MAAM,mBAAmB,CAAC,aAAqB;AACpD,MAAI,YAAY,aAAa,IAAI;AAC/B,WAAO,+BAA+B,QAAQ;AAAA,EAChD;AAEA,SAAO;AACT;AAEO,MAAM,iBAAiB,CAAC,WAAuB;AACpD,MAAI,SAAS,QAAQ;AACrB,MAAI,CAAC,QAAQ;AACX,aAAS;AAAA,EACX;AACA,MAAI,WAAW,OAAO;AACpB,aAAS;AAAA,EACX;AACA,SAAO;AACT;AAEA,IAAO,oBAAQ;",
6
6
  "names": []
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../src/dpr/validation/validate.ts"],
3
+ "sources": ["../../dpr/validation/validate.ts"],
4
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
5
  "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,iBAAc;AAEP,MAAM,WACX,CAAC,WACD,CAAC,KAAK,KAAK,SAAS;AAClB,QAAM,SAAS,OAAO,UAAU,IAAI,IAAI;AACxC,MAAI,OAAO,SAAS;AAClB,WAAO,KAAK;AAAA,EACd;AAEA,QAAM,SAAS,OAAO,QAAQ,WAAAA,QAAE,aAAa,OAAO,KAAK,EAAE,WAAW,EAAE;AAAA,IACtE,CAAC,CAAC,WAAW,GAAG,OAA0B;AAAA,MACxC,MAAM,IAAI,SAAS;AAAA,MACnB,MAAM,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,IAAI;AAAA,IACtC;AAAA,EACF;AACA,MAAI,MAAM,cAAc,KAAK,UAAU,MAAM,CAAC;AAC9C,SAAO,IAAI,SAAS,GAAG,IAAI,OAAO,GAAG;AACvC;",
6
6
  "names": ["z"]
package/package.json CHANGED
@@ -1,8 +1,8 @@
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.28.0",
5
- "main": "dpr/all.mjs",
4
+ "version": "4.28.2",
5
+ "main": "dpr/all",
6
6
  "sass": "dpr/all.scss",
7
7
  "engines": {
8
8
  "node": "^22 || ^24",
@@ -48,9 +48,9 @@
48
48
  "test:packaging": "npm run package",
49
49
  "wiremock": "concurrently -p \"[{name}]\" -n \"Wiremock,SetupMocks\" -c \"yellow.bold,cyan.bold\" \"wiremock --verbose --port=9091\" \"wait-on http-get://localhost:9091/__admin/health && tsx ./_networkMocks/setupMocks.ts\"",
50
50
  "start-test-app": "npm run package && node $NODE_OPTIONS test-app/start-server.js",
51
- "start:dev": "USE_MOCK_CLIENTS=true concurrently -k -p \"[{name}]\" -n \"ESBuild,Node\" -c \"yellow.bold,cyan.bold\" \"node esbuild/esbuild.config.js --build --watch\" \"node esbuild/esbuild.config.js --dev-server\"",
52
- "start:dev:noMockClients": "concurrently -k -p \"[{name}]\" -n \"ESBuild,Node\" -c \"yellow.bold,cyan.bold\" \"node esbuild/esbuild.config.js --build --watch\" \"node esbuild/esbuild.config.js --dev-server\"",
53
- "start:dev:noMockClients:noLogs": "SUPPRESS_LOGS=true concurrently -k -p \"[{name}]\" -n \"ESBuild,Node\" -c \"yellow.bold,cyan.bold\" \"node esbuild/esbuild.config.js --build --watch\" \"node esbuild/esbuild.config.js --dev-server\"",
51
+ "start:dev": "NODE_OPTIONS=\"--enable-source-maps\" USE_MOCK_CLIENTS=true concurrently -k -p \"[{name}]\" -n \"ESBuild,Node\" -c \"yellow.bold,cyan.bold\" \"node esbuild/esbuild.config.js --build --watch\" \"node esbuild/esbuild.config.js --dev-server\"",
52
+ "start:dev:noMockClients": "NODE_OPTIONS=\"--enable-source-maps\" concurrently -k -p \"[{name}]\" -n \"ESBuild,Node\" -c \"yellow.bold,cyan.bold\" \"node esbuild/esbuild.config.js --build --watch\" \"node esbuild/esbuild.config.js --dev-server\"",
53
+ "start:dev:noMockClients:noLogs": "NODE_OPTIONS=\"--enable-source-maps\" SUPPRESS_LOGS=true concurrently -k -p \"[{name}]\" -n \"ESBuild,Node\" -c \"yellow.bold,cyan.bold\" \"node esbuild/esbuild.config.js --build --watch\" \"node esbuild/esbuild.config.js --dev-server\"",
54
54
  "start:server": "node esbuild/esbuild.config.js --dev-server",
55
55
  "security_audit": "npx audit-ci --config audit-ci.json",
56
56
  "int-test-cucumber": "cypress run --config-file cypress-tests/integration-tests/cypress.config.js",
@@ -137,6 +137,11 @@
137
137
  "prettier --write"
138
138
  ]
139
139
  },
140
+ "overrides": {
141
+ "mocha": {
142
+ "diff": "^8.0.3"
143
+ }
144
+ },
140
145
  "dependencies": {
141
146
  "@flipt-io/flipt": "^1.5.0",
142
147
  "@ministryofjustice/frontend": "^6.0.0",
@@ -192,7 +197,6 @@
192
197
  "audit-ci": "^6.6.1",
193
198
  "autoprefixer": "^10.4.15",
194
199
  "axe-core": "^4.9.0",
195
- "cssnano": "^6.0.1",
196
200
  "cypress": "^14.5.4",
197
201
  "cypress-axe": "^1.6.0",
198
202
  "cypress-multi-reporters": "^2.0.5",