@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,5 +1,6 @@
1
+ // @ts-nocheck
1
2
  /* eslint-disable class-methods-use-this */
2
- import DprPollingStatusClass from '../../../DprPollingStatusClass.mjs'
3
+ import DprPollingStatusClass from '../../../DprPollingStatusClass'
3
4
 
4
5
  class DprRecentlyViewedList extends DprPollingStatusClass {
5
6
  static getModuleName() {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../../../src/dpr/components/user-reports/viewed/utils.ts"],
3
+ "sources": ["../../../../dpr/components/user-reports/viewed/utils.ts"],
4
4
  "sourcesContent": ["import { RequestStatus, UserReportData } from '../../../types/UserReports'\n\nexport const filterReports = (report: UserReportData) => {\n return Boolean(\n report.status === RequestStatus.READY ||\n Boolean(report.executionId?.length && report.status === RequestStatus.EXPIRED),\n )\n}\n\nexport default {\n filterReports,\n}\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,yBAA8C;AAEvC,MAAM,gBAAgB,CAAC,WAA2B;AACvD,SAAO;AAAA,IACL,OAAO,WAAW,iCAAc,SAC9B,QAAQ,OAAO,aAAa,UAAU,OAAO,WAAW,iCAAc,OAAO;AAAA,EACjF;AACF;AAEA,IAAO,gBAAQ;AAAA,EACb;AACF;",
6
6
  "names": []
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../src/dpr/data/agentConfig.ts"],
3
+ "sources": ["../../dpr/data/agentConfig.ts"],
4
4
  "sourcesContent": ["class AgentConfig {\n timeout: number\n\n constructor(timeout = 8000) {\n this.timeout = timeout\n }\n}\n\nexport { AgentConfig }\nexport default AgentConfig\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAAM,YAAY;AAAA,EAChB;AAAA,EAEA,YAAY,UAAU,KAAM;AAC1B,SAAK,UAAU;AAAA,EACjB;AACF;AAGA,IAAO,sBAAQ;",
6
6
  "names": []
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../src/dpr/data/dashboardClient.ts"],
3
+ "sources": ["../../dpr/data/dashboardClient.ts"],
4
4
  "sourcesContent": ["import logger from '../utils/logger'\nimport RestClient from './restClient'\nimport Dict = NodeJS.Dict\nimport { ApiConfig } from './types'\nimport { components } from '../types/api'\nimport { DashboardDataResponse } from '../types/Metrics'\n\nclass DashboardClient {\n restClient: RestClient\n\n constructor(config: ApiConfig) {\n this.restClient = new RestClient('Dashboard API Client', config)\n }\n\n getDefinition(\n token: string,\n dashboardId: string,\n dpdId: string,\n definitionsPath?: string,\n queryData?: Dict<string | string[]> | undefined,\n ): Promise<components['schemas']['DashboardDefinition']> {\n const query = {\n ...queryData,\n dataProductDefinitionsPath: definitionsPath,\n }\n this.logInfo('Get definition:', { dpdId, dashboardId, ...query })\n\n return this.restClient\n .get({\n path: `/definitions/${dpdId}/dashboards/${dashboardId}`,\n query,\n token,\n })\n .then((response) => <components['schemas']['DashboardDefinition']>response)\n }\n\n requestAsyncDashboard(\n token: string,\n reportId: string,\n dashboardId: string,\n query: Record<string, string | boolean | number>,\n ): Promise<Dict<string>> {\n this.logInfo('Request dashboard:', { reportId, dashboardId })\n\n return this.restClient\n .get({\n path: `/async/dashboards/${reportId}/${dashboardId}`,\n token,\n query,\n })\n .then((response) => <Dict<string>>response)\n }\n\n getAsyncDashboard(\n token: string,\n reportId: string,\n dashboardId: string,\n tableId: string,\n query: Record<string, string | string[]>,\n ): Promise<DashboardDataResponse[][]> {\n this.logInfo('Get dashboard:', { reportId, dashboardId, tableId })\n\n return this.restClient\n .get({\n path: `/reports/${reportId}/dashboards/${dashboardId}/tables/${tableId}/result`,\n token,\n query,\n })\n .then((response) => <DashboardDataResponse[][]>response)\n }\n\n getAsyncStatus(\n token: string,\n reportId: string,\n dashboardId: string,\n executionId: string,\n tableId?: string,\n dataProductDefinitionsPath?: string,\n ): Promise<components['schemas']['StatementExecutionStatus']> {\n this.logInfo('Get status:', { reportId, dashboardId, executionId, tableId })\n\n return this.restClient\n .get({\n path: `/reports/${reportId}/dashboards/${dashboardId}/statements/${executionId}/status`,\n token,\n query: {\n dataProductDefinitionsPath,\n tableId,\n },\n })\n .then((response) => <components['schemas']['StatementExecutionStatus']>response)\n }\n\n cancelAsyncRequest(\n token: string,\n reportId: string,\n dashboardId: string,\n executionId: string,\n dataProductDefinitionsPath?: string,\n ): Promise<Dict<string>> {\n this.logInfo('Cancel request:', { reportId, dashboardId, executionId })\n\n return this.restClient\n .delete({\n path: `/reports/${reportId}/dashboards/${dashboardId}/statements/${executionId}`,\n token,\n query: {\n dataProductDefinitionsPath,\n },\n })\n .then((response) => <Dict<string>>response)\n }\n\n getSyncDashboard(\n token: string,\n reportId: string,\n dashboardId: string,\n query: Record<string, string | string[]>,\n ): Promise<DashboardDataResponse[][]> {\n this.logInfo('Get dashboard:', { reportId, dashboardId })\n\n return this.restClient\n .get({\n path: `/reports/${reportId}/dashboards/${dashboardId}`,\n token,\n query,\n })\n .then((response) => <DashboardDataResponse[][]>response)\n }\n\n logInfo(title: string, args?: Dict<string>) {\n logger.info(`Dashboard client: ${title}:`)\n if (args && Object.keys(args).length) logger.info(JSON.stringify(args, null, 2))\n }\n}\n\nexport { DashboardClient }\nexport default DashboardClient\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAAmB;AACnB,wBAAuB;AAMvB,MAAM,gBAAgB;AAAA,EACpB;AAAA,EAEA,YAAY,QAAmB;AAC7B,SAAK,aAAa,IAAI,kBAAAA,QAAW,wBAAwB,MAAM;AAAA,EACjE;AAAA,EAEA,cACE,OACA,aACA,OACA,iBACA,WACuD;AACvD,UAAM,QAAQ;AAAA,MACZ,GAAG;AAAA,MACH,4BAA4B;AAAA,IAC9B;AACA,SAAK,QAAQ,mBAAmB,EAAE,OAAO,aAAa,GAAG,MAAM,CAAC;AAEhE,WAAO,KAAK,WACT,IAAI;AAAA,MACH,MAAM,gBAAgB,KAAK,eAAe,WAAW;AAAA,MACrD;AAAA,MACA;AAAA,IACF,CAAC,EACA,KAAK,CAAC,aAA2D,QAAQ;AAAA,EAC9E;AAAA,EAEA,sBACE,OACA,UACA,aACA,OACuB;AACvB,SAAK,QAAQ,sBAAsB,EAAE,UAAU,YAAY,CAAC;AAE5D,WAAO,KAAK,WACT,IAAI;AAAA,MACH,MAAM,qBAAqB,QAAQ,IAAI,WAAW;AAAA,MAClD;AAAA,MACA;AAAA,IACF,CAAC,EACA,KAAK,CAAC,aAA2B,QAAQ;AAAA,EAC9C;AAAA,EAEA,kBACE,OACA,UACA,aACA,SACA,OACoC;AACpC,SAAK,QAAQ,kBAAkB,EAAE,UAAU,aAAa,QAAQ,CAAC;AAEjE,WAAO,KAAK,WACT,IAAI;AAAA,MACH,MAAM,YAAY,QAAQ,eAAe,WAAW,WAAW,OAAO;AAAA,MACtE;AAAA,MACA;AAAA,IACF,CAAC,EACA,KAAK,CAAC,aAAwC,QAAQ;AAAA,EAC3D;AAAA,EAEA,eACE,OACA,UACA,aACA,aACA,SACA,4BAC4D;AAC5D,SAAK,QAAQ,eAAe,EAAE,UAAU,aAAa,aAAa,QAAQ,CAAC;AAE3E,WAAO,KAAK,WACT,IAAI;AAAA,MACH,MAAM,YAAY,QAAQ,eAAe,WAAW,eAAe,WAAW;AAAA,MAC9E;AAAA,MACA,OAAO;AAAA,QACL;AAAA,QACA;AAAA,MACF;AAAA,IACF,CAAC,EACA,KAAK,CAAC,aAAgE,QAAQ;AAAA,EACnF;AAAA,EAEA,mBACE,OACA,UACA,aACA,aACA,4BACuB;AACvB,SAAK,QAAQ,mBAAmB,EAAE,UAAU,aAAa,YAAY,CAAC;AAEtE,WAAO,KAAK,WACT,OAAO;AAAA,MACN,MAAM,YAAY,QAAQ,eAAe,WAAW,eAAe,WAAW;AAAA,MAC9E;AAAA,MACA,OAAO;AAAA,QACL;AAAA,MACF;AAAA,IACF,CAAC,EACA,KAAK,CAAC,aAA2B,QAAQ;AAAA,EAC9C;AAAA,EAEA,iBACE,OACA,UACA,aACA,OACoC;AACpC,SAAK,QAAQ,kBAAkB,EAAE,UAAU,YAAY,CAAC;AAExD,WAAO,KAAK,WACT,IAAI;AAAA,MACH,MAAM,YAAY,QAAQ,eAAe,WAAW;AAAA,MACpD;AAAA,MACA;AAAA,IACF,CAAC,EACA,KAAK,CAAC,aAAwC,QAAQ;AAAA,EAC3D;AAAA,EAEA,QAAQ,OAAe,MAAqB;AAC1C,kBAAAC,QAAO,KAAK,qBAAqB,KAAK,GAAG;AACzC,QAAI,QAAQ,OAAO,KAAK,IAAI,EAAE,OAAQ,eAAAA,QAAO,KAAK,KAAK,UAAU,MAAM,MAAM,CAAC,CAAC;AAAA,EACjF;AACF;AAGA,IAAO,0BAAQ;",
6
6
  "names": ["RestClient", "logger"]
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../src/dpr/data/dprReportingClient.ts"],
3
+ "sources": ["../../dpr/data/dprReportingClient.ts"],
4
4
  "sourcesContent": ["import ReportingClient from './reportingClient'\nimport DashboardClient from './dashboardClient'\nimport ReportDataStore, { RedisClient } from './reportDataStore'\nimport { ApiConfig, FeatureFlagConfig } from './types'\nimport { FeatureFlagService } from '../services/featureFlagService'\nimport ProductCollectionClient from './productCollectionClient'\nimport MissingReportClient from './missingReportClient'\n\nexport const initDprReportingClients = (\n reportingApiConfig: ApiConfig,\n redisClient: RedisClient,\n storePrefix?: string,\n featureFlagConfig?: FeatureFlagConfig,\n) => {\n return {\n reportingClient: new ReportingClient(reportingApiConfig),\n dashboardClient: new DashboardClient(reportingApiConfig),\n reportDataStore: new ReportDataStore(redisClient, storePrefix),\n missingReportClient: new MissingReportClient(reportingApiConfig),\n productCollectionClient: new ProductCollectionClient(reportingApiConfig),\n featureFlagService: new FeatureFlagService(featureFlagConfig),\n }\n}\n\nexport default initDprReportingClients\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,6BAA4B;AAC5B,6BAA4B;AAC5B,6BAA6C;AAE7C,gCAAmC;AACnC,qCAAoC;AACpC,iCAAgC;AAEzB,MAAM,0BAA0B,CACrC,oBACA,aACA,aACA,sBACG;AACH,SAAO;AAAA,IACL,iBAAiB,IAAI,uBAAAA,QAAgB,kBAAkB;AAAA,IACvD,iBAAiB,IAAI,uBAAAC,QAAgB,kBAAkB;AAAA,IACvD,iBAAiB,IAAI,uBAAAC,QAAgB,aAAa,WAAW;AAAA,IAC7D,qBAAqB,IAAI,2BAAAC,QAAoB,kBAAkB;AAAA,IAC/D,yBAAyB,IAAI,+BAAAC,QAAwB,kBAAkB;AAAA,IACvE,oBAAoB,IAAI,6CAAmB,iBAAiB;AAAA,EAC9D;AACF;AAEA,IAAO,6BAAQ;",
6
6
  "names": ["ReportingClient", "DashboardClient", "ReportDataStore", "MissingReportClient", "ProductCollectionClient"]
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../src/dpr/data/missingReportClient.ts"],
3
+ "sources": ["../../dpr/data/missingReportClient.ts"],
4
4
  "sourcesContent": ["import RestClient from './restClient'\nimport { ApiConfig } from './types'\nimport { components } from '../types/api'\n\nclass MissingReportClient {\n restClient: RestClient\n\n constructor(config: ApiConfig) {\n this.restClient = new RestClient('Missing report API Client', config)\n }\n\n submitMissingReportEntry(\n token: string,\n reportId: string,\n variantId: string,\n reason?: string,\n ): Promise<components['schemas']['MissingReportSubmission']> {\n return this.restClient.post(\n {\n path: `/missingRequest/${reportId}/${variantId}`,\n ...(reason && { data: reason }),\n },\n token,\n )\n }\n}\n\nexport { MissingReportClient }\nexport default MissingReportClient\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wBAAuB;AAIvB,MAAM,oBAAoB;AAAA,EACxB;AAAA,EAEA,YAAY,QAAmB;AAC7B,SAAK,aAAa,IAAI,kBAAAA,QAAW,6BAA6B,MAAM;AAAA,EACtE;AAAA,EAEA,yBACE,OACA,UACA,WACA,QAC2D;AAC3D,WAAO,KAAK,WAAW;AAAA,MACrB;AAAA,QACE,MAAM,mBAAmB,QAAQ,IAAI,SAAS;AAAA,QAC9C,GAAI,UAAU,EAAE,MAAM,OAAO;AAAA,MAC/B;AAAA,MACA;AAAA,IACF;AAAA,EACF;AACF;AAGA,IAAO,8BAAQ;",
6
6
  "names": ["RestClient"]
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../src/dpr/data/productCollectionClient.ts"],
3
+ "sources": ["../../dpr/data/productCollectionClient.ts"],
4
4
  "sourcesContent": ["import { ApiConfig } from './types'\nimport { components } from '../types/api'\nimport RestClient from './restClient'\n\nclass ProductCollectionClient {\n restClient: RestClient\n\n constructor(config: ApiConfig) {\n this.restClient = new RestClient('ProductCollection API', config)\n }\n\n async getProductCollections(token: string): Promise<components['schemas']['ProductCollectionSummary'][]> {\n return this.restClient.get({\n path: `/productCollections`,\n token,\n })\n }\n\n async getProductCollection(token: string, id: string): Promise<components['schemas']['ProductCollectionDTO']> {\n return this.restClient.get({\n path: `/productCollections/${id}`,\n token,\n })\n }\n}\n\nexport { ProductCollectionClient }\nexport default ProductCollectionClient\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,wBAAuB;AAEvB,MAAM,wBAAwB;AAAA,EAC5B;AAAA,EAEA,YAAY,QAAmB;AAC7B,SAAK,aAAa,IAAI,kBAAAA,QAAW,yBAAyB,MAAM;AAAA,EAClE;AAAA,EAEA,MAAM,sBAAsB,OAA6E;AACvG,WAAO,KAAK,WAAW,IAAI;AAAA,MACzB,MAAM;AAAA,MACN;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,qBAAqB,OAAe,IAAoE;AAC5G,WAAO,KAAK,WAAW,IAAI;AAAA,MACzB,MAAM,uBAAuB,EAAE;AAAA,MAC/B;AAAA,IACF,CAAC;AAAA,EACH;AACF;AAGA,IAAO,kCAAQ;",
6
6
  "names": ["RestClient"]
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../src/dpr/data/reportDataStore.ts"],
3
+ "sources": ["../../dpr/data/reportDataStore.ts"],
4
4
  "sourcesContent": ["// eslint-disable-next-line import/no-extraneous-dependencies\nimport { createClient } from 'redis'\nimport logger from '../utils/logger'\nimport { ReportStoreConfig } from '../types/ReportStore'\n\nexport type RedisClient = ReturnType<typeof createClient>\n\nclass ReportDataStore {\n prefix: string\n\n constructor(private readonly redisClient: RedisClient, prefix = 'dprReportStoreUser:') {\n redisClient.on('error', (error) => {\n logger.error(error, `Redis error`)\n })\n this.prefix = prefix\n }\n\n private async ensureConnected() {\n if (!this.redisClient.isOpen) {\n await this.redisClient.connect()\n }\n }\n\n public async setUserConfig(userId: string, config: ReportStoreConfig): Promise<void> {\n await this.ensureConnected()\n await this.redisClient.set(`${this.prefix}${userId}`, JSON.stringify(config))\n }\n\n public async getUserConfig(userId: string): Promise<ReportStoreConfig> {\n await this.ensureConnected()\n const userConfig = await this.redisClient.get(`${this.prefix}${userId}`)\n return userConfig ? JSON.parse(String(userConfig)) : this.setBaseplate(userId)\n }\n\n private async setBaseplate(userId: string) {\n logger.info(`Initialising new DPR user config in store. prefix: ${this.prefix}`)\n const userConfig = { ...baseplateStore }\n await this.setUserConfig(userId, userConfig)\n return { ...baseplateStore }\n }\n}\n\nconst baseplateStore: ReportStoreConfig = {\n requestedReports: [],\n recentlyViewedReports: [],\n bookmarks: [],\n downloadPermissions: [],\n defaultFilters: [],\n}\n\nexport { ReportDataStore }\nexport default ReportDataStore\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,oBAAmB;AAKnB,MAAM,gBAAgB;AAAA,EAGpB,YAA6B,aAA0B,SAAS,uBAAuB;AAA1D;AAC3B,gBAAY,GAAG,SAAS,CAAC,UAAU;AACjC,oBAAAA,QAAO,MAAM,OAAO,aAAa;AAAA,IACnC,CAAC;AACD,SAAK,SAAS;AAAA,EAChB;AAAA,EAPA;AAAA,EASA,MAAc,kBAAkB;AAC9B,QAAI,CAAC,KAAK,YAAY,QAAQ;AAC5B,YAAM,KAAK,YAAY,QAAQ;AAAA,IACjC;AAAA,EACF;AAAA,EAEA,MAAa,cAAc,QAAgB,QAA0C;AACnF,UAAM,KAAK,gBAAgB;AAC3B,UAAM,KAAK,YAAY,IAAI,GAAG,KAAK,MAAM,GAAG,MAAM,IAAI,KAAK,UAAU,MAAM,CAAC;AAAA,EAC9E;AAAA,EAEA,MAAa,cAAc,QAA4C;AACrE,UAAM,KAAK,gBAAgB;AAC3B,UAAM,aAAa,MAAM,KAAK,YAAY,IAAI,GAAG,KAAK,MAAM,GAAG,MAAM,EAAE;AACvE,WAAO,aAAa,KAAK,MAAM,OAAO,UAAU,CAAC,IAAI,KAAK,aAAa,MAAM;AAAA,EAC/E;AAAA,EAEA,MAAc,aAAa,QAAgB;AACzC,kBAAAA,QAAO,KAAK,sDAAsD,KAAK,MAAM,EAAE;AAC/E,UAAM,aAAa,EAAE,GAAG,eAAe;AACvC,UAAM,KAAK,cAAc,QAAQ,UAAU;AAC3C,WAAO,EAAE,GAAG,eAAe;AAAA,EAC7B;AACF;AAEA,MAAM,iBAAoC;AAAA,EACxC,kBAAkB,CAAC;AAAA,EACnB,uBAAuB,CAAC;AAAA,EACxB,WAAW,CAAC;AAAA,EACZ,qBAAqB,CAAC;AAAA,EACtB,gBAAgB,CAAC;AACnB;AAGA,IAAO,0BAAQ;",
6
6
  "names": ["logger"]
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../src/dpr/data/reportingClient.ts"],
3
+ "sources": ["../../dpr/data/reportingClient.ts"],
4
4
  "sourcesContent": ["import ReportQuery from '../types/ReportQuery'\nimport logger from '../utils/logger'\nimport RestClient from './restClient'\nimport Dict = NodeJS.Dict\nimport { components, operations } from '../types/api'\nimport { ApiConfig, Count, ListWithWarnings } from './types'\nimport type { ResultWithHeaders } from './restClient'\n\nclass ReportingClient {\n restClient: RestClient\n\n constructor(config: ApiConfig) {\n this.restClient = new RestClient('Reporting API Client', config)\n }\n\n getCount(resourceName: string, token: string, countRequest: ReportQuery): Promise<number> {\n logger.info(`Reporting client: Get count. { resourceName: ${resourceName} }`)\n\n return this.restClient\n .get({\n path: `/${resourceName}/count`,\n query: countRequest.toRecordWithFilterPrefix(true),\n token,\n })\n .then((response) => (<Count>response).count)\n }\n\n getList(resourceName: string, token: string, listRequest: ReportQuery): Promise<Array<Dict<string>>> {\n return this.getListWithWarnings(resourceName, token, listRequest).then((response) => response.data)\n }\n\n getListWithWarnings(resourceName: string, token: string, listRequest: ReportQuery): Promise<ListWithWarnings> {\n logger.info(`Reporting client: Get list. { resourceName: ${resourceName} }`)\n\n return this.restClient\n .getWithHeaders<Array<Dict<string>>>({\n path: `/${resourceName}`,\n query: listRequest.toRecordWithFilterPrefix(true),\n token,\n })\n .then((response: ResultWithHeaders<Array<Dict<string>>>) => ({\n data: response.data,\n warnings: {\n noDataAvailable: response.headers['x-no-data-warning'],\n },\n }))\n }\n\n getDefinitionSummary(\n token: string,\n reportId: string,\n definitionsPath?: string,\n ): Promise<components['schemas']['ReportDefinitionSummary']> {\n this.logInfo('Get definition summary', { reportId })\n\n const queryParams: operations['definitionSummary']['parameters']['query'] = {\n ...(definitionsPath && { dataProductDefinitionsPath: definitionsPath }),\n }\n\n return this.restClient\n .get({\n path: `/definitions/${reportId}`,\n query: queryParams,\n token,\n })\n .then((response) => <components['schemas']['ReportDefinitionSummary']>response)\n }\n\n getDefinitions(\n token: string,\n definitionsPath?: string,\n ): Promise<Array<components['schemas']['ReportDefinitionSummary']>> {\n this.logInfo('Get definitions')\n\n const queryParams: operations['definitions_1']['parameters']['query'] = {\n renderMethod: 'HTML',\n ...(definitionsPath && { dataProductDefinitionsPath: definitionsPath }),\n }\n\n return this.restClient\n .get({\n path: '/definitions',\n query: queryParams,\n token,\n })\n .then((response) => <Array<components['schemas']['ReportDefinitionSummary']>>response)\n }\n\n getDefinition(\n token: string,\n reportId: string,\n variantId: string,\n definitionsPath?: string,\n queryData?: Dict<string | string[]>,\n ): Promise<components['schemas']['SingleVariantReportDefinition']> {\n const query = {\n ...queryData,\n dataProductDefinitionsPath: definitionsPath,\n }\n\n this.logInfo('Get definition', { reportId, variantId, ...query })\n\n return this.restClient\n .get({\n path: `/definitions/${reportId}/${variantId}`,\n query,\n token,\n })\n .then((response) => <components['schemas']['SingleVariantReportDefinition']>response)\n }\n\n requestAsyncReport(\n token: string,\n reportId: string,\n variantId: string,\n query: Record<string, string | boolean | number>,\n ): Promise<Dict<string>> {\n this.logInfo('Request report', { reportId, variantId })\n\n return this.restClient\n .get({\n path: `/async/reports/${reportId}/${variantId}`,\n token,\n query,\n })\n .then((response) => <Dict<string>>response)\n }\n\n cancelAsyncRequest(\n token: string,\n reportId: string,\n variantId: string,\n executionId: string,\n dataProductDefinitionsPath?: string,\n ): Promise<Dict<string>> {\n this.logInfo('Cancel Request', { reportId, variantId, executionId })\n\n return this.restClient\n .delete({\n path: `/reports/${reportId}/${variantId}/statements/${executionId}`,\n token,\n query: {\n dataProductDefinitionsPath,\n },\n })\n .then((response) => <Dict<string>>response)\n }\n\n getAsyncReport(\n token: string,\n reportId: string,\n variantId: string,\n tableId: string,\n query: Record<string, string | string[]>,\n ): Promise<Array<Dict<string>>> {\n this.logInfo('Get Data', { reportId, variantId, tableId })\n\n return this.restClient\n .get({\n path: `/reports/${reportId}/${variantId}/tables/${tableId}/result`,\n token,\n query,\n })\n .then((response) => <Array<Dict<string>>>response)\n }\n\n getAsyncSummaryReport(\n token: string,\n reportId: string,\n variantId: string,\n tableId: string,\n summaryId: string,\n query: Dict<string | number>,\n ): Promise<Array<Dict<string>>> {\n this.logInfo('Get summary data', { reportId, variantId, tableId, summaryId })\n\n return this.restClient\n .get({\n path: `/reports/${reportId}/${variantId}/tables/${tableId}/result/summary/${summaryId}`,\n token,\n query,\n })\n .then((response) => <Array<Dict<string>>>response)\n }\n\n getAsyncReportStatus(\n token: string,\n reportId: string,\n variantId: string,\n executionId: string,\n dataProductDefinitionsPath?: string,\n tableId?: string,\n ): Promise<components['schemas']['StatementExecutionStatus']> {\n this.logInfo('Get status', { reportId, variantId, tableId, executionId })\n\n return this.restClient\n .get({\n path: `/reports/${reportId}/${variantId}/statements/${executionId}/status`,\n token,\n query: {\n dataProductDefinitionsPath,\n tableId,\n },\n })\n .then((response) => <components['schemas']['StatementExecutionStatus']>response)\n }\n\n getAsyncCount(token: string, tableId: string, dataProductDefinitionsPath?: string): Promise<number> {\n this.logInfo('Get count', { tableId })\n\n return this.restClient\n .get({\n path: `/report/tables/${tableId}/count`,\n token,\n query: {\n dataProductDefinitionsPath,\n },\n })\n .then((response) => (<Count>response).count)\n }\n\n getAsyncInteractiveCount(\n token: string,\n tableId: string,\n reportId: string,\n id: string,\n filters: ReportQuery,\n ): Promise<number> {\n this.logInfo('Get interactive count', { tableId, reportId, id })\n\n return this.restClient\n .get({\n path: `/reports/${reportId}/${id}/tables/${tableId}/count`,\n token,\n query: filters.toRecordWithFilterPrefix(true),\n })\n .then((response) => (<Count>response).count)\n }\n\n logInfo(title: string, args?: Dict<string>) {\n logger.info(`Reporting Client: ${title}:`)\n if (args && Object.keys(args).length) logger.info(JSON.stringify(args, null, 2))\n }\n}\n\nexport { ReportingClient }\nexport default ReportingClient\n"],
5
5
  "mappings": "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",
6
6
  "names": ["RestClient", "logger"]
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../src/dpr/data/restClient.ts"],
3
+ "sources": ["../../dpr/data/restClient.ts"],
4
4
  "sourcesContent": ["import superagent, { ResponseError } from 'superagent'\nimport Agent, { HttpsAgent } from 'agentkeepalive'\n\nimport logger from '../utils/logger'\nimport sanitiseError from '../utils/sanitisedError'\nimport { ApiConfig, GetRequest } from './types'\nimport Dict = NodeJS.Dict\n\nexport interface ResultWithHeaders<T> {\n data: T\n headers: Dict<string>\n}\n\ninterface Request {\n path: string\n query?: object | string\n headers?: Record<string, string>\n responseType?: string\n raw?: boolean\n}\ninterface RequestWithBody extends Request {\n data?: Record<string, unknown> | string\n retry?: boolean\n}\n\nclass RestClient {\n agent: Agent\n\n constructor(private readonly name: string, private readonly config: ApiConfig) {\n this.agent = config.url.startsWith('https') ? new HttpsAgent(config.agent) : new Agent(config.agent)\n }\n\n private apiUrl() {\n return this.config.url\n }\n\n private timeoutConfig() {\n return this.config.agent.timeout\n }\n\n async get<T>(request: GetRequest): Promise<T> {\n return this.getWithHeaders<T>(request).then((result) => result.data)\n }\n\n private async requestWithBody<Response = unknown>(\n method: 'patch' | 'post' | 'put',\n { path, query = {}, headers = {}, responseType = '', data = {}, raw = false, retry = false }: RequestWithBody,\n token: string,\n ): Promise<Response> {\n logger.info(`${this.name} ${method.toUpperCase()}: ${path}`)\n logger.info(`info about request: ${method} | ${path} | ${JSON.stringify(data)} | ${query}`)\n try {\n const result = await superagent[method](`${this.apiUrl()}${path}`)\n .query(query)\n .send(data)\n .agent(this.agent)\n .retry(2, (err) => {\n if (retry === false) {\n return false\n }\n if (err) logger.info(`Retry handler found API error with ${err.code} ${err.message}`)\n return undefined // retry handler only for logging retries, not to influence retry logic\n })\n .auth(token, { type: 'bearer' })\n .set(headers)\n .responseType(responseType)\n .timeout(this.timeoutConfig())\n\n return raw ? (result as Response) : result.body\n } catch (error) {\n if (!(error instanceof Error)) {\n throw error\n }\n const sanitisedError = sanitiseError(error)\n logger.warn({ ...sanitisedError }, `Error calling ${this.name}, path: '${path}', verb: '${method.toUpperCase()}'`)\n throw sanitisedError\n }\n }\n\n async post<Response = unknown>(request: RequestWithBody, token: string): Promise<Response> {\n return this.requestWithBody('post', request, token)\n }\n\n async getWithHeaders<T>({\n path = '',\n query = {},\n headers = {},\n responseType = '',\n raw = false,\n token,\n }: GetRequest): Promise<ResultWithHeaders<T>> {\n const loggerData = {\n path: `${this.config.url}${path}`,\n query,\n }\n logger.info(`${this.name}: ${JSON.stringify(loggerData, null, 2)}`)\n try {\n const result = await superagent\n .get(`${this.apiUrl()}${path}`)\n .agent(this.agent)\n .retry(2, (err) => {\n if (err) logger.info(`Retry handler found API error with ${err.code} ${err.message}`)\n return undefined // retry handler only for logging retries, not to influence retry logic\n })\n .query(query)\n .auth(token, { type: 'bearer' })\n .set(headers)\n .responseType(responseType)\n .timeout(this.timeoutConfig())\n\n return {\n data: raw ? result : result.body,\n headers: result.headers,\n }\n } catch (error) {\n const sanitisedError = sanitiseError(<ResponseError>error)\n logger.warn({ ...sanitisedError, query }, `Error calling ${this.name}, path: '${path}', verb: 'GET'`)\n throw sanitisedError\n }\n }\n\n async deleteWithHeaders<T>({\n path = '',\n query = {},\n headers = {},\n responseType = '',\n raw = false,\n token,\n }: GetRequest): Promise<ResultWithHeaders<T>> {\n const loggerData = {\n path: `${this.config.url}${path}`,\n query,\n }\n logger.info(`${this.name}: ${JSON.stringify(loggerData, null, 2)}`)\n try {\n const result = await superagent\n .delete(`${this.apiUrl()}${path}`)\n .agent(this.agent)\n .retry(2, (err) => {\n if (err) logger.info(`Retry handler found API error with ${err.code} ${err.message}`)\n return undefined // retry handler only for logging retries, not to influence retry logic\n })\n .query(query)\n .auth(token, { type: 'bearer' })\n .set(headers)\n .responseType(responseType)\n .timeout(this.timeoutConfig())\n\n return {\n data: raw ? result : result.body,\n headers: result.headers,\n }\n } catch (error) {\n const sanitisedError = sanitiseError(<ResponseError>error)\n logger.warn({ ...sanitisedError, query }, `Error calling ${this.name}, path: '${path}', verb: 'GET'`)\n throw sanitisedError\n }\n }\n\n async delete<T>(request: GetRequest): Promise<T> {\n return this.deleteWithHeaders<T>(request).then((result) => result.data)\n }\n}\n\nexport { RestClient }\nexport default RestClient\n"],
5
5
  "mappings": "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",
6
6
  "names": ["Agent", "logger", "superagent", "sanitiseError"]
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../src/dpr/data/types.d.ts"],
3
+ "sources": ["../../dpr/data/types.d.ts"],
4
4
  "sourcesContent": ["import AgentConfig from './agentConfig'\nimport Dict = NodeJS.Dict\n\nexport interface GetRequest {\n path?: string\n query?: object\n headers?: Record<string, string>\n responseType?: string\n raw?: boolean\n token: string\n}\n\nexport interface FeatureFlagConfig {\n namespace: string\n token: string\n url: string\n}\n\nexport interface ApiConfig {\n url: string\n agent: AgentConfig\n}\n\nexport interface Count {\n count: number\n}\n\nexport interface ListWithWarnings {\n data: Array<Dict<string>>\n warnings: Warnings\n}\n\nexport interface Warnings {\n noDataAvailable?: string | undefined\n}\n\nexport interface FieldValuesRequest {\n token: string\n definitionName: string\n variantName: string\n fieldName: string\n prefix: string\n definitionsPath?: string\n}\n\nexport interface AsyncRequestQuery {\n sortColumn: string\n sortedAsc: boolean\n dataProductDefinitionsPath: string\n [key: string]: string | boolean\n}\n\ninterface filter {\n [filterId: string]: string\n}\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;AAAA;AAAA;",
6
6
  "names": []
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../src/dpr/middleware/reportAuthoriser.ts"],
3
+ "sources": ["../../dpr/middleware/reportAuthoriser.ts"],
4
4
  "sourcesContent": ["import { RequestHandler } from 'express'\nimport LocalsHelper from '../utils/localsHelper'\nimport { Services } from '../types/Services'\nimport { ReportType } from '../types/UserReports'\n\nexport const reportAuthoriser = (services: Services, layoutPath: string): RequestHandler => {\n return async (req, res, next) => {\n const { token } = LocalsHelper.getValues(res)\n const { reportId, id, variantId, type } = req.params\n const dataProductDefinitionsPath = <string | undefined>req.query['dataProductDefinitionsPath']\n\n const definitionSummary = await services.reportingService.getDefinitionSummary(\n token,\n reportId,\n dataProductDefinitionsPath,\n )\n\n const service = type === ReportType.REPORT ? services.reportingService : services.dashboardService\n res.locals['definition'] = await service.getDefinition(token, reportId, variantId || id, dataProductDefinitionsPath)\n\n if (definitionSummary?.authorised !== undefined && !definitionSummary.authorised) {\n res.render(`dpr/routes/journeys/view-report/unauthorised`, {\n layoutPath,\n ...req.body,\n })\n } else {\n next()\n }\n }\n}\n\nexport default reportAuthoriser\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,0BAAyB;AAEzB,yBAA2B;AAEpB,MAAM,mBAAmB,CAAC,UAAoB,eAAuC;AAC1F,SAAO,OAAO,KAAK,KAAK,SAAS;AAC/B,UAAM,EAAE,MAAM,IAAI,oBAAAA,QAAa,UAAU,GAAG;AAC5C,UAAM,EAAE,UAAU,IAAI,WAAW,KAAK,IAAI,IAAI;AAC9C,UAAM,6BAAiD,IAAI,MAAM,4BAA4B;AAE7F,UAAM,oBAAoB,MAAM,SAAS,iBAAiB;AAAA,MACxD;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAEA,UAAM,UAAU,SAAS,8BAAW,SAAS,SAAS,mBAAmB,SAAS;AAClF,QAAI,OAAO,YAAY,IAAI,MAAM,QAAQ,cAAc,OAAO,UAAU,aAAa,IAAI,0BAA0B;AAEnH,QAAI,mBAAmB,eAAe,UAAa,CAAC,kBAAkB,YAAY;AAChF,UAAI,OAAO,gDAAgD;AAAA,QACzD;AAAA,QACA,GAAG,IAAI;AAAA,MACT,CAAC;AAAA,IACH,OAAO;AACL,WAAK;AAAA,IACP;AAAA,EACF;AACF;AAEA,IAAO,2BAAQ;",
6
6
  "names": ["LocalsHelper"]
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../src/dpr/middleware/setUpDprResources.ts"],
3
+ "sources": ["../../dpr/middleware/setUpDprResources.ts"],
4
4
  "sourcesContent": ["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { RequestHandler, Response, Request, ErrorRequestHandler, NextFunction } from 'express'\nimport type { ParsedQs } from 'qs'\nimport { HTTPError } from 'superagent'\nimport type { Environment } from 'nunjucks'\nimport { captureException } from '@sentry/node'\nimport { Services } from '../types/Services'\nimport { RequestedReport, StoredReportData } from '../types/UserReports'\nimport DefinitionUtils from '../utils/definitionUtils'\nimport { BookmarkStoreData } from '../types/Bookmark'\nimport { DprConfig } from '../types/DprConfig'\nimport localsHelper from '../utils/localsHelper'\nimport { FeatureFlagService, isBooleanFlagEnabled } from '../services/featureFlagService'\n\nconst getQueryParamAsString = (query: ParsedQs, name: string) => (query[name] ? query[name].toString() : null)\nconst getDefinitionsPath = (query: ParsedQs) => getQueryParamAsString(query, 'dataProductDefinitionsPath')\n\nconst deriveDefinitionsPath = (query: ParsedQs): string | null => {\n const definitionsPath = getDefinitionsPath(query)\n if (definitionsPath) {\n return definitionsPath\n }\n\n return null\n}\n\nexport const errorRequestHandler =\n (layoutPath: string): ErrorRequestHandler =>\n (error: HTTPError, _req: Request, res: Response, next: NextFunction) => {\n if (error.status === 401 || error.status === 403) {\n return res.render('dpr/routes/authError.njk', {\n layoutPath,\n message: 'Sorry, there is a problem with authenticating your request',\n })\n }\n captureException(error)\n if (error.status >= 400) {\n return res.render('dpr/routes/serviceProblem.njk', {\n layoutPath,\n })\n }\n return next(error)\n }\n\nexport const setupResources = (\n services: Services,\n layoutPath: string,\n env: Environment,\n config?: DprConfig,\n): RequestHandler => {\n return async (req, res, next) => {\n populateValidationErrors(req, res)\n try {\n await setFeatures(res, services.featureFlagService)\n await populateDefinitions(services, req, res, config)\n await populateRequestedReports(services, res)\n setupRequestAwareNunjucks(env, res)\n return next()\n } catch (error) {\n return errorRequestHandler(layoutPath)(error, req, res, next)\n }\n }\n}\n\nconst setupRequestAwareNunjucks = (env: Environment, res: Response) => {\n env.addGlobal('getLocals', () => ({ locals: { ...res.locals, ...res.app.locals } }))\n}\n\nconst setFeatures = async (res: Response, featureFlagService: FeatureFlagService) => {\n if (res.app.locals.featureFlags === undefined) {\n res.app.locals.featureFlags = {\n flags: {},\n lastUpdated: new Date().getTime() - 601 * 1000,\n }\n }\n const { featureFlags } = res.app.locals\n const currentTime = new Date().getTime()\n const timeSinceLastUpdatedSeconds = (currentTime - featureFlags.lastUpdated) / 1000\n const shouldUpdate = timeSinceLastUpdatedSeconds > 600\n if (shouldUpdate) {\n // Refresh every 10 mins\n res.app.locals.featureFlags.lastUpdated = currentTime\n const flags = await featureFlagService.getFlags().catch((e) => {\n res.app.locals.featureFlags.lastUpdated = currentTime - 601 * 1000\n throw e\n })\n res.app.locals.featureFlags.flags = Object.fromEntries(flags.flags.map((flag) => [flag.key, flag]))\n }\n}\n\nconst populateValidationErrors = (req: Request, res: Response) => {\n const errors = req.flash(`DPR_ERRORS`)\n if (errors && errors[0]) {\n res.locals['validationErrors'] = JSON.parse(errors[0])\n }\n}\n\nexport const populateDefinitions = async (services: Services, req: Request, res: Response, config?: DprConfig) => {\n // Get the DPD path from the query\n const { token, dprUser } = localsHelper.getValues(res)\n\n const dpdPathFromQuery = deriveDefinitionsPath(req.query)\n const dpdPathFromBody = req.body?.dataProductDefinitionsPath\n const definitionsPathFromQuery = dpdPathFromQuery || dpdPathFromBody\n\n if (definitionsPathFromQuery) {\n res.locals['dpdPathFromQuery'] = true\n }\n\n // Get the DPD path from the config\n const dpdPathFromConfig = config?.dataProductDefinitionsPath\n if (dpdPathFromConfig) {\n res.locals['dpdPathFromConfig'] = true\n }\n\n // query takes presedence over config\n res.locals['definitionsPath'] = definitionsPathFromQuery || dpdPathFromConfig\n res.locals['pathSuffix'] = `?dataProductDefinitionsPath=${res.locals['definitionsPath']}`\n\n let selectedProductCollectionId: string | undefined\n if (token) {\n selectedProductCollectionId = await services.productCollectionStoreService.getSelectedProductCollectionId(\n dprUser.id,\n )\n }\n\n res.locals['definitions'] =\n (await Promise.all([\n services.reportingService.getDefinitions(token, res.locals['definitionsPath']),\n selectedProductCollectionId &&\n services.productCollectionService.getProductCollection(token, selectedProductCollectionId),\n ]).then(([defs, selectedProductCollection]) => {\n if (selectedProductCollection && selectedProductCollection) {\n const productIds = selectedProductCollection.products.map((product) => product.productId)\n return defs.filter((def) => productIds.includes(def.id))\n }\n return defs\n })) ?? []\n}\n\nexport const populateRequestedReports = async (services: Services, res: Response) => {\n const { dprUser } = localsHelper.getValues(res)\n if (dprUser.id) {\n const { definitions, definitionsPath } = res.locals\n\n const recent = await services.recentlyViewedService.getAllReports(dprUser.id)\n await services.requestedReportService.cleanList(dprUser.id, recent)\n const requested = await services.requestedReportService.getAllReports(dprUser.id)\n\n res.locals['requestedReports'] = !definitionsPath\n ? requested\n : requested.filter((report: RequestedReport) => {\n return DefinitionUtils.getCurrentVariantDefinition(definitions, report.reportId, report.id)\n })\n\n res.locals['recentlyViewedReports'] = !definitionsPath\n ? recent\n : recent.filter((report: StoredReportData) => {\n return DefinitionUtils.getCurrentVariantDefinition(definitions, report.reportId, report.id)\n })\n\n res.locals['downloadingEnabled'] = services.downloadPermissionService.enabled\n res.locals['bookmarkingEnabled'] = services.bookmarkService.enabled\n res.locals['collectionsEnabled'] = services.productCollectionService.enabled\n res.locals['requestMissingEnabled'] = services.missingReportService.enabled\n res.locals['saveDefaultsEnabled'] = isBooleanFlagEnabled('saveDefaultsEnabled', res.app)\n\n if (res.locals['bookmarkingEnabled']) {\n const bookmarks = await services.bookmarkService.getAllBookmarks(dprUser.id)\n res.locals['bookmarks'] = !definitionsPath\n ? bookmarks\n : bookmarks.filter((bookmark: BookmarkStoreData) => {\n return DefinitionUtils.getCurrentVariantDefinition(definitions, bookmark.reportId, bookmark.id)\n })\n }\n }\n}\n\nexport default setupResources\n"],
5
5
  "mappings": "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",
6
6
  "names": ["localsHelper", "DefinitionUtils"]
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../src/dpr/middleware/setUpNestedRoute.ts"],
3
+ "sources": ["../../dpr/middleware/setUpNestedRoute.ts"],
4
4
  "sourcesContent": ["import { RequestHandler } from 'express'\n\nexport const setupNestedRoute = (): RequestHandler => {\n return async (req, res, next) => {\n res.locals['nestedBaseUrl'] = req.baseUrl\n next()\n }\n}\n\nexport default setupNestedRoute\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEO,MAAM,mBAAmB,MAAsB;AACpD,SAAO,OAAO,KAAK,KAAK,SAAS;AAC/B,QAAI,OAAO,eAAe,IAAI,IAAI;AAClC,SAAK;AAAA,EACP;AACF;AAEA,IAAO,2BAAQ;",
6
6
  "names": []
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../src/dpr/routes/index.ts"],
3
+ "sources": ["../../dpr/routes/index.ts"],
4
4
  "sourcesContent": ["import { Router } from 'express'\nimport type { Services } from '../types/Services'\nimport logger from '../utils/logger'\nimport JourneyRoutes from './journeys/routes'\n// middleware\nimport setUpNestedRoute from '../middleware/setUpNestedRoute'\nimport { errorRequestHandler } from '../middleware/setUpDprResources'\n\nfunction routes(routeImportParams: { services: Services; layoutPath: string }) {\n logger.info('Initialiasing DPR routes...')\n const router = Router({ mergeParams: true })\n router.use(\n '/',\n setUpNestedRoute(),\n JourneyRoutes(routeImportParams),\n errorRequestHandler(routeImportParams.layoutPath),\n )\n return router\n}\n\nexport default routes\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAAuB;AAEvB,oBAAmB;AACnB,oBAA0B;AAE1B,8BAA6B;AAC7B,+BAAoC;AAEpC,SAAS,OAAO,mBAA+D;AAC7E,gBAAAA,QAAO,KAAK,6BAA6B;AACzC,QAAM,aAAS,uBAAO,EAAE,aAAa,KAAK,CAAC;AAC3C,SAAO;AAAA,IACL;AAAA,QACA,wBAAAC,SAAiB;AAAA,QACjB,cAAAC,SAAc,iBAAiB;AAAA,QAC/B,8CAAoB,kBAAkB,UAAU;AAAA,EAClD;AACA,SAAO;AACT;AAEA,IAAO,iBAAQ;",
6
6
  "names": ["logger", "setUpNestedRoute", "JourneyRoutes"]
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../../src/dpr/routes/journeys/api-failures.cy.ts"],
3
+ "sources": ["../../../dpr/routes/journeys/api-failures.cy.ts"],
4
4
  "sourcesContent": ["import {\n executeDashboardStubs,\n executeReportStubs,\n stubBaseTasks,\n stubDefinitionsTasks,\n} from 'cypress-tests/cypressUtils'\n\ncontext('Try to run the app with failing and broken api endpoints', () => {\n const path = '/embedded/platform/'\n\n beforeEach(() => {\n stubBaseTasks()\n })\n\n describe('erroring endpoints - reports', () => {\n it('should cope with definitions list failing', () => {\n executeReportStubs()\n cy.task('stubDefinitionRequestExamplesSuccess')\n cy.task('stubRequestSuccessResult20')\n cy.task('getDefinitionSummariesFailure')\n\n cy.visit(path)\n\n cy.findByRole('heading', { name: /Sorry, there is a problem with the service/ }).should('be.visible')\n })\n\n it('should cope with definitions list being unauthd', () => {\n executeReportStubs()\n cy.task('stubDefinitionRequestExamplesSuccess')\n cy.task('stubRequestSuccessResult20')\n cy.task('getDefinitionSummariesUnauthenticatedFailure')\n\n cy.visit(path)\n\n cy.findByRole('heading', { name: /Sorry, there is a problem with authenticating your request/ }).should(\n 'be.visible',\n )\n })\n\n it('should cope with single definition endpoint failing', () => {\n executeReportStubs()\n cy.task('stubDefinitionRequestExamplesSuccess')\n cy.task('stubRequestSuccessResult20')\n cy.task('getSingleDefinitionFailure')\n\n cy.visit(path)\n cy.findByLabelText(/Reports catalogue.*/i).within(() => {\n cy.findByRole('row', {\n name: (_, element) => {\n return (\n Boolean(element?.textContent?.includes('Successful Report')) &&\n Boolean(element?.textContent?.includes('this will succeed'))\n )\n },\n }).within(() => {\n cy.findByRole('link', { name: 'Request report' }).click()\n })\n })\n\n cy.findByRole('heading', { name: /Your report has failed to generate/ }).should('be.visible')\n })\n\n it('should cope with single definition failing', () => {\n executeReportStubs()\n cy.task('stubDefinitionRequestExamplesSuccess')\n cy.task('stubRequestSuccessResult20')\n cy.task('getSingleDefinitionFailure')\n\n cy.visit(path)\n cy.findByLabelText(/Reports catalogue.*/i).within(() => {\n cy.findByRole('row', {\n name: (_, element) => {\n return (\n Boolean(element?.textContent?.includes('Successful Report')) &&\n Boolean(element?.textContent?.includes('this will succeed'))\n )\n },\n }).within(() => {\n cy.findByRole('link', { name: 'Request report' }).click()\n })\n })\n\n cy.findByRole('heading', { name: /Your report has failed to generate/ }).should('be.visible')\n })\n\n it('should cope with single definition variant failing', () => {\n executeReportStubs()\n cy.task('stubDefinitionRequestExamplesSuccess')\n cy.task('stubRequestSuccessResult20')\n cy.task('getSingleDefinitionVariantFailure')\n\n cy.visit(path)\n cy.findByLabelText(/Reports catalogue.*/i).within(() => {\n cy.findByRole('row', {\n name: (_, element) => {\n return (\n Boolean(element?.textContent?.includes('Successful Report')) &&\n Boolean(element?.textContent?.includes('this will succeed'))\n )\n },\n }).within(() => {\n cy.findByRole('link', { name: 'Request report' }).click()\n })\n })\n\n cy.findByRole('heading', { name: /Your report has failed to generate/ }).should('be.visible')\n })\n\n it('should cope with count failing', () => {\n executeReportStubs()\n cy.task('stubDefinitionRequestExamplesSuccess')\n cy.task('stubRequestSuccessResult20')\n cy.task('getAsyncCountFailure')\n\n cy.visit(path)\n cy.findByLabelText(/Reports catalogue.*/i).within(() => {\n cy.findByRole('row', {\n name: (_, element) => {\n return (\n Boolean(element?.textContent?.includes('Successful Report')) &&\n Boolean(element?.textContent?.includes('this will succeed'))\n )\n },\n }).within(() => {\n cy.findByRole('link', { name: 'Request report' }).click()\n })\n })\n cy.findByRole('button', { name: /Request/ }).click()\n\n cy.findByRole('heading', { name: /Your report has failed to generate/ }).should('be.visible')\n })\n\n it('should cope with requestAsyncReport failing', () => {\n executeReportStubs()\n cy.task('stubDefinitionRequestExamplesSuccess')\n cy.task('stubRequestSuccessResult20')\n cy.task('requestAsyncReportFailure')\n\n cy.visit(path)\n cy.findByLabelText(/Reports catalogue.*/i).within(() => {\n cy.findByRole('row', {\n name: (_, element) => {\n return (\n Boolean(element?.textContent?.includes('Successful Report')) &&\n Boolean(element?.textContent?.includes('this will succeed'))\n )\n },\n }).within(() => {\n cy.findByRole('link', { name: 'Request report' }).click()\n })\n })\n cy.findByRole('button', { name: /Request/ }).click()\n\n cy.findByRole('heading', { name: /Your report has failed to generate/ }).should('be.visible')\n })\n\n it('should cope with cancelAsyncRequest failing', () => {\n stubBaseTasks()\n stubDefinitionsTasks()\n cy.task('stubViewAsyncReportingResults')\n cy.task('stubRequestSuccessReportTablesCount')\n cy.task('stubAsyncRequestSuccessReportTablesCount')\n cy.task('stubDefinitionRequestExamplesSuccess')\n cy.task('stubRequestSuccessResult20')\n cy.task('cancelAsyncRequestFailure')\n\n cy.visit(path)\n cy.findByLabelText(/Reports catalogue.*/i).within(() => {\n cy.findByRole('row', {\n name: (_, element) => {\n return (\n Boolean(element?.textContent?.includes('Successful Report')) &&\n Boolean(element?.textContent?.includes('this will succeed'))\n )\n },\n }).within(() => {\n cy.findByRole('link', { name: 'Request report' }).click()\n })\n })\n cy.findByRole('button', { name: /Request/ }).click()\n\n cy.findByRole('button', { name: /Cancel request/ }).click()\n\n cy.findByRole('heading', { name: /Your report has failed to generate/ }).should('be.visible')\n })\n\n it('should cope with getAsyncReport failing', () => {\n executeReportStubs()\n cy.task('stubDefinitionRequestExamplesSuccess')\n cy.task('stubRequestSuccessResult20')\n cy.task('getAsyncReportFailure')\n\n cy.visit(path)\n cy.findByLabelText(/Reports catalogue.*/i).within(() => {\n cy.findByRole('row', {\n name: (_, element) => {\n return (\n Boolean(element?.textContent?.includes('Successful Report')) &&\n Boolean(element?.textContent?.includes('this will succeed'))\n )\n },\n }).within(() => {\n cy.findByRole('link', { name: 'Request report' }).click()\n })\n })\n cy.findByRole('button', { name: /Request/ }).click()\n\n cy.findByRole('heading', { name: /Your report has failed to generate/ }).should('be.visible')\n })\n\n it('should cope with getAsyncSummaryReport failing', () => {\n stubBaseTasks()\n stubDefinitionsTasks()\n cy.task('stubViewAsyncReportingResults')\n cy.task('getAsyncSummaryReportFailure')\n\n cy.visit(path)\n cy.findByLabelText(/Reports catalogue.*/i).within(() => {\n cy.findByRole('row', {\n name: (_, element) => {\n return (\n Boolean(element?.textContent?.includes('Successful Report')) &&\n Boolean(element?.textContent?.includes('this will succeed'))\n )\n },\n }).within(() => {\n cy.findByRole('link', { name: 'Request report' }).click()\n })\n })\n cy.findByRole('button', { name: /Request/ }).click()\n\n cy.findByRole('heading', { name: /Your report has failed to generate/ }).should('be.visible')\n })\n\n it('should cope with getAsyncReportStatus failing', () => {\n executeReportStubs()\n cy.task('stubDefinitionRequestExamplesSuccess')\n cy.task('getAsyncReportStatusFailure')\n\n cy.visit(path)\n cy.findByLabelText(/Reports catalogue.*/i).within(() => {\n cy.findByRole('row', {\n name: (_, element) => {\n return (\n Boolean(element?.textContent?.includes('Successful Report')) &&\n Boolean(element?.textContent?.includes('this will succeed'))\n )\n },\n }).within(() => {\n cy.findByRole('link', { name: 'Request report' }).click()\n })\n })\n cy.findByRole('button', { name: /Request/ }).click()\n\n cy.findByRole('heading', { name: /Your report has failed to generate/ }).should('be.visible')\n })\n })\n\n describe('erroring endpoints - dashboards', () => {\n it('should cope with single definition endpoint failing', () => {\n executeDashboardStubs()\n cy.task('stubDataQualityDashboardsResultMock')\n cy.task('stubListExampleDashboard')\n cy.task('stubDefinitionFeatureTestingInteractive')\n cy.task('getSingleDashboardFailure')\n\n cy.visit(path)\n cy.findByLabelText(/Reports catalogue.*/i).within(() => {\n cy.findByRole('row', {\n name: (_, element) => {\n return Boolean(element.textContent?.includes('Data quality data set'))\n },\n }).within(() => {\n cy.findByRole('link', { name: 'Request dashboard' }).click()\n })\n })\n\n cy.findByRole('heading', { name: /Your report has failed to generate/ }).should('be.visible')\n })\n\n it('should cope with requestAsyncDashboard failing', () => {\n executeDashboardStubs()\n cy.task('stubDataQualityDashboardsResultMock')\n cy.task('stubListExampleDashboard')\n cy.task('stubDefinitionFeatureTestingInteractive')\n cy.task('requestAsyncDashboardFailure')\n\n cy.visit(path)\n cy.findByLabelText(/Reports catalogue.*/i).within(() => {\n cy.findByRole('row', {\n name: (_, element) => {\n return Boolean(element.textContent?.includes('Data quality data set'))\n },\n }).within(() => {\n cy.findByRole('link', { name: 'Request dashboard' }).click()\n })\n })\n cy.findByRole('button', { name: 'Request dashboard' }).click()\n\n cy.findByRole('heading', { name: /Your report has failed to generate/ }).should('be.visible')\n })\n\n it('should cope with getAsyncDashboard failing', () => {\n executeDashboardStubs()\n cy.task('stubDataQualityDashboardsResultMock')\n cy.task('stubListExampleDashboard')\n cy.task('stubDefinitionFeatureTestingInteractive')\n cy.task('getAsyncDashboardFailure')\n\n cy.visit(path)\n cy.findByLabelText(/Reports catalogue.*/i).within(() => {\n cy.findByRole('row', {\n name: (_, element) => {\n return Boolean(element.textContent?.includes('Data quality data set'))\n },\n }).within(() => {\n cy.findByRole('link', { name: 'Request dashboard' }).click()\n })\n })\n cy.findByRole('button', { name: 'Request dashboard' }).click()\n\n cy.findByRole('heading', { name: /Your report has failed to generate/ }).should('be.visible')\n })\n\n it('should cope with getAsyncDashboardStatus failing', () => {\n stubBaseTasks()\n stubDefinitionsTasks()\n cy.task('stubViewAsyncResults')\n cy.task('stubDataQualityDashboardsResultMock')\n cy.task('stubListExampleDashboard')\n cy.task('stubDefinitionFeatureTestingInteractive')\n cy.task('getAsyncDashboardStatusFailure')\n\n cy.visit(path)\n cy.findByLabelText(/Reports catalogue.*/i).within(() => {\n cy.findByRole('row', {\n name: (_, element) => {\n return Boolean(element.textContent?.includes('Data quality data set'))\n },\n }).within(() => {\n cy.findByRole('link', { name: 'Request dashboard' }).click()\n })\n })\n cy.findByRole('button', { name: 'Request dashboard' }).click()\n\n cy.findByRole('heading', { name: /Your report has failed to generate/ }).should('be.visible')\n })\n\n it('should cope with cancelAsyncRequest failing', () => {\n stubBaseTasks()\n stubDefinitionsTasks()\n cy.task('stubReportsStartedStatus')\n cy.task('stubMockDashboardsStatusStarted')\n cy.task('stubViewAsyncResults')\n cy.task('stubDataQualityDashboardsResultMock')\n cy.task('stubListExampleDashboard')\n cy.task('stubDefinitionFeatureTestingInteractive')\n cy.task('cancelAsyncRequestDashboardFailure')\n\n cy.visit(path)\n cy.findByLabelText(/Reports catalogue.*/i).within(() => {\n cy.findByRole('row', {\n name: (_, element) => {\n return Boolean(element.textContent?.includes('Data quality data set'))\n },\n }).within(() => {\n cy.findByRole('link', { name: 'Request dashboard' }).click()\n })\n })\n cy.findByRole('button', { name: /Request/ }).click()\n\n cy.findByRole('button', { name: /Cancel request/ }).click()\n cy.task('stubMockDashboardsStatusFinished')\n cy.findByRole('heading', { name: /Failed to abort request/ }).should('be.visible')\n })\n })\n})\n"],
5
5
  "mappings": "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",
6
6
  "names": []
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../../../src/dpr/routes/journeys/download-report/controller.ts"],
3
+ "sources": ["../../../../dpr/routes/journeys/download-report/controller.ts"],
4
4
  "sourcesContent": ["import { RequestHandler } from 'express'\nimport LocalsHelper from '../../../utils/localsHelper'\nimport DownloadUtils from './utils'\nimport { Services } from '../../../types/Services'\n\nclass DownloadReportController {\n layoutPath: string\n\n services: Services\n\n constructor(layoutPath: string, services: Services) {\n this.layoutPath = layoutPath\n this.services = services\n }\n\n POST: RequestHandler = async (req, res) => {\n const { dprUser } = LocalsHelper.getValues(res)\n const { reportId, id, loadType, currentUrl, currentQueryParams } = req.body\n\n let redirect = `${currentUrl}/download-disabled`\n redirect = currentQueryParams ? `${redirect}${currentQueryParams}` : redirect\n\n const canDownloadReport = await this.services.downloadPermissionService.downloadEnabledForReport(\n dprUser.id,\n reportId,\n id,\n )\n\n if (canDownloadReport) {\n await DownloadUtils.downloadReport({ req, res, services: this.services, redirect, loadType })\n } else {\n res.redirect(redirect)\n }\n }\n}\n\nexport { DownloadReportController }\nexport default DownloadReportController\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,0BAAyB;AACzB,mBAA0B;AAG1B,MAAM,yBAAyB;AAAA,EAC7B;AAAA,EAEA;AAAA,EAEA,YAAY,YAAoB,UAAoB;AAClD,SAAK,aAAa;AAClB,SAAK,WAAW;AAAA,EAClB;AAAA,EAEA,OAAuB,OAAO,KAAK,QAAQ;AACzC,UAAM,EAAE,QAAQ,IAAI,oBAAAA,QAAa,UAAU,GAAG;AAC9C,UAAM,EAAE,UAAU,IAAI,UAAU,YAAY,mBAAmB,IAAI,IAAI;AAEvE,QAAI,WAAW,GAAG,UAAU;AAC5B,eAAW,qBAAqB,GAAG,QAAQ,GAAG,kBAAkB,KAAK;AAErE,UAAM,oBAAoB,MAAM,KAAK,SAAS,0BAA0B;AAAA,MACtE,QAAQ;AAAA,MACR;AAAA,MACA;AAAA,IACF;AAEA,QAAI,mBAAmB;AACrB,YAAM,aAAAC,QAAc,eAAe,EAAE,KAAK,KAAK,UAAU,KAAK,UAAU,UAAU,SAAS,CAAC;AAAA,IAC9F,OAAO;AACL,UAAI,SAAS,QAAQ;AAAA,IACvB;AAAA,EACF;AACF;AAGA,IAAO,qBAAQ;",
6
6
  "names": ["LocalsHelper", "DownloadUtils"]
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../../../../../src/dpr/routes/journeys/download-report/request-download/form/controller.ts"],
3
+ "sources": ["../../../../../../dpr/routes/journeys/download-report/request-download/form/controller.ts"],
4
4
  "sourcesContent": ["import { RequestHandler } from 'express'\nimport LocalsHelper from '../../../../../utils/localsHelper'\nimport { components } from '../../../../../types/api'\nimport { Services } from '../../../../../types/Services'\nimport { LoadType } from '../../../../../types/UserReports'\nimport logger from '../../../../../utils/logger'\n\nclass RequestDownloadController {\n layoutPath: string\n\n services: Services\n\n constructor(layoutPath: string, services: Services) {\n this.layoutPath = layoutPath\n this.services = services\n }\n\n GET: RequestHandler = async (req, res, next) => {\n const { token, csrfToken, definitionsPath, dprUser } = LocalsHelper.getValues(res)\n const { reportId, variantId, tableId } = req.params\n const loadType = tableId ? LoadType.ASYNC : LoadType.SYNC\n\n const { reportSearch, reportUrl } = req.query\n let queryString\n let dataProductDefinitionsPath\n\n if (reportSearch) {\n queryString = decodeURIComponent(<string>reportSearch)\n const params = new URLSearchParams(queryString)\n dataProductDefinitionsPath = params.get('dataProductDefinitionsPath') || definitionsPath\n }\n\n const variantData: components['schemas']['SingleVariantReportDefinition'] =\n await this.services.reportingService.getDefinition(token, reportId, variantId, dataProductDefinitionsPath)\n\n try {\n res.render(`dpr/routes/journeys/download-report/request-download/form/view`, {\n title: 'Download request form',\n user: dprUser,\n report: {\n reportId,\n reportName: variantData.name,\n variantId,\n variantName: variantData.variant.name,\n tableId,\n loadType,\n reportUrl,\n reportSearch: reportSearch || undefined,\n time: new Date().toDateString(),\n },\n csrfToken,\n layoutPath: this.layoutPath,\n })\n } catch (error) {\n next(error)\n }\n }\n\n POST: RequestHandler = async (req, res, _next) => {\n const { body, baseUrl } = req\n const { reportName, variantName, reportUrl, reportSearch } = body\n logger.info('Download Feedback Submission:', `${JSON.stringify(body)}`)\n\n let queryParams\n queryParams = `?reportName=${reportName}&variantName=${variantName}&reportUrl=${reportUrl}`\n\n if (reportSearch) {\n const encodedSearch = encodeURIComponent(reportSearch)\n queryParams = `${queryParams}&reportSearch=${encodedSearch}`\n }\n\n const redirect = `${baseUrl}/submitted${queryParams}`\n\n res.redirect(redirect)\n }\n}\n\nexport { RequestDownloadController }\nexport default RequestDownloadController\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,0BAAyB;AAGzB,yBAAyB;AACzB,oBAAmB;AAEnB,MAAM,0BAA0B;AAAA,EAC9B;AAAA,EAEA;AAAA,EAEA,YAAY,YAAoB,UAAoB;AAClD,SAAK,aAAa;AAClB,SAAK,WAAW;AAAA,EAClB;AAAA,EAEA,MAAsB,OAAO,KAAK,KAAK,SAAS;AAC9C,UAAM,EAAE,OAAO,WAAW,iBAAiB,QAAQ,IAAI,oBAAAA,QAAa,UAAU,GAAG;AACjF,UAAM,EAAE,UAAU,WAAW,QAAQ,IAAI,IAAI;AAC7C,UAAM,WAAW,UAAU,4BAAS,QAAQ,4BAAS;AAErD,UAAM,EAAE,cAAc,UAAU,IAAI,IAAI;AACxC,QAAI;AACJ,QAAI;AAEJ,QAAI,cAAc;AAChB,oBAAc,mBAA2B,YAAY;AACrD,YAAM,SAAS,IAAI,gBAAgB,WAAW;AAC9C,mCAA6B,OAAO,IAAI,4BAA4B,KAAK;AAAA,IAC3E;AAEA,UAAM,cACJ,MAAM,KAAK,SAAS,iBAAiB,cAAc,OAAO,UAAU,WAAW,0BAA0B;AAE3G,QAAI;AACF,UAAI,OAAO,kEAAkE;AAAA,QAC3E,OAAO;AAAA,QACP,MAAM;AAAA,QACN,QAAQ;AAAA,UACN;AAAA,UACA,YAAY,YAAY;AAAA,UACxB;AAAA,UACA,aAAa,YAAY,QAAQ;AAAA,UACjC;AAAA,UACA;AAAA,UACA;AAAA,UACA,cAAc,gBAAgB;AAAA,UAC9B,OAAM,oBAAI,KAAK,GAAE,aAAa;AAAA,QAChC;AAAA,QACA;AAAA,QACA,YAAY,KAAK;AAAA,MACnB,CAAC;AAAA,IACH,SAAS,OAAO;AACd,WAAK,KAAK;AAAA,IACZ;AAAA,EACF;AAAA,EAEA,OAAuB,OAAO,KAAK,KAAK,UAAU;AAChD,UAAM,EAAE,MAAM,QAAQ,IAAI;AAC1B,UAAM,EAAE,YAAY,aAAa,WAAW,aAAa,IAAI;AAC7D,kBAAAC,QAAO,KAAK,iCAAiC,GAAG,KAAK,UAAU,IAAI,CAAC,EAAE;AAEtE,QAAI;AACJ,kBAAc,eAAe,UAAU,gBAAgB,WAAW,cAAc,SAAS;AAEzF,QAAI,cAAc;AAChB,YAAM,gBAAgB,mBAAmB,YAAY;AACrD,oBAAc,GAAG,WAAW,iBAAiB,aAAa;AAAA,IAC5D;AAEA,UAAM,WAAW,GAAG,OAAO,aAAa,WAAW;AAEnD,QAAI,SAAS,QAAQ;AAAA,EACvB;AACF;AAGA,IAAO,qBAAQ;",
6
6
  "names": ["LocalsHelper", "logger"]
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../../../../../src/dpr/routes/journeys/download-report/request-download/form/routes.ts"],
3
+ "sources": ["../../../../../../dpr/routes/journeys/download-report/request-download/form/routes.ts"],
4
4
  "sourcesContent": ["/* eslint-disable no-param-reassign */\nimport { Router } from 'express'\nimport RequestDownloadController from './controller'\nimport submittedRoutes from './submitted/routes'\nimport { Services } from '../../../../../types/Services'\n\nexport function routes({ layoutPath, services }: { layoutPath: string; services: Services }) {\n const router = Router({ mergeParams: true })\n const controller = new RequestDownloadController(layoutPath, services)\n\n router.get('/', controller.GET)\n router.post('/', controller.POST)\n\n router.use('/submitted', submittedRoutes({ layoutPath, services }))\n\n return router\n}\n\nexport default routes\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,qBAAuB;AACvB,wBAAsC;AACtC,oBAA4B;AAGrB,SAAS,OAAO,EAAE,YAAY,SAAS,GAA+C;AAC3F,QAAM,aAAS,uBAAO,EAAE,aAAa,KAAK,CAAC;AAC3C,QAAM,aAAa,IAAI,kBAAAA,QAA0B,YAAY,QAAQ;AAErE,SAAO,IAAI,KAAK,WAAW,GAAG;AAC9B,SAAO,KAAK,KAAK,WAAW,IAAI;AAEhC,SAAO,IAAI,kBAAc,cAAAC,SAAgB,EAAE,YAAY,SAAS,CAAC,CAAC;AAElE,SAAO;AACT;AAEA,IAAO,iBAAQ;",
6
6
  "names": ["RequestDownloadController", "submittedRoutes"]
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../../../../../../src/dpr/routes/journeys/download-report/request-download/form/submitted/controller.ts"],
3
+ "sources": ["../../../../../../../dpr/routes/journeys/download-report/request-download/form/submitted/controller.ts"],
4
4
  "sourcesContent": ["import { RequestHandler } from 'express'\nimport { Services } from '../../../../../../types/Services'\nimport localsHelper from '../../../../../../utils/localsHelper'\n\nclass RequestDownloadSubmittedController {\n layoutPath: string\n\n services: Services\n\n constructor(layoutPath: string, services: Services) {\n this.layoutPath = layoutPath\n this.services = services\n }\n\n GET: RequestHandler = async (req, res, _next) => {\n const { dprUser } = localsHelper.getValues(res)\n const { reportId, variantId } = req.params\n const { reportName, variantName, reportUrl, reportSearch } = req.query\n\n let decodedReportSearch\n if (reportSearch) {\n decodedReportSearch = decodeURIComponent(<string>reportSearch)\n }\n\n const reportHref = reportSearch ? `${reportUrl}${decodedReportSearch}` : `${reportUrl}`\n\n await this.services.downloadPermissionService.saveDownloadPermissionData(dprUser.id, reportId, variantId)\n\n res.render(`dpr/routes/journeys/download-report/request-download/form/submitted/view`, {\n title: 'success',\n layoutPath: this.layoutPath,\n report: {\n reportName,\n variantName,\n reportHref,\n },\n })\n }\n}\n\nexport { RequestDownloadSubmittedController }\nexport default RequestDownloadSubmittedController\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,0BAAyB;AAEzB,MAAM,mCAAmC;AAAA,EACvC;AAAA,EAEA;AAAA,EAEA,YAAY,YAAoB,UAAoB;AAClD,SAAK,aAAa;AAClB,SAAK,WAAW;AAAA,EAClB;AAAA,EAEA,MAAsB,OAAO,KAAK,KAAK,UAAU;AAC/C,UAAM,EAAE,QAAQ,IAAI,oBAAAA,QAAa,UAAU,GAAG;AAC9C,UAAM,EAAE,UAAU,UAAU,IAAI,IAAI;AACpC,UAAM,EAAE,YAAY,aAAa,WAAW,aAAa,IAAI,IAAI;AAEjE,QAAI;AACJ,QAAI,cAAc;AAChB,4BAAsB,mBAA2B,YAAY;AAAA,IAC/D;AAEA,UAAM,aAAa,eAAe,GAAG,SAAS,GAAG,mBAAmB,KAAK,GAAG,SAAS;AAErF,UAAM,KAAK,SAAS,0BAA0B,2BAA2B,QAAQ,IAAI,UAAU,SAAS;AAExG,QAAI,OAAO,4EAA4E;AAAA,MACrF,OAAO;AAAA,MACP,YAAY,KAAK;AAAA,MACjB,QAAQ;AAAA,QACN;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF,CAAC;AAAA,EACH;AACF;AAGA,IAAO,qBAAQ;",
6
6
  "names": ["localsHelper"]
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../../../../../../src/dpr/routes/journeys/download-report/request-download/form/submitted/routes.ts"],
3
+ "sources": ["../../../../../../../dpr/routes/journeys/download-report/request-download/form/submitted/routes.ts"],
4
4
  "sourcesContent": ["/* eslint-disable no-param-reassign */\nimport { Router } from 'express'\nimport RequestDownloadSubmittedController from './controller'\nimport { Services } from '../../../../../../types/Services'\n\nexport function routes({ layoutPath, services }: { layoutPath: string; services: Services }) {\n const router = Router({ mergeParams: true })\n\n const controller = new RequestDownloadSubmittedController(layoutPath, services)\n router.get(`/`, controller.GET)\n\n return router\n}\n\nexport default routes\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,qBAAuB;AACvB,wBAA+C;AAGxC,SAAS,OAAO,EAAE,YAAY,SAAS,GAA+C;AAC3F,QAAM,aAAS,uBAAO,EAAE,aAAa,KAAK,CAAC;AAE3C,QAAM,aAAa,IAAI,kBAAAA,QAAmC,YAAY,QAAQ;AAC9E,SAAO,IAAI,KAAK,WAAW,GAAG;AAE9B,SAAO;AACT;AAEA,IAAO,iBAAQ;",
6
6
  "names": ["RequestDownloadSubmittedController"]
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../../../../../../src/dpr/routes/journeys/download-report/request-download/form/submitted/tests.cy.ts"],
3
+ "sources": ["../../../../../../../dpr/routes/journeys/download-report/request-download/form/submitted/tests.cy.ts"],
4
4
  "sourcesContent": ["context('Request download form submitted', () => {\n before(() => {\n cy.task('resetStubs')\n cy.task('resetRedis')\n cy.task('stubDefinitions')\n cy.task('stubSingleSummaries')\n })\n\n it('is accessible', () => {\n cy.visit(\n '/embedded/platform/dpr/download-report/request-download/request-examples/request-example-success/tableId/tblId_1753863906851/form/submitted?reportName=C%20Test%20Report&variantName=Successful%20Report&reportUrl=/embedded/platform/dpr/view-report/async/report/request-examples/request-example-success/tblId_1753863906851/report',\n )\n cy.injectAxe()\n cy.checkA11y()\n cy.findByText(/Download is now enabled for this report/).should('be.visible')\n })\n})\n"],
5
5
  "mappings": ";AAAA,QAAQ,mCAAmC,MAAM;AAC/C,SAAO,MAAM;AACX,OAAG,KAAK,YAAY;AACpB,OAAG,KAAK,YAAY;AACpB,OAAG,KAAK,iBAAiB;AACzB,OAAG,KAAK,qBAAqB;AAAA,EAC/B,CAAC;AAED,KAAG,iBAAiB,MAAM;AACxB,OAAG;AAAA,MACD;AAAA,IACF;AACA,OAAG,UAAU;AACb,OAAG,UAAU;AACb,OAAG,WAAW,yCAAyC,EAAE,OAAO,YAAY;AAAA,EAC9E,CAAC;AACH,CAAC;",
6
6
  "names": []
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../../../../../src/dpr/routes/journeys/download-report/request-download/form/tests.cy.ts"],
3
+ "sources": ["../../../../../../dpr/routes/journeys/download-report/request-download/form/tests.cy.ts"],
4
4
  "sourcesContent": ["context('Request download form', () => {\n const path =\n '/embedded/platform/dpr/download-report/request-download/request-examples/request-example-success/tableId/tblId_1753863906851/form?reportUrl=/embedded/platform/dpr/view-report/async/report/request-examples/request-example-success/tblId_1753863906851/report'\n\n before(() => {\n cy.task('resetStubs')\n cy.task('resetRedis')\n cy.task('stubDefinitions')\n cy.task('stubSingleSummaries')\n cy.task('stubDefinitionRequestExamplesSuccess')\n })\n\n it('is accessible', () => {\n cy.visit(path)\n cy.injectAxe()\n cy.checkA11y()\n cy.findByRole('heading', { name: /Download request form/ }).should('be.visible')\n cy.findByRole('button', { name: /Submit request/ }).click()\n cy.findByRole('link', { name: /provide information on how you will use this data/ })\n .should('be.visible')\n .click()\n cy.findByRole('textbox', { name: /Can you provide more detail/ })\n .should('be.focused')\n .type('foo')\n cy.findByRole('link', { name: /Enter your Job title/ })\n .should('be.visible')\n .click()\n cy.findByRole('textbox', { name: /What is your Job title\\?/ })\n .should('be.focused')\n .type('foo')\n cy.findByRole('button', { name: /Submit request/ }).click()\n cy.findByRole('heading', { name: /Download request form/ }).should('not.exist')\n })\n})\n"],
5
5
  "mappings": ";AAAA,QAAQ,yBAAyB,MAAM;AACrC,QAAM,OACJ;AAEF,SAAO,MAAM;AACX,OAAG,KAAK,YAAY;AACpB,OAAG,KAAK,YAAY;AACpB,OAAG,KAAK,iBAAiB;AACzB,OAAG,KAAK,qBAAqB;AAC7B,OAAG,KAAK,sCAAsC;AAAA,EAChD,CAAC;AAED,KAAG,iBAAiB,MAAM;AACxB,OAAG,MAAM,IAAI;AACb,OAAG,UAAU;AACb,OAAG,UAAU;AACb,OAAG,WAAW,WAAW,EAAE,MAAM,wBAAwB,CAAC,EAAE,OAAO,YAAY;AAC/E,OAAG,WAAW,UAAU,EAAE,MAAM,iBAAiB,CAAC,EAAE,MAAM;AAC1D,OAAG,WAAW,QAAQ,EAAE,MAAM,oDAAoD,CAAC,EAChF,OAAO,YAAY,EACnB,MAAM;AACT,OAAG,WAAW,WAAW,EAAE,MAAM,8BAA8B,CAAC,EAC7D,OAAO,YAAY,EACnB,KAAK,KAAK;AACb,OAAG,WAAW,QAAQ,EAAE,MAAM,uBAAuB,CAAC,EACnD,OAAO,YAAY,EACnB,MAAM;AACT,OAAG,WAAW,WAAW,EAAE,MAAM,2BAA2B,CAAC,EAC1D,OAAO,YAAY,EACnB,KAAK,KAAK;AACb,OAAG,WAAW,UAAU,EAAE,MAAM,iBAAiB,CAAC,EAAE,MAAM;AAC1D,OAAG,WAAW,WAAW,EAAE,MAAM,wBAAwB,CAAC,EAAE,OAAO,WAAW;AAAA,EAChF,CAAC;AACH,CAAC;",
6
6
  "names": []
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../../../../src/dpr/routes/journeys/download-report/request-download/routes.ts"],
3
+ "sources": ["../../../../../dpr/routes/journeys/download-report/request-download/routes.ts"],
4
4
  "sourcesContent": ["/* eslint-disable no-param-reassign */\nimport { Router } from 'express'\n\n// Routes\nimport formRoutes from './form/routes'\nimport { Services } from '../../../../types/Services'\n\nexport function routes({ layoutPath, services }: { layoutPath: string; services: Services }) {\n const router = Router({ mergeParams: true })\n\n router.use(`/form`, formRoutes({ layoutPath, services }))\n\n return router\n}\n\nexport default routes\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,qBAAuB;AAGvB,oBAAuB;AAGhB,SAAS,OAAO,EAAE,YAAY,SAAS,GAA+C;AAC3F,QAAM,aAAS,uBAAO,EAAE,aAAa,KAAK,CAAC;AAE3C,SAAO,IAAI,aAAS,cAAAA,SAAW,EAAE,YAAY,SAAS,CAAC,CAAC;AAExD,SAAO;AACT;AAEA,IAAO,iBAAQ;",
6
6
  "names": ["formRoutes"]
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../../../../src/dpr/routes/journeys/download-report/request-download/service.ts"],
3
+ "sources": ["../../../../../dpr/routes/journeys/download-report/request-download/service.ts"],
4
4
  "sourcesContent": ["import logger from '../../../../utils/logger'\nimport type { DownloadPermissionConfig } from '../../../../types/Download'\nimport ReportStoreService from '../../../../services/reportStoreService'\nimport UserDataStore from '../../../../data/reportDataStore'\nimport { ServiceFeatureConfig } from '../../../../types/DprConfig'\n\nclass DownloadPermissionService extends ReportStoreService {\n enabled: boolean\n\n constructor(userDataStore: UserDataStore, serviceFeatureConfig: ServiceFeatureConfig) {\n super(userDataStore)\n this.enabled = Boolean(serviceFeatureConfig.download)\n if (!this.enabled) logger.info(`Download: disabled `)\n }\n\n async saveDownloadPermissionData(userId: string, reportId: string, id: string): Promise<void> {\n if (!this.enabled) return\n\n const userConfig = await this.getState(userId)\n\n // Init downloads if not present\n if (!userConfig.downloadPermissions) {\n userConfig.downloadPermissions = []\n }\n const permissionExists = await this.downloadEnabledForReport(userId, reportId, id)\n if (!permissionExists) {\n userConfig.downloadPermissions.push({ reportId, id })\n logger.info(`Download permission granted for ${userId}: ${reportId} - ${id}`)\n await this.saveState(userId, userConfig)\n }\n }\n\n async removeDownloadPermissionData(userId: string, id: string): Promise<void> {\n if (!this.enabled) return\n\n const userConfig = await this.getState(userId)\n const { downloadPermissions } = userConfig\n if (downloadPermissions) {\n const index = downloadPermissions.findIndex((downloadConfig) => {\n return downloadConfig.id === id\n })\n if (index >= 0) {\n downloadPermissions.splice(index, 1)\n }\n await this.saveState(userId, userConfig)\n }\n }\n\n async downloadEnabledForReport(userId: string, reportId: string, id: string): Promise<boolean> {\n if (!this.enabled) return false\n\n const userConfig = await this.getState(userId)\n\n if (!userConfig.downloadPermissions) return false\n\n const config = userConfig.downloadPermissions.find((downloadConfig: DownloadPermissionConfig) => {\n return downloadConfig.id === id && downloadConfig.reportId === reportId\n })\n return !!config\n }\n\n async getAllDownloadPermissions(userId: string): Promise<DownloadPermissionConfig[]> {\n if (!this.enabled) return []\n\n const userConfig = await this.getState(userId)\n return userConfig.downloadPermissions || []\n }\n}\n\nexport { DownloadPermissionService }\nexport default DownloadPermissionService\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAAmB;AAEnB,gCAA+B;AAI/B,MAAM,kCAAkC,0BAAAA,QAAmB;AAAA,EACzD;AAAA,EAEA,YAAY,eAA8B,sBAA4C;AACpF,UAAM,aAAa;AACnB,SAAK,UAAU,QAAQ,qBAAqB,QAAQ;AACpD,QAAI,CAAC,KAAK,QAAS,eAAAC,QAAO,KAAK,qBAAqB;AAAA,EACtD;AAAA,EAEA,MAAM,2BAA2B,QAAgB,UAAkB,IAA2B;AAC5F,QAAI,CAAC,KAAK,QAAS;AAEnB,UAAM,aAAa,MAAM,KAAK,SAAS,MAAM;AAG7C,QAAI,CAAC,WAAW,qBAAqB;AACnC,iBAAW,sBAAsB,CAAC;AAAA,IACpC;AACA,UAAM,mBAAmB,MAAM,KAAK,yBAAyB,QAAQ,UAAU,EAAE;AACjF,QAAI,CAAC,kBAAkB;AACrB,iBAAW,oBAAoB,KAAK,EAAE,UAAU,GAAG,CAAC;AACpD,oBAAAA,QAAO,KAAK,mCAAmC,MAAM,KAAK,QAAQ,MAAM,EAAE,EAAE;AAC5E,YAAM,KAAK,UAAU,QAAQ,UAAU;AAAA,IACzC;AAAA,EACF;AAAA,EAEA,MAAM,6BAA6B,QAAgB,IAA2B;AAC5E,QAAI,CAAC,KAAK,QAAS;AAEnB,UAAM,aAAa,MAAM,KAAK,SAAS,MAAM;AAC7C,UAAM,EAAE,oBAAoB,IAAI;AAChC,QAAI,qBAAqB;AACvB,YAAM,QAAQ,oBAAoB,UAAU,CAAC,mBAAmB;AAC9D,eAAO,eAAe,OAAO;AAAA,MAC/B,CAAC;AACD,UAAI,SAAS,GAAG;AACd,4BAAoB,OAAO,OAAO,CAAC;AAAA,MACrC;AACA,YAAM,KAAK,UAAU,QAAQ,UAAU;AAAA,IACzC;AAAA,EACF;AAAA,EAEA,MAAM,yBAAyB,QAAgB,UAAkB,IAA8B;AAC7F,QAAI,CAAC,KAAK,QAAS,QAAO;AAE1B,UAAM,aAAa,MAAM,KAAK,SAAS,MAAM;AAE7C,QAAI,CAAC,WAAW,oBAAqB,QAAO;AAE5C,UAAM,SAAS,WAAW,oBAAoB,KAAK,CAAC,mBAA6C;AAC/F,aAAO,eAAe,OAAO,MAAM,eAAe,aAAa;AAAA,IACjE,CAAC;AACD,WAAO,CAAC,CAAC;AAAA,EACX;AAAA,EAEA,MAAM,0BAA0B,QAAqD;AACnF,QAAI,CAAC,KAAK,QAAS,QAAO,CAAC;AAE3B,UAAM,aAAa,MAAM,KAAK,SAAS,MAAM;AAC7C,WAAO,WAAW,uBAAuB,CAAC;AAAA,EAC5C;AACF;AAGA,IAAO,kBAAQ;",
6
6
  "names": ["ReportStoreService", "logger"]
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../../../src/dpr/routes/journeys/download-report/routes.ts"],
3
+ "sources": ["../../../../dpr/routes/journeys/download-report/routes.ts"],
4
4
  "sourcesContent": ["/* eslint-disable no-param-reassign */\nimport { Router } from 'express'\n\nimport DownloadReportController from './controller'\n\n// Routes\nimport RequestDownloadRoutes from './request-download/routes'\nimport { Services } from '../../../types/Services'\n\nexport function Routes({ layoutPath, services }: { services: Services; layoutPath: string }) {\n const router = Router({ mergeParams: true })\n\n const controller = new DownloadReportController(layoutPath, services)\n\n // Download report\n router.post('/', controller.POST)\n\n // Request download form routes\n router.use(\n [`/request-download/:reportId/:variantId/tableId/:tableId`, `/request-download/:reportId/:variantId`],\n RequestDownloadRoutes({ layoutPath, services }),\n )\n\n return router\n}\n\nexport const DownloadReportRoutes = ({\n services,\n path,\n layoutPath,\n}: {\n services: Services\n path: string\n layoutPath: string\n}) => {\n const router = Router({ mergeParams: true })\n if (services.downloadPermissionService.enabled) {\n router.use(path, Routes({ services, layoutPath }))\n }\n return router\n}\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,qBAAuB;AAEvB,wBAAqC;AAGrC,oBAAkC;AAG3B,SAAS,OAAO,EAAE,YAAY,SAAS,GAA+C;AAC3F,QAAM,aAAS,uBAAO,EAAE,aAAa,KAAK,CAAC;AAE3C,QAAM,aAAa,IAAI,kBAAAA,QAAyB,YAAY,QAAQ;AAGpE,SAAO,KAAK,KAAK,WAAW,IAAI;AAGhC,SAAO;AAAA,IACL,CAAC,2DAA2D,wCAAwC;AAAA,QACpG,cAAAC,SAAsB,EAAE,YAAY,SAAS,CAAC;AAAA,EAChD;AAEA,SAAO;AACT;AAEO,MAAM,uBAAuB,CAAC;AAAA,EACnC;AAAA,EACA;AAAA,EACA;AACF,MAIM;AACJ,QAAM,aAAS,uBAAO,EAAE,aAAa,KAAK,CAAC;AAC3C,MAAI,SAAS,0BAA0B,SAAS;AAC9C,WAAO,IAAI,MAAM,OAAO,EAAE,UAAU,WAAW,CAAC,CAAC;AAAA,EACnD;AACA,SAAO;AACT;",
6
6
  "names": ["DownloadReportController", "RequestDownloadRoutes"]
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../../../src/dpr/routes/journeys/download-report/tests.cy.ts"],
3
+ "sources": ["../../../../dpr/routes/journeys/download-report/tests.cy.ts"],
4
4
  "sourcesContent": ["import { updateRedisState } from 'test-app/routes/integrationTests/appStateUtils'\nimport { checkA11y, executeReportStubs } from '../../../../../cypress-tests/cypressUtils'\n\ncontext('Download report', () => {\n const path = '/embedded/platform/'\n let downloadRequestFormPage: string\n let viewReportUrl: string\n\n before(() => {\n executeReportStubs()\n cy.task('stubDefinitionRequestExamplesSuccess')\n cy.task('stubRequestSuccessResult20')\n cy.task('stubRequestSuccessResult100')\n cy.visit(path)\n cy.findByLabelText(/Reports catalogue.*/i).within(() => {\n cy.findByRole('row', {\n name: (_, element) => {\n return (\n Boolean(element.textContent?.includes('Successful Report')) &&\n Boolean(element.textContent?.includes('this will succeed'))\n )\n },\n }).within(() => {\n cy.findByRole('link', { name: 'Request report' }).click()\n })\n })\n checkA11y()\n cy.findByRole('button', { name: /Request/ }).click()\n checkA11y()\n cy.findByRole('heading', { level: 1, name: /Successful Report/ }).should('be.visible')\n cy.url().then((url) => {\n viewReportUrl = url\n })\n })\n\n beforeEach(() => {\n cy.visit(viewReportUrl)\n })\n\n describe('Enabling download', () => {\n it('should show the enable download button', () => {\n cy.findByLabelText(/Enable download/)\n .should('exist')\n .should('be.visible')\n cy.findByRole('heading', { name: 'To download this report' }).should('not.exist')\n })\n\n it('should show the download disabled message with link to form', () => {\n cy.findByLabelText(/Enable download/).click()\n cy.url().should('have.string', '/report/download-disabled')\n cy.findByRole('heading', { name: 'To download this report' }).should('be.visible')\n cy.findByRole('link', { name: 'Fill out a form' })\n })\n\n it('should go to the request download form', () => {\n cy.findByLabelText(/Enable download/).click()\n cy.findByRole('link', { name: 'Fill out a form' }).click()\n\n cy.url().then((url) => {\n downloadRequestFormPage = url\n })\n\n cy.url().should(\n 'match',\n /\\/embedded\\/platform\\/dpr\\/download-report\\/request-download\\/request-examples\\/request-example-success\\/tableId\\/tblId_[0-9]+\\/form/,\n )\n cy.location().should((location) => {\n expect(location.search).to.match(\n /.*reportUrl=\\/embedded\\/platform\\/dpr\\/view-report\\/async\\/report\\/request-examples\\/request-example-success\\/tblId_[0-9]+\\/report/,\n )\n })\n })\n })\n\n describe('Requesting download', () => {\n it('should prefill the user data in the request form', () => {\n cy.visit(downloadRequestFormPage)\n cy.findByRole('textbox', { name: 'What is your Full name?' }).should('have.value', 'Test User')\n cy.findByRole('textbox', { name: 'What is your Email address?' }).should('have.value', 'test@user.com')\n })\n\n it('should validate the required fields', () => {\n cy.visit(downloadRequestFormPage)\n cy.findByRole('alert').should('not.exist')\n\n cy.findAllByRole('paragraph').contains('Enter your Job title').should('not.exist')\n cy.findAllByRole('paragraph').contains('provide information on how you will use this data').should('not.exist')\n cy.get('#more-detail-error').should('not.be.visible')\n\n cy.findByRole('button', { name: /Submit request/ }).click()\n\n cy.findByRole('alert').should('exist')\n cy.findAllByRole('paragraph').contains('Enter your Job title').should('exist')\n cy.findAllByRole('paragraph').contains('provide information on how you will use this data').should('exist')\n })\n\n it('should submit the download request', () => {\n cy.visit(downloadRequestFormPage)\n cy.findByRole('textbox', { name: 'What is your Job title?' }).type('Software engineer')\n cy.findByRole('textbox', { name: 'Can you provide more detail' }).type('I like this report')\n\n cy.findByRole('button', { name: 'Submit request' }).click()\n cy.findByText(/You have been granted permission/).should('be.visible')\n\n cy.url().as('downloadRequestSubmittedPage')\n\n cy.url().and(\n 'match',\n /dpr\\/download-report\\/request-download\\/request-examples\\/request-example-success\\/tableId\\/tblId_[0-9]+\\/form\\/submitted/,\n )\n cy.findByRole('link', { name: /Return to report to download/ }).click()\n cy.findAllByRole('heading').contains('Successful Report').should('exist')\n cy.findByRole('button', { name: /download/ }).should('be.visible')\n\n cy.task('stubRequestSuccessResult10MissingFirstRow')\n cy.findByRole('button', { name: /download/ }).click()\n cy.task('checkContents10RowExcelValid').should('equal', true)\n })\n\n it('should redirect on trying to download after having the permission to download removed', () => {\n updateRedisState('downloadPermissions', [])\n cy.findByRole('heading', { name: /To download this report/ }).should('not.exist')\n cy.findByRole('button', { name: /download/ }).click()\n cy.findByRole('heading', { name: /To download this report/ }).should('be.visible')\n })\n })\n})\n"],
5
5
  "mappings": "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",
6
6
  "names": []
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../../../src/dpr/routes/journeys/download-report/utils.ts"],
3
+ "sources": ["../../../../dpr/routes/journeys/download-report/utils.ts"],
4
4
  "sourcesContent": ["import { Response, Request } from 'express'\nimport { json2csv, Json2CsvOptions } from 'json-2-csv'\nimport { KeysList } from 'json-2-csv/lib/types'\nimport { Services } from '../../../types/Services'\nimport Dict = NodeJS.Dict\nimport { LoadType } from '../../../types/UserReports'\nimport { components } from '../../../types/api'\nimport LocalsHelper from '../../../utils/localsHelper'\nimport { Template } from '../../../types/Templates'\nimport ReportQuery from '../../../types/ReportQuery'\n\nconst convertToCsv = (reportData: Dict<string>[], options: Json2CsvOptions) => {\n const csvData = json2csv(reportData, options)\n return csvData\n}\n\nexport const getKeys = (reportData: Dict<string>[], fields: components['schemas']['FieldDefinition'][]): KeysList => {\n const keys: KeysList = []\n const keyNames: string[] = []\n reportData.forEach((row) => {\n Object.keys(row).forEach((key) => {\n const field = fields.find((f) => f.name === key)\n if (field && !keyNames.includes(key)) {\n keyNames.push(key)\n keys.push({\n field: key,\n title: field.display,\n })\n }\n })\n })\n return keys\n}\n\nconst applyColumnsAndSort = (data: Dict<string>[], columns: string[]) => {\n return data.map((row) => {\n return Object.keys(row)\n .filter((key) => columns.includes(key))\n .reduce((obj: Dict<string>, key) => {\n // eslint-disable-next-line no-param-reassign\n obj[key] = row[key]\n return obj\n }, {})\n })\n}\n\nconst removeHtmlTags = (\n reportData: Dict<string>[],\n reportDefinition: components['schemas']['SingleVariantReportDefinition'],\n) => {\n // Find HMTL field + name\n const { specification } = reportDefinition.variant\n if (specification) {\n const { fields } = specification\n const htmlFields = fields.filter((field) => {\n return field.type === 'HTML'\n })\n\n if (htmlFields.length) {\n reportData.map((d) => {\n htmlFields.forEach((field) => {\n const { name } = field\n const colValue = d[name]\n if (colValue) {\n const innerText = /target=\"_blank\">(.*?)<\\/a>/g.exec(colValue)\n // eslint-disable-next-line prefer-destructuring, no-param-reassign\n d[name] = innerText ? innerText[1] : colValue\n }\n })\n return d\n })\n }\n }\n return reportData\n}\n\nconst dowloadAsyncData = async (args: {\n services: Services\n token: string\n tableId: string\n reportId: string\n id: string\n queryParams: {\n dataProductDefinitionsPath: string\n sortedAsc?: string\n sortColumn?: string\n }\n}) => {\n const { token, services, tableId, reportId, id, queryParams } = args\n const pageSize = await services.reportingService.getAsyncCount(token, tableId)\n const query: Record<string, string | string[]> = {\n ...queryParams,\n pageSize: pageSize.toString(),\n }\n return services.reportingService.getAsyncReport(token, reportId, id, tableId, query)\n}\n\nconst downloadSyncData = async (args: {\n definition: components['schemas']['SingleVariantReportDefinition']\n services: Services\n token: string\n queryParams: {\n dataProductDefinitionsPath: string\n sortedAsc?: string\n sortColumn?: string\n }\n}) => {\n const { token, services, queryParams, definition } = args\n const { variant } = definition\n const { resourceName, specification } = variant\n let data: Dict<string>[] = []\n\n if (specification) {\n const countReportQuery = new ReportQuery({\n fields: specification.fields,\n template: specification.template as Template,\n queryParams,\n definitionsPath: <string>queryParams.dataProductDefinitionsPath,\n })\n const count = await services.reportingService.getCount(resourceName, token, countReportQuery)\n\n const dataReportQuery = new ReportQuery({\n fields: specification.fields,\n template: specification.template as Template,\n queryParams: {\n ...queryParams,\n pageSize: count.toString(),\n },\n definitionsPath: <string>queryParams.dataProductDefinitionsPath,\n })\n const reportData = await services.reportingService.getListWithWarnings(resourceName, token, dataReportQuery)\n data = reportData.data\n }\n\n return data\n}\n\nexport const downloadReport = async ({\n req,\n services,\n res,\n redirect,\n loadType,\n}: {\n req: Request\n services: Services\n res: Response\n redirect: string\n loadType?: LoadType\n}) => {\n const { dprUser, token } = LocalsHelper.getValues(res)\n const {\n reportId,\n id,\n tableId,\n dataProductDefinitionsPath,\n reportName,\n name,\n cols: columns,\n sortedAsc,\n sortColumn,\n } = req.body\n const { downloadPermissionService } = services\n const canDownloadReport = await downloadPermissionService.downloadEnabledForReport(dprUser.id, reportId, id)\n if (!canDownloadReport) {\n res.redirect(redirect)\n } else {\n const definition = await services.reportingService.getDefinition(token, reportId, id, dataProductDefinitionsPath)\n const queryParams = {\n dataProductDefinitionsPath,\n ...(sortedAsc && { sortedAsc }),\n ...(sortColumn && { sortColumn }),\n }\n\n let reportData\n if (loadType === LoadType.SYNC) {\n reportData = await downloadSyncData({\n definition,\n services,\n token,\n queryParams,\n })\n } else {\n reportData = await dowloadAsyncData({\n services,\n token,\n reportId,\n id,\n tableId,\n queryParams,\n })\n }\n if (columns) {\n reportData = applyColumnsAndSort(reportData, JSON.parse(columns))\n }\n reportData = removeHtmlTags(reportData, definition)\n const fields = definition.variant.specification?.fields || []\n const keys: KeysList = getKeys(reportData, fields)\n const csvData = convertToCsv(reportData, { keys, emptyFieldValue: '' })\n\n res.setHeader('Content-Type', 'application/json')\n res.setHeader('Content-disposition', `attachment; filename=${reportName}-${name}-${new Date().toISOString()}.csv`)\n res.end(csvData)\n }\n}\n\nexport default {\n downloadReport,\n getKeys,\n}\n"],
5
5
  "mappings": "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",
6
6
  "names": ["ReportQuery", "LocalsHelper"]
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../../../../src/dpr/routes/journeys/my-reports/bookmarks/controller.ts"],
3
+ "sources": ["../../../../../dpr/routes/journeys/my-reports/bookmarks/controller.ts"],
4
4
  "sourcesContent": ["import { RequestHandler } from 'express'\nimport { Services } from '../../../../types/Services'\nimport LocalsHelper from '../../../../utils/localsHelper'\n\nclass BookmarkController {\n layoutPath: string\n\n services: Services\n\n constructor(layoutPath: string, services: Services) {\n this.layoutPath = layoutPath\n this.services = services\n }\n\n POST: RequestHandler = async (req, res) => {\n const { dprUser } = LocalsHelper.getValues(res)\n const { reportId, id, reportType, type } = req.body\n if (type === 'add') {\n await this.services.bookmarkService.addBookmark(dprUser.id, reportId, id, reportType)\n } else {\n await this.services.bookmarkService.removeBookmark(dprUser.id, id, reportId)\n }\n res.end()\n }\n}\n\nexport { BookmarkController }\nexport default BookmarkController\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,0BAAyB;AAEzB,MAAM,mBAAmB;AAAA,EACvB;AAAA,EAEA;AAAA,EAEA,YAAY,YAAoB,UAAoB;AAClD,SAAK,aAAa;AAClB,SAAK,WAAW;AAAA,EAClB;AAAA,EAEA,OAAuB,OAAO,KAAK,QAAQ;AACzC,UAAM,EAAE,QAAQ,IAAI,oBAAAA,QAAa,UAAU,GAAG;AAC9C,UAAM,EAAE,UAAU,IAAI,YAAY,KAAK,IAAI,IAAI;AAC/C,QAAI,SAAS,OAAO;AAClB,YAAM,KAAK,SAAS,gBAAgB,YAAY,QAAQ,IAAI,UAAU,IAAI,UAAU;AAAA,IACtF,OAAO;AACL,YAAM,KAAK,SAAS,gBAAgB,eAAe,QAAQ,IAAI,IAAI,QAAQ;AAAA,IAC7E;AACA,QAAI,IAAI;AAAA,EACV;AACF;AAGA,IAAO,qBAAQ;",
6
6
  "names": ["LocalsHelper"]
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../../../../../src/dpr/routes/journeys/my-reports/bookmarks/list/controller.ts"],
3
+ "sources": ["../../../../../../dpr/routes/journeys/my-reports/bookmarks/list/controller.ts"],
4
4
  "sourcesContent": ["import { RequestHandler } from 'express'\nimport BookmarklistUtils from '../../../../../components/user-reports/bookmarks/utils'\nimport { Services } from '../../../../../types/Services'\n\nclass BookmarkListingController {\n layoutPath: string\n\n services: Services\n\n constructor(layoutPath: string, services: Services) {\n this.layoutPath = layoutPath\n this.services = services\n }\n\n GET: RequestHandler = async (_req, res, _next) => {\n res.render(`dpr/routes/journeys/my-reports/view`, {\n title: 'Bookmarks',\n layoutPath: this.layoutPath,\n id: 'dpr-bookmarks-list',\n ...(await BookmarklistUtils.renderBookmarkList({ services: this.services, res })),\n })\n }\n}\n\nexport { BookmarkListingController }\nexport default BookmarkListingController\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,mBAA8B;AAG9B,MAAM,0BAA0B;AAAA,EAC9B;AAAA,EAEA;AAAA,EAEA,YAAY,YAAoB,UAAoB;AAClD,SAAK,aAAa;AAClB,SAAK,WAAW;AAAA,EAClB;AAAA,EAEA,MAAsB,OAAO,MAAM,KAAK,UAAU;AAChD,QAAI,OAAO,uCAAuC;AAAA,MAChD,OAAO;AAAA,MACP,YAAY,KAAK;AAAA,MACjB,IAAI;AAAA,MACJ,GAAI,MAAM,aAAAA,QAAkB,mBAAmB,EAAE,UAAU,KAAK,UAAU,IAAI,CAAC;AAAA,IACjF,CAAC;AAAA,EACH;AACF;AAGA,IAAO,qBAAQ;",
6
6
  "names": ["BookmarklistUtils"]
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../../../../../src/dpr/routes/journeys/my-reports/bookmarks/list/routes.ts"],
3
+ "sources": ["../../../../../../dpr/routes/journeys/my-reports/bookmarks/list/routes.ts"],
4
4
  "sourcesContent": ["/* eslint-disable no-param-reassign */\nimport { Router } from 'express'\nimport BookmarkListingController from './controller'\nimport { Services } from '../../../../../types/Services'\n\nexport function routes({ layoutPath, services }: { layoutPath: string; services: Services }) {\n const router = Router({ mergeParams: true })\n\n const controller = new BookmarkListingController(layoutPath, services)\n router.get(`/`, controller.GET)\n\n return router\n}\n\nexport default routes\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,qBAAuB;AACvB,wBAAsC;AAG/B,SAAS,OAAO,EAAE,YAAY,SAAS,GAA+C;AAC3F,QAAM,aAAS,uBAAO,EAAE,aAAa,KAAK,CAAC;AAE3C,QAAM,aAAa,IAAI,kBAAAA,QAA0B,YAAY,QAAQ;AACrE,SAAO,IAAI,KAAK,WAAW,GAAG;AAE9B,SAAO;AACT;AAEA,IAAO,iBAAQ;",
6
6
  "names": ["BookmarkListingController"]
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../../../../../src/dpr/routes/journeys/my-reports/bookmarks/list/tests.cy.ts"],
3
+ "sources": ["../../../../../../dpr/routes/journeys/my-reports/bookmarks/list/tests.cy.ts"],
4
4
  "sourcesContent": ["import { setRedisState } from '../../../../../../../test-app/routes/integrationTests/appStateUtils'\nimport { ReportType } from '../../../../../types/UserReports'\n\ncontext('Bookmarks list', () => {\n const path = '/embedded/platform/dpr/my-reports/bookmarks/list'\n\n before(() => {\n cy.task('resetStubs')\n cy.task('resetRedis')\n cy.task('stubDefinitions')\n cy.task('stubSingleSummaries')\n cy.task('stubDefinitionRequestExamplesSuccess')\n })\n\n it('is accessible', () => {\n setRedisState({\n requestedReports: [],\n recentlyViewedReports: [],\n bookmarks: [\n {\n reportId: 'request-examples',\n id: 'request-example-success',\n type: ReportType.REPORT,\n },\n ],\n downloadPermissions: [{ reportId: 'request-examples', id: 'request-example-success' }],\n defaultFilters: [],\n })\n cy.visit(path)\n cy.injectAxe()\n cy.checkA11y()\n cy.findAllByText(/Successful Report/).should('be.visible')\n })\n})\n"],
5
5
  "mappings": ";AAAA,2BAA8B;AAC9B,yBAA2B;AAE3B,QAAQ,kBAAkB,MAAM;AAC9B,QAAM,OAAO;AAEb,SAAO,MAAM;AACX,OAAG,KAAK,YAAY;AACpB,OAAG,KAAK,YAAY;AACpB,OAAG,KAAK,iBAAiB;AACzB,OAAG,KAAK,qBAAqB;AAC7B,OAAG,KAAK,sCAAsC;AAAA,EAChD,CAAC;AAED,KAAG,iBAAiB,MAAM;AACxB,4CAAc;AAAA,MACZ,kBAAkB,CAAC;AAAA,MACnB,uBAAuB,CAAC;AAAA,MACxB,WAAW;AAAA,QACT;AAAA,UACE,UAAU;AAAA,UACV,IAAI;AAAA,UACJ,MAAM,8BAAW;AAAA,QACnB;AAAA,MACF;AAAA,MACA,qBAAqB,CAAC,EAAE,UAAU,oBAAoB,IAAI,0BAA0B,CAAC;AAAA,MACrF,gBAAgB,CAAC;AAAA,IACnB,CAAC;AACD,OAAG,MAAM,IAAI;AACb,OAAG,UAAU;AACb,OAAG,UAAU;AACb,OAAG,cAAc,mBAAmB,EAAE,OAAO,YAAY;AAAA,EAC3D,CAAC;AACH,CAAC;",
6
6
  "names": []
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../../../../src/dpr/routes/journeys/my-reports/bookmarks/routes.ts"],
3
+ "sources": ["../../../../../dpr/routes/journeys/my-reports/bookmarks/routes.ts"],
4
4
  "sourcesContent": ["/* eslint-disable no-param-reassign */\nimport { Router } from 'express'\nimport { Services } from '../../../../types/Services'\nimport BookmarkController from './controller'\nimport listRoutes from './list/routes'\n\nexport function routes({ layoutPath, services }: { layoutPath: string; services: Services }) {\n const router = Router({ mergeParams: true })\n\n const controller = new BookmarkController(layoutPath, services)\n router.post('/', controller.POST)\n router.use(`/list`, listRoutes({ layoutPath, services }))\n return router\n}\n\nexport default routes\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,qBAAuB;AAEvB,wBAA+B;AAC/B,oBAAuB;AAEhB,SAAS,OAAO,EAAE,YAAY,SAAS,GAA+C;AAC3F,QAAM,aAAS,uBAAO,EAAE,aAAa,KAAK,CAAC;AAE3C,QAAM,aAAa,IAAI,kBAAAA,QAAmB,YAAY,QAAQ;AAC9D,SAAO,KAAK,KAAK,WAAW,IAAI;AAChC,SAAO,IAAI,aAAS,cAAAC,SAAW,EAAE,YAAY,SAAS,CAAC,CAAC;AACxD,SAAO;AACT;AAEA,IAAO,iBAAQ;",
6
6
  "names": ["BookmarkController", "listRoutes"]