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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (560) hide show
  1. package/dpr/assets/app.js.map +1 -1
  2. package/dpr/components/_async/async-filters-form/sortByTemplate.js +1 -1
  3. package/dpr/components/_async/async-filters-form/sortByTemplate.js.map +1 -1
  4. package/dpr/components/_async/async-filters-form/types.d.js +1 -1
  5. package/dpr/components/_async/async-filters-form/types.d.js.map +1 -1
  6. package/dpr/components/_async/async-filters-form/utils.js +1 -1
  7. package/dpr/components/_async/async-filters-form/utils.js.map +2 -2
  8. package/dpr/components/_async/async-filters-form/utils.test.ts +9 -9
  9. package/dpr/components/_async/async-filters-form/utils.ts +1 -1
  10. package/dpr/components/_async/async-filters-form/view.njk +6 -3
  11. package/dpr/components/_catalogue/catalogue/types.js +1 -1
  12. package/dpr/components/_catalogue/catalogue/types.js.map +1 -1
  13. package/dpr/components/_catalogue/catalogue/utils.js +1 -1
  14. package/dpr/components/_catalogue/catalogue/utils.js.map +2 -2
  15. package/dpr/components/_catalogue/catalogue/utils.test.ts +6 -3
  16. package/dpr/components/_catalogue/catalogue/utils.ts +1 -1
  17. package/dpr/components/_catalogue/catalogue-list/utils.js +1 -1
  18. package/dpr/components/_catalogue/catalogue-list/utils.js.map +2 -2
  19. package/dpr/components/_catalogue/catalogue-list/utils.test.ts +1 -0
  20. package/dpr/components/_catalogue/catalogue-list/utils.ts +5 -5
  21. package/dpr/components/_charts/chart/Buckets.js +1 -1
  22. package/dpr/components/_charts/chart/Buckets.js.map +3 -3
  23. package/dpr/components/_charts/chart/Buckets.ts +3 -3
  24. package/dpr/components/_charts/chart/heatmap/HeatmapChart.js +1 -1
  25. package/dpr/components/_charts/chart/heatmap/HeatmapChart.js.map +3 -3
  26. package/dpr/components/_charts/chart/heatmap/HeatmapChart.ts +1 -13
  27. package/dpr/components/_charts/chart/heatmap/types.js +1 -1
  28. package/dpr/components/_charts/chart/heatmap/types.js.map +2 -2
  29. package/dpr/components/_charts/chart/heatmap/types.ts +1 -1
  30. package/dpr/components/_charts/utils.js +1 -1
  31. package/dpr/components/_charts/utils.js.map +3 -3
  32. package/dpr/components/_charts/utils.test.ts +1 -0
  33. package/dpr/components/_charts/utils.ts +84 -43
  34. package/dpr/components/_dashboards/dashboard-list/utils.js +1 -1
  35. package/dpr/components/_dashboards/dashboard-list/utils.js.map +2 -2
  36. package/dpr/components/_dashboards/dashboard-list/utils.test.ts +1 -0
  37. package/dpr/components/_dashboards/dashboard-list/utils.ts +16 -11
  38. package/dpr/components/_dashboards/dashboard-visualisation/DashboardVisualisation.js +1 -1
  39. package/dpr/components/_dashboards/dashboard-visualisation/DashboardVisualisation.js.map +2 -2
  40. package/dpr/components/_dashboards/dashboard-visualisation/DashboardVisualisation.ts +1 -1
  41. package/dpr/components/_dashboards/dashboard-visualisation/types.js +1 -1
  42. package/dpr/components/_dashboards/dashboard-visualisation/types.js.map +2 -2
  43. package/dpr/components/_dashboards/dashboard-visualisation/types.ts +8 -8
  44. package/dpr/components/_dashboards/scorecard/Scorecard.js +1 -1
  45. package/dpr/components/_dashboards/scorecard/Scorecard.js.map +2 -2
  46. package/dpr/components/_dashboards/scorecard/Scorecard.ts +8 -8
  47. package/dpr/components/_dashboards/scorecard/types.js +1 -1
  48. package/dpr/components/_dashboards/scorecard/types.js.map +2 -2
  49. package/dpr/components/_dashboards/scorecard/types.ts +12 -10
  50. package/dpr/components/_dashboards/scorecard/utils.js +1 -1
  51. package/dpr/components/_dashboards/scorecard/utils.js.map +1 -1
  52. package/dpr/components/_dashboards/scorecard/utils.test.ts +1 -0
  53. package/dpr/components/_filters/filter-input/enum.js +1 -1
  54. package/dpr/components/_filters/filter-input/enum.js.map +1 -1
  55. package/dpr/components/_filters/filter-input/filters.js +1 -1
  56. package/dpr/components/_filters/filter-input/filters.js.map +1 -1
  57. package/dpr/components/_filters/filter-input/filters.test.ts +1 -0
  58. package/dpr/components/_filters/filter-input/types.d.js +1 -1
  59. package/dpr/components/_filters/filter-input/types.d.js.map +1 -1
  60. package/dpr/components/_filters/filters-selected/utils.js +1 -1
  61. package/dpr/components/_filters/filters-selected/utils.js.map +3 -3
  62. package/dpr/components/_filters/filters-selected/utils.test.ts +7 -4
  63. package/dpr/components/_filters/filters-selected/utils.ts +1 -1
  64. package/dpr/components/_filters/filtersTypeEnum.js +1 -1
  65. package/dpr/components/_filters/filtersTypeEnum.js.map +1 -1
  66. package/dpr/components/_filters/types.d.js +1 -1
  67. package/dpr/components/_filters/types.d.js.map +2 -2
  68. package/dpr/components/_filters/types.d.ts +5 -5
  69. package/dpr/components/_filters/utils.js +1 -1
  70. package/dpr/components/_filters/utils.js.map +2 -2
  71. package/dpr/components/_filters/utils.test.ts +54 -49
  72. package/dpr/components/_filters/utils.ts +16 -20
  73. package/dpr/components/_inputs/date-input/utils.js +1 -1
  74. package/dpr/components/_inputs/date-input/utils.js.map +1 -1
  75. package/dpr/components/_inputs/date-input/utils.test.ts +1 -0
  76. package/dpr/components/_inputs/date-range/clientClass.mjs +2 -2
  77. package/dpr/components/_inputs/date-range/types.js +1 -1
  78. package/dpr/components/_inputs/date-range/types.js.map +2 -2
  79. package/dpr/components/_inputs/date-range/types.ts +2 -2
  80. package/dpr/components/_inputs/date-range/utils.js +1 -1
  81. package/dpr/components/_inputs/date-range/utils.js.map +2 -2
  82. package/dpr/components/_inputs/date-range/utils.test.ts +5 -7
  83. package/dpr/components/_inputs/date-range/utils.ts +4 -4
  84. package/dpr/components/_inputs/date-range/view.njk +1 -0
  85. package/dpr/components/_inputs/granular-date-range/types.js +1 -1
  86. package/dpr/components/_inputs/granular-date-range/types.js.map +1 -1
  87. package/dpr/components/_inputs/granular-date-range/utils.js +1 -1
  88. package/dpr/components/_inputs/granular-date-range/utils.js.map +1 -1
  89. package/dpr/components/_inputs/granular-date-range/utils.test.ts +1 -0
  90. package/dpr/components/_inputs/multi-select/utils.js +1 -1
  91. package/dpr/components/_inputs/multi-select/utils.js.map +3 -3
  92. package/dpr/components/_inputs/multi-select/utils.ts +1 -1
  93. package/dpr/components/_inputs/multi-select/utilt.test.ts +29 -14
  94. package/dpr/components/_inputs/start-end-date/utils.js +1 -1
  95. package/dpr/components/_inputs/start-end-date/utils.js.map +1 -1
  96. package/dpr/components/_inputs/start-end-date/utils.test.ts +1 -0
  97. package/dpr/components/_reports/report-actions/actionsTemplate.js +1 -1
  98. package/dpr/components/_reports/report-actions/actionsTemplate.js.map +1 -1
  99. package/dpr/components/_reports/report-actions/types.d.js +1 -1
  100. package/dpr/components/_reports/report-actions/types.d.js.map +2 -2
  101. package/dpr/components/_reports/report-actions/types.d.ts +1 -1
  102. package/dpr/components/_reports/report-actions/utils.js +1 -1
  103. package/dpr/components/_reports/report-actions/utils.js.map +1 -1
  104. package/dpr/components/_reports/report-actions/utils.test.ts +8 -4
  105. package/dpr/components/_reports/report-columns-form/types.d.js +1 -1
  106. package/dpr/components/_reports/report-columns-form/types.d.js.map +1 -1
  107. package/dpr/components/_reports/report-columns-form/utils.js +1 -1
  108. package/dpr/components/_reports/report-columns-form/utils.js.map +2 -2
  109. package/dpr/components/_reports/report-columns-form/utils.ts +1 -1
  110. package/dpr/components/_reports/report-data-table/types.d.js +1 -1
  111. package/dpr/components/_reports/report-data-table/types.d.js.map +1 -1
  112. package/dpr/components/_reports/report-data-table/utils.js +1 -1
  113. package/dpr/components/_reports/report-data-table/utils.js.map +3 -3
  114. package/dpr/components/_reports/report-data-table/utils.test.ts +15 -8
  115. package/dpr/components/_reports/report-data-table/utils.ts +20 -8
  116. package/dpr/components/_reports/report-pagination/types.d.js +1 -1
  117. package/dpr/components/_reports/report-pagination/types.d.js.map +2 -2
  118. package/dpr/components/_reports/report-pagination/types.d.ts +2 -2
  119. package/dpr/components/_reports/report-pagination/utils.js +1 -1
  120. package/dpr/components/_reports/report-pagination/utils.js.map +1 -1
  121. package/dpr/components/_reports/report-pagination/utils.test.ts +1 -0
  122. package/dpr/components/_reports/report-totals/utils.js +1 -1
  123. package/dpr/components/_reports/report-totals/utils.js.map +1 -1
  124. package/dpr/components/card-group/utils.js +1 -1
  125. package/dpr/components/card-group/utils.js.map +1 -1
  126. package/dpr/components/card-group/utils.test.ts +7 -0
  127. package/dpr/components/report-list/defaultTokenProvider.js +1 -1
  128. package/dpr/components/report-list/defaultTokenProvider.js.map +3 -3
  129. package/dpr/components/report-list/defaultTokenProvider.ts +3 -3
  130. package/dpr/components/report-list/types.d.js +1 -1
  131. package/dpr/components/report-list/types.d.js.map +1 -1
  132. package/dpr/components/report-list/utils.js +1 -1
  133. package/dpr/components/report-list/utils.js.map +2 -2
  134. package/dpr/components/report-list/utils.test.ts +6 -4
  135. package/dpr/components/report-list/utils.ts +5 -5
  136. package/dpr/components/show-more/utils.js +1 -1
  137. package/dpr/components/show-more/utils.js.map +1 -1
  138. package/dpr/components/user-reports/bookmarks/utils.js +1 -1
  139. package/dpr/components/user-reports/bookmarks/utils.js.map +3 -3
  140. package/dpr/components/user-reports/bookmarks/utils.test.ts +14 -11
  141. package/dpr/components/user-reports/bookmarks/utils.ts +26 -31
  142. package/dpr/components/user-reports/requested/utils.js +1 -1
  143. package/dpr/components/user-reports/requested/utils.js.map +3 -3
  144. package/dpr/components/user-reports/requested/utils.test.ts +4 -3
  145. package/dpr/components/user-reports/requested/utils.ts +4 -3
  146. package/dpr/components/user-reports/types.d.js +1 -1
  147. package/dpr/components/user-reports/types.d.js.map +2 -2
  148. package/dpr/components/user-reports/types.d.ts +1 -1
  149. package/dpr/components/user-reports/utils.js +1 -1
  150. package/dpr/components/user-reports/utils.js.map +3 -3
  151. package/dpr/components/user-reports/utils.test.ts +48 -47
  152. package/dpr/components/user-reports/utils.ts +51 -57
  153. package/dpr/components/user-reports/viewed/utils.js +1 -1
  154. package/dpr/components/user-reports/viewed/utils.js.map +2 -2
  155. package/dpr/components/user-reports/viewed/utils.ts +5 -4
  156. package/dpr/data/agentConfig.js +1 -1
  157. package/dpr/data/agentConfig.js.map +1 -1
  158. package/dpr/data/dashboardClient.js +1 -1
  159. package/dpr/data/dashboardClient.js.map +2 -2
  160. package/dpr/data/dashboardClient.ts +2 -2
  161. package/dpr/data/dprReportingClient.js +1 -1
  162. package/dpr/data/dprReportingClient.js.map +3 -3
  163. package/dpr/data/dprReportingClient.ts +3 -3
  164. package/dpr/data/missingReportClient.js +2 -0
  165. package/dpr/data/missingReportClient.js.map +7 -0
  166. package/dpr/{services/missingReport → data}/missingReportClient.ts +4 -4
  167. package/dpr/data/productCollectionClient.js +2 -0
  168. package/dpr/data/productCollectionClient.js.map +7 -0
  169. package/dpr/data/productCollectionClient.ts +28 -0
  170. package/dpr/data/reportDataStore.js +1 -1
  171. package/dpr/data/reportDataStore.js.map +1 -1
  172. package/dpr/data/reportingClient.js +1 -1
  173. package/dpr/data/reportingClient.js.map +3 -3
  174. package/dpr/data/reportingClient.ts +7 -9
  175. package/dpr/data/restClient.js +1 -1
  176. package/dpr/data/restClient.js.map +2 -2
  177. package/dpr/data/restClient.ts +5 -5
  178. package/dpr/data/types.d.js +1 -1
  179. package/dpr/data/types.d.js.map +2 -2
  180. package/dpr/data/types.d.ts +1 -1
  181. package/dpr/middleware/reportAuthoriser.js +1 -1
  182. package/dpr/middleware/reportAuthoriser.js.map +2 -2
  183. package/dpr/middleware/reportAuthoriser.ts +2 -2
  184. package/dpr/middleware/setUpDprResources.js +1 -1
  185. package/dpr/middleware/setUpDprResources.js.map +2 -2
  186. package/dpr/middleware/setUpDprResources.test.ts +59 -20
  187. package/dpr/middleware/setUpDprResources.ts +30 -29
  188. package/dpr/middleware/setUpNestedRoute.js +1 -1
  189. package/dpr/middleware/setUpNestedRoute.js.map +2 -2
  190. package/dpr/middleware/setUpNestedRoute.ts +1 -1
  191. package/dpr/routes/index.js +1 -1
  192. package/dpr/routes/index.js.map +2 -2
  193. package/dpr/routes/index.ts +1 -2
  194. package/dpr/routes/journeys/download-report/controller.js +1 -1
  195. package/dpr/routes/journeys/download-report/controller.js.map +3 -3
  196. package/dpr/routes/journeys/download-report/controller.ts +7 -6
  197. package/dpr/routes/journeys/download-report/request-download/form/controller.js +1 -1
  198. package/dpr/routes/journeys/download-report/request-download/form/controller.js.map +3 -3
  199. package/dpr/routes/journeys/download-report/request-download/form/controller.ts +1 -1
  200. package/dpr/routes/journeys/download-report/request-download/form/routes.js +1 -1
  201. package/dpr/routes/journeys/download-report/request-download/form/routes.js.map +1 -1
  202. package/dpr/routes/journeys/download-report/request-download/form/submitted/controller.js +1 -1
  203. package/dpr/routes/journeys/download-report/request-download/form/submitted/controller.js.map +3 -3
  204. package/dpr/routes/journeys/download-report/request-download/form/submitted/controller.ts +1 -1
  205. package/dpr/routes/journeys/download-report/request-download/form/submitted/routes.js +1 -1
  206. package/dpr/routes/journeys/download-report/request-download/form/submitted/routes.js.map +1 -1
  207. package/dpr/routes/journeys/download-report/request-download/form/submitted/tests.cy.js +1 -1
  208. package/dpr/routes/journeys/download-report/request-download/form/submitted/tests.cy.js.map +1 -1
  209. package/dpr/routes/journeys/download-report/request-download/form/tests.cy.js +1 -1
  210. package/dpr/routes/journeys/download-report/request-download/form/tests.cy.js.map +1 -1
  211. package/dpr/routes/journeys/download-report/request-download/routes.js +1 -1
  212. package/dpr/routes/journeys/download-report/request-download/routes.js.map +1 -1
  213. package/dpr/routes/journeys/download-report/request-download/service.js +1 -1
  214. package/dpr/routes/journeys/download-report/request-download/service.js.map +3 -3
  215. package/dpr/routes/journeys/download-report/request-download/service.ts +20 -8
  216. package/dpr/routes/journeys/download-report/routes.js +1 -1
  217. package/dpr/routes/journeys/download-report/routes.js.map +3 -3
  218. package/dpr/routes/journeys/download-report/routes.ts +1 -4
  219. package/dpr/routes/journeys/download-report/tests.cy.js +1 -1
  220. package/dpr/routes/journeys/download-report/tests.cy.js.map +2 -2
  221. package/dpr/routes/journeys/download-report/tests.cy.ts +4 -1
  222. package/dpr/routes/journeys/download-report/utils.js +1 -1
  223. package/dpr/routes/journeys/download-report/utils.js.map +2 -2
  224. package/dpr/routes/journeys/download-report/utils.ts +2 -4
  225. package/dpr/routes/journeys/my-reports/bookmarks/controller.js +1 -1
  226. package/dpr/routes/journeys/my-reports/bookmarks/controller.js.map +1 -1
  227. package/dpr/routes/journeys/my-reports/bookmarks/list/controller.js +1 -1
  228. package/dpr/routes/journeys/my-reports/bookmarks/list/controller.js.map +3 -3
  229. package/dpr/routes/journeys/my-reports/bookmarks/list/controller.ts +2 -2
  230. package/dpr/routes/journeys/my-reports/bookmarks/list/routes.js +1 -1
  231. package/dpr/routes/journeys/my-reports/bookmarks/list/routes.js.map +1 -1
  232. package/dpr/routes/journeys/my-reports/bookmarks/list/tests.cy.js +1 -1
  233. package/dpr/routes/journeys/my-reports/bookmarks/list/tests.cy.js.map +2 -2
  234. package/dpr/routes/journeys/my-reports/bookmarks/list/tests.cy.ts +1 -2
  235. package/dpr/routes/journeys/my-reports/bookmarks/routes.js +1 -1
  236. package/dpr/routes/journeys/my-reports/bookmarks/routes.js.map +1 -1
  237. package/dpr/routes/journeys/my-reports/bookmarks/service.js +3 -3
  238. package/dpr/routes/journeys/my-reports/bookmarks/service.js.map +3 -3
  239. package/dpr/routes/journeys/my-reports/bookmarks/service.ts +31 -18
  240. package/dpr/routes/journeys/my-reports/bookmarks/tests.cy.js +1 -1
  241. package/dpr/routes/journeys/my-reports/bookmarks/tests.cy.js.map +2 -2
  242. package/dpr/routes/journeys/my-reports/bookmarks/tests.cy.ts +26 -26
  243. package/dpr/routes/journeys/my-reports/bookmarks/utils.js +1 -1
  244. package/dpr/routes/journeys/my-reports/bookmarks/utils.js.map +3 -3
  245. package/dpr/routes/journeys/my-reports/bookmarks/utils.ts +10 -11
  246. package/dpr/routes/journeys/my-reports/recently-viewed/controller.js +1 -1
  247. package/dpr/routes/journeys/my-reports/recently-viewed/controller.js.map +1 -1
  248. package/dpr/routes/journeys/my-reports/recently-viewed/list/controller.js +1 -1
  249. package/dpr/routes/journeys/my-reports/recently-viewed/list/controller.js.map +3 -3
  250. package/dpr/routes/journeys/my-reports/recently-viewed/list/controller.ts +1 -1
  251. package/dpr/routes/journeys/my-reports/recently-viewed/list/routes.js +1 -1
  252. package/dpr/routes/journeys/my-reports/recently-viewed/list/routes.js.map +1 -1
  253. package/dpr/routes/journeys/my-reports/recently-viewed/list/tests.cy.js +1 -1
  254. package/dpr/routes/journeys/my-reports/recently-viewed/list/tests.cy.js.map +2 -2
  255. package/dpr/routes/journeys/my-reports/recently-viewed/list/tests.cy.ts +7 -4
  256. package/dpr/routes/journeys/my-reports/recently-viewed/routes.js +1 -1
  257. package/dpr/routes/journeys/my-reports/recently-viewed/routes.js.map +1 -1
  258. package/dpr/routes/journeys/my-reports/recently-viewed/service.js +1 -1
  259. package/dpr/routes/journeys/my-reports/recently-viewed/service.js.map +3 -3
  260. package/dpr/routes/journeys/my-reports/recently-viewed/service.ts +0 -2
  261. package/dpr/routes/journeys/my-reports/requested-reports/controller.js +1 -1
  262. package/dpr/routes/journeys/my-reports/requested-reports/controller.js.map +1 -1
  263. package/dpr/routes/journeys/my-reports/requested-reports/list/controller.js +1 -1
  264. package/dpr/routes/journeys/my-reports/requested-reports/list/controller.js.map +3 -3
  265. package/dpr/routes/journeys/my-reports/requested-reports/list/controller.ts +1 -1
  266. package/dpr/routes/journeys/my-reports/requested-reports/list/routes.js +1 -1
  267. package/dpr/routes/journeys/my-reports/requested-reports/list/routes.js.map +1 -1
  268. package/dpr/routes/journeys/my-reports/requested-reports/list/tests.cy.js +1 -1
  269. package/dpr/routes/journeys/my-reports/requested-reports/list/tests.cy.js.map +1 -1
  270. package/dpr/routes/journeys/my-reports/requested-reports/routes.js +1 -1
  271. package/dpr/routes/journeys/my-reports/requested-reports/routes.js.map +1 -1
  272. package/dpr/routes/journeys/my-reports/requested-reports/service.js +1 -1
  273. package/dpr/routes/journeys/my-reports/requested-reports/service.js.map +3 -3
  274. package/dpr/routes/journeys/my-reports/requested-reports/service.ts +25 -17
  275. package/dpr/routes/journeys/my-reports/routes.js +1 -1
  276. package/dpr/routes/journeys/my-reports/routes.js.map +3 -3
  277. package/dpr/routes/journeys/my-reports/routes.ts +0 -3
  278. package/dpr/routes/journeys/product-collection/routes.js +1 -1
  279. package/dpr/routes/journeys/product-collection/routes.js.map +1 -1
  280. package/dpr/routes/journeys/product-collection/selected/controller.js +1 -1
  281. package/dpr/routes/journeys/product-collection/selected/controller.js.map +1 -1
  282. package/dpr/routes/journeys/product-collection/selected/routes.js +1 -1
  283. package/dpr/routes/journeys/product-collection/selected/routes.js.map +1 -1
  284. package/dpr/routes/journeys/product-collection/selected/tests.cy.js +1 -1
  285. package/dpr/routes/journeys/product-collection/selected/tests.cy.js.map +2 -2
  286. package/dpr/routes/journeys/product-collection/selected/tests.cy.ts +6 -4
  287. package/dpr/routes/journeys/product-collection/selected/validation.js +1 -1
  288. package/dpr/routes/journeys/product-collection/selected/validation.js.map +1 -1
  289. package/dpr/routes/journeys/request-missing-report/form/controller.js +1 -1
  290. package/dpr/routes/journeys/request-missing-report/form/controller.js.map +3 -3
  291. package/dpr/routes/journeys/request-missing-report/form/controller.ts +21 -19
  292. package/dpr/routes/journeys/request-missing-report/form/routes.js +1 -1
  293. package/dpr/routes/journeys/request-missing-report/form/routes.js.map +1 -1
  294. package/dpr/routes/journeys/request-missing-report/form/tests.cy.js +1 -1
  295. package/dpr/routes/journeys/request-missing-report/form/tests.cy.js.map +1 -1
  296. package/dpr/routes/journeys/request-missing-report/form/validation.js +1 -1
  297. package/dpr/routes/journeys/request-missing-report/form/validation.js.map +1 -1
  298. package/dpr/routes/journeys/request-missing-report/routes.js +1 -1
  299. package/dpr/routes/journeys/request-missing-report/routes.js.map +1 -1
  300. package/dpr/routes/journeys/request-missing-report/submitted/controller.js +1 -1
  301. package/dpr/routes/journeys/request-missing-report/submitted/controller.js.map +1 -1
  302. package/dpr/routes/journeys/request-missing-report/submitted/routes.js +1 -1
  303. package/dpr/routes/journeys/request-missing-report/submitted/routes.js.map +1 -1
  304. package/dpr/routes/journeys/request-missing-report/submitted/tests.cy.js +1 -1
  305. package/dpr/routes/journeys/request-missing-report/submitted/tests.cy.js.map +1 -1
  306. package/dpr/routes/journeys/request-missing-report/tests.cy.js +1 -1
  307. package/dpr/routes/journeys/request-missing-report/tests.cy.js.map +2 -2
  308. package/dpr/routes/journeys/request-missing-report/tests.cy.ts +1 -1
  309. package/dpr/routes/journeys/request-report/controller.js +1 -1
  310. package/dpr/routes/journeys/request-report/controller.js.map +3 -3
  311. package/dpr/routes/journeys/request-report/controller.ts +1 -1
  312. package/dpr/routes/journeys/request-report/filters/controller.js +1 -1
  313. package/dpr/routes/journeys/request-report/filters/controller.js.map +3 -3
  314. package/dpr/routes/journeys/request-report/filters/controller.ts +7 -8
  315. package/dpr/routes/journeys/request-report/filters/routes.js +1 -1
  316. package/dpr/routes/journeys/request-report/filters/routes.js.map +1 -1
  317. package/dpr/routes/journeys/request-report/filters/tests.cy.js +1 -1
  318. package/dpr/routes/journeys/request-report/filters/tests.cy.js.map +1 -1
  319. package/dpr/routes/journeys/request-report/filters/utils.js +1 -1
  320. package/dpr/routes/journeys/request-report/filters/utils.js.map +3 -3
  321. package/dpr/routes/journeys/request-report/filters/utils.ts +38 -23
  322. package/dpr/routes/journeys/request-report/filters/view.njk +2 -1
  323. package/dpr/routes/journeys/request-report/routes.js +1 -1
  324. package/dpr/routes/journeys/request-report/routes.js.map +2 -2
  325. package/dpr/routes/journeys/request-report/routes.ts +2 -2
  326. package/dpr/routes/journeys/request-report/status/controller.js +1 -1
  327. package/dpr/routes/journeys/request-report/status/controller.js.map +3 -3
  328. package/dpr/routes/journeys/request-report/status/controller.ts +4 -4
  329. package/dpr/routes/journeys/request-report/status/routes.js +1 -1
  330. package/dpr/routes/journeys/request-report/status/routes.js.map +1 -1
  331. package/dpr/routes/journeys/request-report/status/tests.cy.js +1 -1
  332. package/dpr/routes/journeys/request-report/status/tests.cy.js.map +2 -2
  333. package/dpr/routes/journeys/request-report/status/tests.cy.ts +9 -4
  334. package/dpr/routes/journeys/request-report/status/utils.js +1 -1
  335. package/dpr/routes/journeys/request-report/status/utils.js.map +3 -3
  336. package/dpr/routes/journeys/request-report/status/utils.ts +10 -13
  337. package/dpr/routes/journeys/request-report/tests.cy.js +1 -1
  338. package/dpr/routes/journeys/request-report/tests.cy.js.map +2 -2
  339. package/dpr/routes/journeys/request-report/tests.cy.ts +14 -11
  340. package/dpr/routes/journeys/routes.js +1 -1
  341. package/dpr/routes/journeys/routes.js.map +1 -1
  342. package/dpr/routes/journeys/view-report/async/controller.js +1 -1
  343. package/dpr/routes/journeys/view-report/async/controller.js.map +3 -3
  344. package/dpr/routes/journeys/view-report/async/controller.ts +4 -4
  345. package/dpr/routes/journeys/view-report/async/dashboard/controller.js +1 -1
  346. package/dpr/routes/journeys/view-report/async/dashboard/controller.js.map +3 -3
  347. package/dpr/routes/journeys/view-report/async/dashboard/controller.ts +4 -4
  348. package/dpr/routes/journeys/view-report/async/dashboard/routes.js +1 -1
  349. package/dpr/routes/journeys/view-report/async/dashboard/routes.js.map +1 -1
  350. package/dpr/routes/journeys/view-report/async/dashboard/tests.cy.js +1 -1
  351. package/dpr/routes/journeys/view-report/async/dashboard/tests.cy.js.map +2 -2
  352. package/dpr/routes/journeys/view-report/async/dashboard/tests.cy.ts +2 -2
  353. package/dpr/routes/journeys/view-report/async/dashboard/utils.js +1 -1
  354. package/dpr/routes/journeys/view-report/async/dashboard/utils.js.map +3 -3
  355. package/dpr/routes/journeys/view-report/async/dashboard/utils.ts +6 -8
  356. package/dpr/routes/journeys/view-report/async/report/controller.js +1 -1
  357. package/dpr/routes/journeys/view-report/async/report/controller.js.map +3 -3
  358. package/dpr/routes/journeys/view-report/async/report/controller.ts +5 -5
  359. package/dpr/routes/journeys/view-report/async/report/routes.js +1 -1
  360. package/dpr/routes/journeys/view-report/async/report/routes.js.map +1 -1
  361. package/dpr/routes/journeys/view-report/async/report/tests.cy.js +1 -1
  362. package/dpr/routes/journeys/view-report/async/report/tests.cy.js.map +2 -2
  363. package/dpr/routes/journeys/view-report/async/report/tests.cy.ts +9 -7
  364. package/dpr/routes/journeys/view-report/async/report/types.js +1 -1
  365. package/dpr/routes/journeys/view-report/async/report/types.js.map +2 -2
  366. package/dpr/routes/journeys/view-report/async/report/types.ts +8 -8
  367. package/dpr/routes/journeys/view-report/async/report/utils.js +1 -1
  368. package/dpr/routes/journeys/view-report/async/report/utils.js.map +2 -2
  369. package/dpr/routes/journeys/view-report/async/report/utils.ts +16 -18
  370. package/dpr/routes/journeys/view-report/async/routes.js +1 -1
  371. package/dpr/routes/journeys/view-report/async/routes.js.map +1 -1
  372. package/dpr/routes/journeys/view-report/controller.js +1 -1
  373. package/dpr/routes/journeys/view-report/controller.js.map +3 -3
  374. package/dpr/routes/journeys/view-report/controller.ts +1 -1
  375. package/dpr/routes/journeys/view-report/routes.js +1 -1
  376. package/dpr/routes/journeys/view-report/routes.js.map +2 -2
  377. package/dpr/routes/journeys/view-report/routes.ts +6 -3
  378. package/dpr/routes/journeys/view-report/sync/load-report/controller.js +1 -1
  379. package/dpr/routes/journeys/view-report/sync/load-report/controller.js.map +2 -2
  380. package/dpr/routes/journeys/view-report/sync/load-report/controller.ts +1 -1
  381. package/dpr/routes/journeys/view-report/sync/load-report/routes.js +1 -1
  382. package/dpr/routes/journeys/view-report/sync/load-report/routes.js.map +1 -1
  383. package/dpr/routes/journeys/view-report/sync/report/controller.js +1 -1
  384. package/dpr/routes/journeys/view-report/sync/report/controller.js.map +3 -3
  385. package/dpr/routes/journeys/view-report/sync/report/controller.ts +6 -6
  386. package/dpr/routes/journeys/view-report/sync/report/routes.js +1 -1
  387. package/dpr/routes/journeys/view-report/sync/report/routes.js.map +1 -1
  388. package/dpr/routes/journeys/view-report/sync/report/utils.js +1 -1
  389. package/dpr/routes/journeys/view-report/sync/report/utils.js.map +3 -3
  390. package/dpr/routes/journeys/view-report/sync/report/utils.ts +29 -19
  391. package/dpr/routes/journeys/view-report/sync/routes.js +1 -1
  392. package/dpr/routes/journeys/view-report/sync/routes.js.map +1 -1
  393. package/dpr/routes/journeys/view-report/sync/tests.cy.js +1 -1
  394. package/dpr/routes/journeys/view-report/sync/tests.cy.js.map +2 -2
  395. package/dpr/routes/journeys/view-report/sync/tests.cy.ts +1 -1
  396. package/dpr/routes/journeys/view-report/utils.js +1 -1
  397. package/dpr/routes/journeys/view-report/utils.js.map +3 -3
  398. package/dpr/routes/journeys/view-report/utils.ts +22 -12
  399. package/dpr/services/dashboardService.js +1 -1
  400. package/dpr/services/dashboardService.js.map +3 -3
  401. package/dpr/services/dashboardService.ts +1 -3
  402. package/dpr/services/defaultFilterValuesService.js +1 -1
  403. package/dpr/services/defaultFilterValuesService.js.map +3 -3
  404. package/dpr/services/defaultFilterValuesService.ts +34 -15
  405. package/dpr/services/index.js +1 -1
  406. package/dpr/services/index.js.map +1 -1
  407. package/dpr/services/missingReport/missingReportService.js +2 -0
  408. package/dpr/services/missingReport/missingReportService.js.map +7 -0
  409. package/dpr/services/missingReport/missingReportService.ts +26 -0
  410. package/dpr/services/productCollection/productCollectionService.js +1 -1
  411. package/dpr/services/productCollection/productCollectionService.js.map +3 -3
  412. package/dpr/services/productCollection/productCollectionService.ts +19 -14
  413. package/dpr/services/productCollection/productCollectionStoreService.js +1 -1
  414. package/dpr/services/productCollection/productCollectionStoreService.js.map +3 -3
  415. package/dpr/services/productCollection/productCollectionStoreService.ts +9 -3
  416. package/dpr/services/reportStoreService.js +1 -1
  417. package/dpr/services/reportStoreService.js.map +2 -2
  418. package/dpr/services/reportStoreService.ts +1 -1
  419. package/dpr/services/reportingService.js +1 -1
  420. package/dpr/services/reportingService.js.map +3 -3
  421. package/dpr/services/reportingService.ts +1 -3
  422. package/dpr/setUpNunjucksFilters.js +1 -1
  423. package/dpr/setUpNunjucksFilters.js.map +1 -1
  424. package/dpr/types/AsyncReportUtils.js +1 -1
  425. package/dpr/types/AsyncReportUtils.js.map +2 -2
  426. package/dpr/types/AsyncReportUtils.ts +2 -1
  427. package/dpr/types/Bookmark.js +1 -1
  428. package/dpr/types/Bookmark.js.map +2 -2
  429. package/dpr/types/Bookmark.ts +9 -3
  430. package/dpr/types/Charts.js +1 -1
  431. package/dpr/types/Charts.js.map +1 -1
  432. package/dpr/types/Download.js +1 -1
  433. package/dpr/types/Download.js.map +1 -1
  434. package/dpr/types/DprConfig.js +1 -1
  435. package/dpr/types/DprConfig.js.map +2 -2
  436. package/dpr/types/DprConfig.ts +8 -0
  437. package/dpr/types/DprUser.js +1 -1
  438. package/dpr/types/DprUser.js.map +2 -2
  439. package/dpr/types/DprUser.ts +2 -2
  440. package/dpr/types/EmbeddedReportUtils.js +1 -1
  441. package/dpr/types/EmbeddedReportUtils.js.map +1 -1
  442. package/dpr/types/ExecutionData.d.js +1 -1
  443. package/dpr/types/ExecutionData.d.js.map +2 -2
  444. package/dpr/types/ExecutionData.d.ts +2 -2
  445. package/dpr/types/Metrics.js +1 -1
  446. package/dpr/types/Metrics.js.map +2 -2
  447. package/dpr/types/Metrics.ts +1 -1
  448. package/dpr/types/ReportQuery.js +1 -1
  449. package/dpr/types/ReportQuery.js.map +2 -2
  450. package/dpr/types/ReportQuery.ts +15 -11
  451. package/dpr/types/ReportStore.js +1 -1
  452. package/dpr/types/ReportStore.js.map +1 -1
  453. package/dpr/types/Services.d.js +1 -1
  454. package/dpr/types/Services.d.js.map +2 -2
  455. package/dpr/types/Services.d.ts +8 -8
  456. package/dpr/types/Templates.d.js +1 -1
  457. package/dpr/types/Templates.d.js.map +1 -1
  458. package/dpr/types/UserReports.js +1 -1
  459. package/dpr/types/UserReports.js.map +2 -2
  460. package/dpr/types/UserReports.ts +29 -15
  461. package/dpr/types/api.d.js +1 -1
  462. package/dpr/types/api.d.js.map +1 -1
  463. package/dpr/types/index.d.js +1 -1
  464. package/dpr/types/index.d.js.map +2 -2
  465. package/dpr/types/index.d.ts +1 -1
  466. package/dpr/utils/CollatedSummaryBuilder/CollatedSummaryBuilder.js +1 -1
  467. package/dpr/utils/CollatedSummaryBuilder/CollatedSummaryBuilder.js.map +1 -1
  468. package/dpr/utils/CollatedSummaryBuilder/CollatedSummaryBuilder.test.ts +2 -0
  469. package/dpr/utils/CreateDprServices.js +2 -0
  470. package/dpr/utils/CreateDprServices.js.map +7 -0
  471. package/dpr/utils/CreateDprServices.ts +73 -0
  472. package/dpr/utils/DataTableBuilder/DataTableBuilder.js +1 -1
  473. package/dpr/utils/DataTableBuilder/DataTableBuilder.js.map +1 -1
  474. package/dpr/utils/DataTableBuilder/DataTableBuilder.test.ts +10 -0
  475. package/dpr/utils/DataTableBuilder/types.d.js +1 -1
  476. package/dpr/utils/DataTableBuilder/types.d.js.map +2 -2
  477. package/dpr/utils/DataTableBuilder/types.d.ts +3 -3
  478. package/dpr/utils/DateMapper/DateMapper.js +1 -1
  479. package/dpr/utils/DateMapper/DateMapper.js.map +2 -2
  480. package/dpr/utils/DateMapper/DateMapper.test.ts +22 -9
  481. package/dpr/utils/DateMapper/DateMapper.ts +9 -11
  482. package/dpr/utils/DateMapper/types.d.js +1 -1
  483. package/dpr/utils/DateMapper/types.d.js.map +1 -1
  484. package/dpr/utils/ErrorHandler.js +2 -0
  485. package/dpr/utils/ErrorHandler.js.map +7 -0
  486. package/dpr/utils/ErrorHandler.ts +85 -0
  487. package/dpr/utils/ParentChildDataTableBuilder/ParentChildDataTableBuilder.js +1 -1
  488. package/dpr/utils/ParentChildDataTableBuilder/ParentChildDataTableBuilder.js.map +2 -2
  489. package/dpr/utils/ParentChildDataTableBuilder/ParentChildDataTableBuilder.test.ts +13 -2
  490. package/dpr/utils/ParentChildDataTableBuilder/ParentChildDataTableBuilder.ts +3 -3
  491. package/dpr/utils/ParentChildDataTableBuilder/types.d.js +1 -1
  492. package/dpr/utils/ParentChildDataTableBuilder/types.d.js.map +1 -1
  493. package/dpr/utils/Personalisation/personalisationUtils.js +1 -1
  494. package/dpr/utils/Personalisation/personalisationUtils.js.map +3 -3
  495. package/dpr/utils/Personalisation/personalisationUtils.ts +6 -2
  496. package/dpr/utils/Personalisation/types.d.js +1 -1
  497. package/dpr/utils/Personalisation/types.d.js.map +1 -1
  498. package/dpr/utils/SectionedDataTableBuilder/SectionedDataTableBuilder.js +1 -1
  499. package/dpr/utils/SectionedDataTableBuilder/SectionedDataTableBuilder.js.map +2 -2
  500. package/dpr/utils/SectionedDataTableBuilder/SectionedDataTableBuilder.test.ts +5 -0
  501. package/dpr/utils/SectionedDataTableBuilder/SectionedDataTableBuilder.ts +1 -1
  502. package/dpr/utils/SectionedDataTableBuilder/types.d.js +1 -1
  503. package/dpr/utils/SectionedDataTableBuilder/types.d.js.map +1 -1
  504. package/dpr/utils/SectionedFieldsTableBuilder/SectionedFieldsTableBuilder.js +1 -1
  505. package/dpr/utils/SectionedFieldsTableBuilder/SectionedFieldsTableBuilder.js.map +2 -2
  506. package/dpr/utils/SectionedFieldsTableBuilder/SectionedFieldsTableBuilder.test.ts +7 -4
  507. package/dpr/utils/SectionedFieldsTableBuilder/SectionedFieldsTableBuilder.ts +3 -3
  508. package/dpr/utils/SummaryDataTableBuilder/SummaryDataTableBuilder.js +1 -1
  509. package/dpr/utils/SummaryDataTableBuilder/SummaryDataTableBuilder.js.map +1 -1
  510. package/dpr/utils/SummaryDataTableBuilder/SummaryDataTableBuilder.test.ts +1 -0
  511. package/dpr/utils/UserStoreItemBuilder.js +1 -1
  512. package/dpr/utils/UserStoreItemBuilder.js.map +2 -2
  513. package/dpr/utils/UserStoreItemBuilder.ts +19 -32
  514. package/dpr/utils/arrayUtils.js +1 -1
  515. package/dpr/utils/arrayUtils.js.map +1 -1
  516. package/dpr/utils/datasetHelper.js +1 -1
  517. package/dpr/utils/datasetHelper.js.map +2 -2
  518. package/dpr/utils/datasetHelper.test.ts +21 -33
  519. package/dpr/utils/datasetHelper.ts +12 -17
  520. package/dpr/utils/definitionUtils.js +1 -1
  521. package/dpr/utils/definitionUtils.js.map +3 -3
  522. package/dpr/utils/definitionUtils.ts +14 -3
  523. package/dpr/utils/index.js +1 -1
  524. package/dpr/utils/index.js.map +1 -1
  525. package/dpr/utils/indexedAccesHelper.js +2 -0
  526. package/dpr/utils/indexedAccesHelper.js.map +7 -0
  527. package/dpr/utils/indexedAccesHelper.ts +24 -0
  528. package/dpr/utils/localsHelper.js +1 -1
  529. package/dpr/utils/localsHelper.js.map +2 -2
  530. package/dpr/utils/localsHelper.ts +8 -8
  531. package/dpr/utils/logger.js +1 -1
  532. package/dpr/utils/logger.js.map +2 -2
  533. package/dpr/utils/logger.ts +1 -1
  534. package/dpr/utils/reportListsHelper.js +1 -1
  535. package/dpr/utils/reportListsHelper.js.map +1 -1
  536. package/dpr/utils/reportStoreHelper.js +1 -1
  537. package/dpr/utils/reportStoreHelper.js.map +1 -1
  538. package/dpr/utils/reportStoreHelper.test.ts +3 -2
  539. package/dpr/utils/requestStatusHelper.js +1 -1
  540. package/dpr/utils/requestStatusHelper.js.map +3 -3
  541. package/dpr/utils/requestStatusHelper.ts +29 -42
  542. package/dpr/utils/sanitisedError.js +1 -1
  543. package/dpr/utils/sanitisedError.js.map +2 -2
  544. package/dpr/utils/sanitisedError.ts +1 -1
  545. package/dpr/utils/urlHelper.js +1 -1
  546. package/dpr/utils/urlHelper.js.map +2 -2
  547. package/dpr/utils/urlHelper.ts +4 -4
  548. package/dpr/validation/validate.js +1 -1
  549. package/dpr/validation/validate.js.map +2 -2
  550. package/dpr/validation/validate.ts +2 -2
  551. package/package.json +4 -2
  552. package/dpr/components/error-summary/utils.js +0 -2
  553. package/dpr/components/error-summary/utils.js.map +0 -7
  554. package/dpr/components/error-summary/utils.test.ts +0 -54
  555. package/dpr/components/error-summary/utils.ts +0 -65
  556. package/dpr/services/missingReport/missingReportClient.js +0 -2
  557. package/dpr/services/missingReport/missingReportClient.js.map +0 -7
  558. package/dpr/utils/ReportStoreServiceUtils.js +0 -2
  559. package/dpr/utils/ReportStoreServiceUtils.js.map +0 -7
  560. package/dpr/utils/ReportStoreServiceUtils.ts +0 -140
@@ -1,2 +1,2 @@
1
- context("Request download form submitted",()=>{before(()=>{cy.task("resetStubs"),cy.task("resetRedis"),cy.task("stubDefinitions"),cy.task("stubSingleSummaries")}),it("is accessible",()=>{cy.visit("/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"),cy.injectAxe(),cy.checkA11y(),cy.findByText(/Download is now enabled for this report/).should("be.visible")})});
1
+ "use strict";context("Request download form submitted",()=>{before(()=>{cy.task("resetStubs"),cy.task("resetRedis"),cy.task("stubDefinitions"),cy.task("stubSingleSummaries")}),it("is accessible",()=>{cy.visit("/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"),cy.injectAxe(),cy.checkA11y(),cy.findByText(/Download is now enabled for this report/).should("be.visible")})});
2
2
  //# sourceMappingURL=tests.cy.js.map
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../../../src/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
- "mappings": "AAAA,QAAQ,kCAAmC,IAAM,CAC/C,OAAO,IAAM,CACX,GAAG,KAAK,YAAY,EACpB,GAAG,KAAK,YAAY,EACpB,GAAG,KAAK,iBAAiB,EACzB,GAAG,KAAK,qBAAqB,CAC/B,CAAC,EAED,GAAG,gBAAiB,IAAM,CACxB,GAAG,MACD,wUACF,EACA,GAAG,UAAU,EACb,GAAG,UAAU,EACb,GAAG,WAAW,yCAAyC,EAAE,OAAO,YAAY,CAC9E,CAAC,CACH,CAAC",
5
+ "mappings": "aAAA,QAAQ,kCAAmC,IAAM,CAC/C,OAAO,IAAM,CACX,GAAG,KAAK,YAAY,EACpB,GAAG,KAAK,YAAY,EACpB,GAAG,KAAK,iBAAiB,EACzB,GAAG,KAAK,qBAAqB,CAC/B,CAAC,EAED,GAAG,gBAAiB,IAAM,CACxB,GAAG,MACD,wUACF,EACA,GAAG,UAAU,EACb,GAAG,UAAU,EACb,GAAG,WAAW,yCAAyC,EAAE,OAAO,YAAY,CAC9E,CAAC,CACH,CAAC",
6
6
  "names": []
7
7
  }
@@ -1,2 +1,2 @@
1
- context("Request download form",()=>{const e="/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";before(()=>{cy.task("resetStubs"),cy.task("resetRedis"),cy.task("stubDefinitions"),cy.task("stubSingleSummaries"),cy.task("stubDefinitionRequestExamplesSuccess")}),it("is accessible",()=>{cy.visit(e),cy.injectAxe(),cy.checkA11y(),cy.findByRole("heading",{name:/Download request form/}).should("be.visible"),cy.findByRole("button",{name:/Submit request/}).click(),cy.findByRole("link",{name:/provide information on how you will use this data/}).should("be.visible").click(),cy.findByRole("textbox",{name:/Can you provide more detail/}).should("be.focused").type("foo"),cy.findByRole("link",{name:/Enter your Job title/}).should("be.visible").click(),cy.findByRole("textbox",{name:/What is your Job title\?/}).should("be.focused").type("foo"),cy.findByRole("button",{name:/Submit request/}).click(),cy.findByRole("heading",{name:/Download request form/}).should("not.exist")})});
1
+ "use strict";context("Request download form",()=>{const e="/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";before(()=>{cy.task("resetStubs"),cy.task("resetRedis"),cy.task("stubDefinitions"),cy.task("stubSingleSummaries"),cy.task("stubDefinitionRequestExamplesSuccess")}),it("is accessible",()=>{cy.visit(e),cy.injectAxe(),cy.checkA11y(),cy.findByRole("heading",{name:/Download request form/}).should("be.visible"),cy.findByRole("button",{name:/Submit request/}).click(),cy.findByRole("link",{name:/provide information on how you will use this data/}).should("be.visible").click(),cy.findByRole("textbox",{name:/Can you provide more detail/}).should("be.focused").type("foo"),cy.findByRole("link",{name:/Enter your Job title/}).should("be.visible").click(),cy.findByRole("textbox",{name:/What is your Job title\?/}).should("be.focused").type("foo"),cy.findByRole("button",{name:/Submit request/}).click(),cy.findByRole("heading",{name:/Download request form/}).should("not.exist")})});
2
2
  //# sourceMappingURL=tests.cy.js.map
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../../src/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
- "mappings": "AAAA,QAAQ,wBAAyB,IAAM,CACrC,MAAMA,EACJ,kQAEF,OAAO,IAAM,CACX,GAAG,KAAK,YAAY,EACpB,GAAG,KAAK,YAAY,EACpB,GAAG,KAAK,iBAAiB,EACzB,GAAG,KAAK,qBAAqB,EAC7B,GAAG,KAAK,sCAAsC,CAChD,CAAC,EAED,GAAG,gBAAiB,IAAM,CACxB,GAAG,MAAMA,CAAI,EACb,GAAG,UAAU,EACb,GAAG,UAAU,EACb,GAAG,WAAW,UAAW,CAAE,KAAM,uBAAwB,CAAC,EAAE,OAAO,YAAY,EAC/E,GAAG,WAAW,SAAU,CAAE,KAAM,gBAAiB,CAAC,EAAE,MAAM,EAC1D,GAAG,WAAW,OAAQ,CAAE,KAAM,mDAAoD,CAAC,EAChF,OAAO,YAAY,EACnB,MAAM,EACT,GAAG,WAAW,UAAW,CAAE,KAAM,6BAA8B,CAAC,EAC7D,OAAO,YAAY,EACnB,KAAK,KAAK,EACb,GAAG,WAAW,OAAQ,CAAE,KAAM,sBAAuB,CAAC,EACnD,OAAO,YAAY,EACnB,MAAM,EACT,GAAG,WAAW,UAAW,CAAE,KAAM,0BAA2B,CAAC,EAC1D,OAAO,YAAY,EACnB,KAAK,KAAK,EACb,GAAG,WAAW,SAAU,CAAE,KAAM,gBAAiB,CAAC,EAAE,MAAM,EAC1D,GAAG,WAAW,UAAW,CAAE,KAAM,uBAAwB,CAAC,EAAE,OAAO,WAAW,CAChF,CAAC,CACH,CAAC",
5
+ "mappings": "aAAA,QAAQ,wBAAyB,IAAM,CACrC,MAAMA,EACJ,kQAEF,OAAO,IAAM,CACX,GAAG,KAAK,YAAY,EACpB,GAAG,KAAK,YAAY,EACpB,GAAG,KAAK,iBAAiB,EACzB,GAAG,KAAK,qBAAqB,EAC7B,GAAG,KAAK,sCAAsC,CAChD,CAAC,EAED,GAAG,gBAAiB,IAAM,CACxB,GAAG,MAAMA,CAAI,EACb,GAAG,UAAU,EACb,GAAG,UAAU,EACb,GAAG,WAAW,UAAW,CAAE,KAAM,uBAAwB,CAAC,EAAE,OAAO,YAAY,EAC/E,GAAG,WAAW,SAAU,CAAE,KAAM,gBAAiB,CAAC,EAAE,MAAM,EAC1D,GAAG,WAAW,OAAQ,CAAE,KAAM,mDAAoD,CAAC,EAChF,OAAO,YAAY,EACnB,MAAM,EACT,GAAG,WAAW,UAAW,CAAE,KAAM,6BAA8B,CAAC,EAC7D,OAAO,YAAY,EACnB,KAAK,KAAK,EACb,GAAG,WAAW,OAAQ,CAAE,KAAM,sBAAuB,CAAC,EACnD,OAAO,YAAY,EACnB,MAAM,EACT,GAAG,WAAW,UAAW,CAAE,KAAM,0BAA2B,CAAC,EAC1D,OAAO,YAAY,EACnB,KAAK,KAAK,EACb,GAAG,WAAW,SAAU,CAAE,KAAM,gBAAiB,CAAC,EAAE,MAAM,EAC1D,GAAG,WAAW,UAAW,CAAE,KAAM,uBAAwB,CAAC,EAAE,OAAO,WAAW,CAChF,CAAC,CACH,CAAC",
6
6
  "names": ["path"]
7
7
  }
@@ -1,2 +1,2 @@
1
- var c=Object.create;var m=Object.defineProperty;var n=Object.getOwnPropertyDescriptor;var p=Object.getOwnPropertyNames;var v=Object.getPrototypeOf,g=Object.prototype.hasOwnProperty;var l=(r,e)=>{for(var o in e)m(r,o,{get:e[o],enumerable:!0})},u=(r,e,o,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let t of p(e))!g.call(r,t)&&t!==o&&m(r,t,{get:()=>e[t],enumerable:!(s=n(e,t))||s.enumerable});return r};var x=(r,e,o)=>(o=r!=null?c(v(r)):{},u(e||!r||!r.__esModule?m(o,"default",{value:r,enumerable:!0}):o,r)),P=r=>u(m({},"__esModule",{value:!0}),r);var S={};l(S,{default:()=>R,routes:()=>a});module.exports=P(S);var i=require("express"),f=x(require("./form/routes"));function a({layoutPath:r,services:e}){const o=(0,i.Router)({mergeParams:!0});return o.use("/form",(0,f.default)({layoutPath:r,services:e})),o}var R=a;0&&(module.exports={routes});
1
+ "use strict";var c=Object.create;var m=Object.defineProperty;var n=Object.getOwnPropertyDescriptor;var p=Object.getOwnPropertyNames;var v=Object.getPrototypeOf,g=Object.prototype.hasOwnProperty;var l=(r,e)=>{for(var o in e)m(r,o,{get:e[o],enumerable:!0})},u=(r,e,o,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let t of p(e))!g.call(r,t)&&t!==o&&m(r,t,{get:()=>e[t],enumerable:!(s=n(e,t))||s.enumerable});return r};var x=(r,e,o)=>(o=r!=null?c(v(r)):{},u(e||!r||!r.__esModule?m(o,"default",{value:r,enumerable:!0}):o,r)),P=r=>u(m({},"__esModule",{value:!0}),r);var S={};l(S,{default:()=>R,routes:()=>a});module.exports=P(S);var i=require("express"),f=x(require("./form/routes"));function a({layoutPath:r,services:e}){const o=(0,i.Router)({mergeParams:!0});return o.use("/form",(0,f.default)({layoutPath:r,services:e})),o}var R=a;0&&(module.exports={routes});
2
2
  //# sourceMappingURL=routes.js.map
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../src/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
- "mappings": "6iBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,aAAAE,EAAA,WAAAC,IAAA,eAAAC,EAAAJ,GACA,IAAAK,EAAuB,mBAGvBC,EAAuB,4BAGhB,SAASH,EAAO,CAAE,WAAAI,EAAY,SAAAC,CAAS,EAA+C,CAC3F,MAAMC,KAAS,UAAO,CAAE,YAAa,EAAK,CAAC,EAE3C,OAAAA,EAAO,IAAI,WAAS,EAAAC,SAAW,CAAE,WAAAH,EAAY,SAAAC,CAAS,CAAC,CAAC,EAEjDC,CACT,CAEA,IAAOP,EAAQC",
5
+ "mappings": "0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,aAAAE,EAAA,WAAAC,IAAA,eAAAC,EAAAJ,GACA,IAAAK,EAAuB,mBAGvBC,EAAuB,4BAGhB,SAASH,EAAO,CAAE,WAAAI,EAAY,SAAAC,CAAS,EAA+C,CAC3F,MAAMC,KAAS,UAAO,CAAE,YAAa,EAAK,CAAC,EAE3C,OAAAA,EAAO,IAAI,WAAS,EAAAC,SAAW,CAAE,WAAAH,EAAY,SAAAC,CAAS,CAAC,CAAC,EAEjDC,CACT,CAEA,IAAOP,EAAQC",
6
6
  "names": ["routes_exports", "__export", "routes_default", "routes", "__toCommonJS", "import_express", "import_routes", "layoutPath", "services", "router", "formRoutes"]
7
7
  }
@@ -1,2 +1,2 @@
1
- var c=Object.create;var a=Object.defineProperty;var p=Object.getOwnPropertyDescriptor;var P=Object.getOwnPropertyNames;var D=Object.getPrototypeOf,S=Object.prototype.hasOwnProperty;var u=(n,s)=>{for(var o in s)a(n,o,{get:s[o],enumerable:!0})},l=(n,s,o,t)=>{if(s&&typeof s=="object"||typeof s=="function")for(let i of P(s))!S.call(n,i)&&i!==o&&a(n,i,{get:()=>s[i],enumerable:!(t=p(s,i))||t.enumerable});return n};var m=(n,s,o)=>(o=n!=null?c(D(n)):{},l(s||!n||!n.__esModule?a(o,"default",{value:n,enumerable:!0}):o,n)),h=n=>l(a({},"__esModule",{value:!0}),n);var x={};u(x,{DownloadPermissionService:()=>g,default:()=>v});module.exports=h(x);var d=m(require("../../../../utils/logger")),f=m(require("../../../../services/reportStoreService"));class g extends f.default{constructor(s){super(s),d.default.info("Service created: DownloadPermissionService")}async saveDownloadPermissionData(s,o,t){const i=await this.getState(s);i.downloadPermissions||(i.downloadPermissions=[]),await this.downloadEnabled(s,o,t)||(i.downloadPermissions.push({reportId:o,id:t}),d.default.info(`Download permission granted for ${s}: ${o} - ${t}`),await this.saveState(s,i))}async removeDownloadPermissionData(s,o,t){const i=await this.getState(s),{downloadPermissions:e}=i;if(e){const r=e.findIndex(w=>w.id===t);r>=0&&e.splice(r,1),await this.saveState(s,i)}}async downloadEnabled(s,o,t){const i=await this.getState(s);return i.downloadPermissions?!!i.downloadPermissions.find(r=>r.id===t&&r.reportId===o):!1}async getAllDownloadPermissions(s){return(await this.getState(s)).downloadPermissions}}var v=g;0&&(module.exports={DownloadPermissionService});
1
+ "use strict";var w=Object.create;var a=Object.defineProperty;var c=Object.getOwnPropertyDescriptor;var P=Object.getOwnPropertyNames;var p=Object.getPrototypeOf,u=Object.prototype.hasOwnProperty;var h=(s,o)=>{for(var i in o)a(s,i,{get:o[i],enumerable:!0})},f=(s,o,i,n)=>{if(o&&typeof o=="object"||typeof o=="function")for(let e of P(o))!u.call(s,e)&&e!==i&&a(s,e,{get:()=>o[e],enumerable:!(n=c(o,e))||n.enumerable});return s};var m=(s,o,i)=>(i=s!=null?w(p(s)):{},f(o||!s||!s.__esModule?a(i,"default",{value:s,enumerable:!0}):i,s)),D=s=>f(a({},"__esModule",{value:!0}),s);var b={};h(b,{DownloadPermissionService:()=>l,default:()=>S});module.exports=D(b);var d=m(require("../../../../utils/logger")),g=m(require("../../../../services/reportStoreService"));class l extends g.default{constructor(o,i){super(o),this.enabled=!!i.download,this.enabled||d.default.info("Download: disabled ")}async saveDownloadPermissionData(o,i,n){if(!this.enabled)return;const e=await this.getState(o);e.downloadPermissions||(e.downloadPermissions=[]),await this.downloadEnabledForReport(o,i,n)||(e.downloadPermissions.push({reportId:i,id:n}),d.default.info(`Download permission granted for ${o}: ${i} - ${n}`),await this.saveState(o,e))}async removeDownloadPermissionData(o,i){if(!this.enabled)return;const n=await this.getState(o),{downloadPermissions:e}=n;if(e){const t=e.findIndex(r=>r.id===i);t>=0&&e.splice(t,1),await this.saveState(o,n)}}async downloadEnabledForReport(o,i,n){if(!this.enabled)return!1;const e=await this.getState(o);return e.downloadPermissions?!!e.downloadPermissions.find(r=>r.id===n&&r.reportId===i):!1}async getAllDownloadPermissions(o){return this.enabled?(await this.getState(o)).downloadPermissions||[]:[]}}var S=l;0&&(module.exports={DownloadPermissionService});
2
2
  //# sourceMappingURL=service.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../src/dpr/routes/journeys/download-report/request-download/service.ts"],
4
- "sourcesContent": ["import logger from '../../../../utils/logger'\nimport type { DownloadPermissionConfig } from '../../../../types/Download'\nimport ReportStoreService from '../../../../services/reportStoreService'\nimport UserDataStore from '../../../../data/reportDataStore'\n\nclass DownloadPermissionService extends ReportStoreService {\n constructor(userDataStore: UserDataStore) {\n super(userDataStore)\n logger.info('Service created: DownloadPermissionService')\n }\n\n async saveDownloadPermissionData(userId: string, reportId: string, id: string) {\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.downloadEnabled(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, reportId: string, id: string) {\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 downloadEnabled(userId: string, reportId: string, id: string) {\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) {\n const userConfig = await this.getState(userId)\n return userConfig.downloadPermissions\n }\n}\n\nexport { DownloadPermissionService }\nexport default DownloadPermissionService\n"],
5
- "mappings": "6iBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,+BAAAE,EAAA,YAAAC,IAAA,eAAAC,EAAAJ,GAAA,IAAAK,EAAmB,uCAEnBC,EAA+B,sDAG/B,MAAMJ,UAAkC,EAAAK,OAAmB,CACzD,YAAYC,EAA8B,CACxC,MAAMA,CAAa,EACnB,EAAAC,QAAO,KAAK,4CAA4C,CAC1D,CAEA,MAAM,2BAA2BC,EAAgBC,EAAkBC,EAAY,CAC7E,MAAMC,EAAa,MAAM,KAAK,SAASH,CAAM,EAGxCG,EAAW,sBACdA,EAAW,oBAAsB,CAAC,GAEX,MAAM,KAAK,gBAAgBH,EAAQC,EAAUC,CAAE,IAEtEC,EAAW,oBAAoB,KAAK,CAAE,SAAAF,EAAU,GAAAC,CAAG,CAAC,EACpD,EAAAH,QAAO,KAAK,mCAAmCC,CAAM,KAAKC,CAAQ,MAAMC,CAAE,EAAE,EAC5E,MAAM,KAAK,UAAUF,EAAQG,CAAU,EAE3C,CAEA,MAAM,6BAA6BH,EAAgBC,EAAkBC,EAAY,CAC/E,MAAMC,EAAa,MAAM,KAAK,SAASH,CAAM,EACvC,CAAE,oBAAAI,CAAoB,EAAID,EAChC,GAAIC,EAAqB,CACvB,MAAMC,EAAQD,EAAoB,UAAWE,GACpCA,EAAe,KAAOJ,CAC9B,EACGG,GAAS,GACXD,EAAoB,OAAOC,EAAO,CAAC,EAErC,MAAM,KAAK,UAAUL,EAAQG,CAAU,CACzC,CACF,CAEA,MAAM,gBAAgBH,EAAgBC,EAAkBC,EAAY,CAClE,MAAMC,EAAa,MAAM,KAAK,SAASH,CAAM,EAE7C,OAAKG,EAAW,oBAKT,CAAC,CAHOA,EAAW,oBAAoB,KAAMG,GAC3CA,EAAe,KAAOJ,GAAMI,EAAe,WAAaL,CAChE,EAJ2C,EAM9C,CAEA,MAAM,0BAA0BD,EAAgB,CAE9C,OADmB,MAAM,KAAK,SAASA,CAAM,GAC3B,mBACpB,CACF,CAGA,IAAOP,EAAQD",
6
- "names": ["service_exports", "__export", "DownloadPermissionService", "service_default", "__toCommonJS", "import_logger", "import_reportStoreService", "ReportStoreService", "userDataStore", "logger", "userId", "reportId", "id", "userConfig", "downloadPermissions", "index", "downloadConfig"]
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
+ "mappings": "0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,+BAAAE,EAAA,YAAAC,IAAA,eAAAC,EAAAJ,GAAA,IAAAK,EAAmB,uCAEnBC,EAA+B,sDAI/B,MAAMJ,UAAkC,EAAAK,OAAmB,CAGzD,YAAYC,EAA8BC,EAA4C,CACpF,MAAMD,CAAa,EACnB,KAAK,QAAU,EAAQC,EAAqB,SACvC,KAAK,SAAS,EAAAC,QAAO,KAAK,qBAAqB,CACtD,CAEA,MAAM,2BAA2BC,EAAgBC,EAAkBC,EAA2B,CAC5F,GAAI,CAAC,KAAK,QAAS,OAEnB,MAAMC,EAAa,MAAM,KAAK,SAASH,CAAM,EAGxCG,EAAW,sBACdA,EAAW,oBAAsB,CAAC,GAEX,MAAM,KAAK,yBAAyBH,EAAQC,EAAUC,CAAE,IAE/EC,EAAW,oBAAoB,KAAK,CAAE,SAAAF,EAAU,GAAAC,CAAG,CAAC,EACpD,EAAAH,QAAO,KAAK,mCAAmCC,CAAM,KAAKC,CAAQ,MAAMC,CAAE,EAAE,EAC5E,MAAM,KAAK,UAAUF,EAAQG,CAAU,EAE3C,CAEA,MAAM,6BAA6BH,EAAgBE,EAA2B,CAC5E,GAAI,CAAC,KAAK,QAAS,OAEnB,MAAMC,EAAa,MAAM,KAAK,SAASH,CAAM,EACvC,CAAE,oBAAAI,CAAoB,EAAID,EAChC,GAAIC,EAAqB,CACvB,MAAMC,EAAQD,EAAoB,UAAWE,GACpCA,EAAe,KAAOJ,CAC9B,EACGG,GAAS,GACXD,EAAoB,OAAOC,EAAO,CAAC,EAErC,MAAM,KAAK,UAAUL,EAAQG,CAAU,CACzC,CACF,CAEA,MAAM,yBAAyBH,EAAgBC,EAAkBC,EAA8B,CAC7F,GAAI,CAAC,KAAK,QAAS,MAAO,GAE1B,MAAMC,EAAa,MAAM,KAAK,SAASH,CAAM,EAE7C,OAAKG,EAAW,oBAKT,CAAC,CAHOA,EAAW,oBAAoB,KAAMG,GAC3CA,EAAe,KAAOJ,GAAMI,EAAe,WAAaL,CAChE,EAJ2C,EAM9C,CAEA,MAAM,0BAA0BD,EAAqD,CACnF,OAAK,KAAK,SAES,MAAM,KAAK,SAASA,CAAM,GAC3B,qBAAuB,CAAC,EAHhB,CAAC,CAI7B,CACF,CAGA,IAAOR,EAAQD",
6
+ "names": ["service_exports", "__export", "DownloadPermissionService", "service_default", "__toCommonJS", "import_logger", "import_reportStoreService", "ReportStoreService", "userDataStore", "serviceFeatureConfig", "logger", "userId", "reportId", "id", "userConfig", "downloadPermissions", "index", "downloadConfig"]
7
7
  }
@@ -2,21 +2,27 @@ import logger from '../../../../utils/logger'
2
2
  import type { DownloadPermissionConfig } from '../../../../types/Download'
3
3
  import ReportStoreService from '../../../../services/reportStoreService'
4
4
  import UserDataStore from '../../../../data/reportDataStore'
5
+ import { ServiceFeatureConfig } from '../../../../types/DprConfig'
5
6
 
6
7
  class DownloadPermissionService extends ReportStoreService {
7
- constructor(userDataStore: UserDataStore) {
8
+ enabled: boolean
9
+
10
+ constructor(userDataStore: UserDataStore, serviceFeatureConfig: ServiceFeatureConfig) {
8
11
  super(userDataStore)
9
- logger.info('Service created: DownloadPermissionService')
12
+ this.enabled = Boolean(serviceFeatureConfig.download)
13
+ if (!this.enabled) logger.info(`Download: disabled `)
10
14
  }
11
15
 
12
- async saveDownloadPermissionData(userId: string, reportId: string, id: string) {
16
+ async saveDownloadPermissionData(userId: string, reportId: string, id: string): Promise<void> {
17
+ if (!this.enabled) return
18
+
13
19
  const userConfig = await this.getState(userId)
14
20
 
15
21
  // Init downloads if not present
16
22
  if (!userConfig.downloadPermissions) {
17
23
  userConfig.downloadPermissions = []
18
24
  }
19
- const permissionExists = await this.downloadEnabled(userId, reportId, id)
25
+ const permissionExists = await this.downloadEnabledForReport(userId, reportId, id)
20
26
  if (!permissionExists) {
21
27
  userConfig.downloadPermissions.push({ reportId, id })
22
28
  logger.info(`Download permission granted for ${userId}: ${reportId} - ${id}`)
@@ -24,7 +30,9 @@ class DownloadPermissionService extends ReportStoreService {
24
30
  }
25
31
  }
26
32
 
27
- async removeDownloadPermissionData(userId: string, reportId: string, id: string) {
33
+ async removeDownloadPermissionData(userId: string, id: string): Promise<void> {
34
+ if (!this.enabled) return
35
+
28
36
  const userConfig = await this.getState(userId)
29
37
  const { downloadPermissions } = userConfig
30
38
  if (downloadPermissions) {
@@ -38,7 +46,9 @@ class DownloadPermissionService extends ReportStoreService {
38
46
  }
39
47
  }
40
48
 
41
- async downloadEnabled(userId: string, reportId: string, id: string) {
49
+ async downloadEnabledForReport(userId: string, reportId: string, id: string): Promise<boolean> {
50
+ if (!this.enabled) return false
51
+
42
52
  const userConfig = await this.getState(userId)
43
53
 
44
54
  if (!userConfig.downloadPermissions) return false
@@ -49,9 +59,11 @@ class DownloadPermissionService extends ReportStoreService {
49
59
  return !!config
50
60
  }
51
61
 
52
- async getAllDownloadPermissions(userId: string) {
62
+ async getAllDownloadPermissions(userId: string): Promise<DownloadPermissionConfig[]> {
63
+ if (!this.enabled) return []
64
+
53
65
  const userConfig = await this.getState(userId)
54
- return userConfig.downloadPermissions
66
+ return userConfig.downloadPermissions || []
55
67
  }
56
68
  }
57
69
 
@@ -1,2 +1,2 @@
1
- var c=Object.create;var s=Object.defineProperty;var f=Object.getOwnPropertyDescriptor;var g=Object.getOwnPropertyNames;var w=Object.getPrototypeOf,I=Object.prototype.hasOwnProperty;var R=(o,r)=>{for(var e in r)s(o,e,{get:r[e],enumerable:!0})},u=(o,r,e,t)=>{if(r&&typeof r=="object"||typeof r=="function")for(let n of g(r))!I.call(o,n)&&n!==e&&s(o,n,{get:()=>r[n],enumerable:!(t=f(r,n))||t.enumerable});return o};var i=(o,r,e)=>(e=o!=null?c(w(o)):{},u(r||!o||!o.__esModule?s(e,"default",{value:o,enumerable:!0}):e,o)),v=o=>u(s({},"__esModule",{value:!0}),o);var S={};R(S,{DownloadReportRoutes:()=>P,Routes:()=>p});module.exports=v(S);var a=require("express"),d=i(require("./controller")),l=i(require("./request-download/routes")),m=i(require("../../../utils/logger"));function p({layoutPath:o,services:r}){const e=(0,a.Router)({mergeParams:!0}),t=new d.default(o,r);return e.post("/",t.POST),e.use(["/request-download/:reportId/:variantId/tableId/:tableId","/request-download/:reportId/:variantId"],(0,l.default)({layoutPath:o,services:r})),e}const P=({services:o,path:r,layoutPath:e})=>{m.default.info("Initialiasing routes: Download");const t=(0,a.Router)({mergeParams:!0});return o.downloadPermissionService&&t.use(r,p({services:o,layoutPath:e})),t};0&&(module.exports={DownloadReportRoutes,Routes});
1
+ "use strict";var p=Object.create;var s=Object.defineProperty;var c=Object.getOwnPropertyDescriptor;var w=Object.getOwnPropertyNames;var R=Object.getPrototypeOf,f=Object.prototype.hasOwnProperty;var v=(r,e)=>{for(var o in e)s(r,o,{get:e[o],enumerable:!0})},i=(r,e,o,t)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of w(e))!f.call(r,n)&&n!==o&&s(r,n,{get:()=>e[n],enumerable:!(t=c(e,n))||t.enumerable});return r};var u=(r,e,o)=>(o=r!=null?p(R(r)):{},i(e||!r||!r.__esModule?s(o,"default",{value:r,enumerable:!0}):o,r)),I=r=>i(s({},"__esModule",{value:!0}),r);var P={};v(P,{DownloadReportRoutes:()=>g,Routes:()=>m});module.exports=I(P);var a=require("express"),d=u(require("./controller")),l=u(require("./request-download/routes"));function m({layoutPath:r,services:e}){const o=(0,a.Router)({mergeParams:!0}),t=new d.default(r,e);return o.post("/",t.POST),o.use(["/request-download/:reportId/:variantId/tableId/:tableId","/request-download/:reportId/:variantId"],(0,l.default)({layoutPath:r,services:e})),o}const g=({services:r,path:e,layoutPath:o})=>{const t=(0,a.Router)({mergeParams:!0});return r.downloadPermissionService.enabled&&t.use(e,m({services:r,layoutPath:o})),t};0&&(module.exports={DownloadReportRoutes,Routes});
2
2
  //# sourceMappingURL=routes.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/dpr/routes/journeys/download-report/routes.ts"],
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'\nimport logger from '../../../utils/logger'\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 logger.info('Initialiasing routes: Download')\n\n const router = Router({ mergeParams: true })\n if (services.downloadPermissionService) {\n router.use(path, Routes({ services, layoutPath }))\n }\n return router\n}\n"],
5
- "mappings": "6iBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,0BAAAE,EAAA,WAAAC,IAAA,eAAAC,EAAAJ,GACA,IAAAK,EAAuB,mBAEvBC,EAAqC,2BAGrCC,EAAkC,wCAElCC,EAAmB,oCAEZ,SAASL,EAAO,CAAE,WAAAM,EAAY,SAAAC,CAAS,EAA+C,CAC3F,MAAMC,KAAS,UAAO,CAAE,YAAa,EAAK,CAAC,EAErCC,EAAa,IAAI,EAAAC,QAAyBJ,EAAYC,CAAQ,EAGpE,OAAAC,EAAO,KAAK,IAAKC,EAAW,IAAI,EAGhCD,EAAO,IACL,CAAC,0DAA2D,wCAAwC,KACpG,EAAAG,SAAsB,CAAE,WAAAL,EAAY,SAAAC,CAAS,CAAC,CAChD,EAEOC,CACT,CAEO,MAAMT,EAAuB,CAAC,CACnC,SAAAQ,EACA,KAAAK,EACA,WAAAN,CACF,IAIM,CACJ,EAAAO,QAAO,KAAK,gCAAgC,EAE5C,MAAML,KAAS,UAAO,CAAE,YAAa,EAAK,CAAC,EAC3C,OAAID,EAAS,2BACXC,EAAO,IAAII,EAAMZ,EAAO,CAAE,SAAAO,EAAU,WAAAD,CAAW,CAAC,CAAC,EAE5CE,CACT",
6
- "names": ["routes_exports", "__export", "DownloadReportRoutes", "Routes", "__toCommonJS", "import_express", "import_controller", "import_routes", "import_logger", "layoutPath", "services", "router", "controller", "DownloadReportController", "RequestDownloadRoutes", "path", "logger"]
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
+ "mappings": "0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,0BAAAE,EAAA,WAAAC,IAAA,eAAAC,EAAAJ,GACA,IAAAK,EAAuB,mBAEvBC,EAAqC,2BAGrCC,EAAkC,wCAG3B,SAASJ,EAAO,CAAE,WAAAK,EAAY,SAAAC,CAAS,EAA+C,CAC3F,MAAMC,KAAS,UAAO,CAAE,YAAa,EAAK,CAAC,EAErCC,EAAa,IAAI,EAAAC,QAAyBJ,EAAYC,CAAQ,EAGpE,OAAAC,EAAO,KAAK,IAAKC,EAAW,IAAI,EAGhCD,EAAO,IACL,CAAC,0DAA2D,wCAAwC,KACpG,EAAAG,SAAsB,CAAE,WAAAL,EAAY,SAAAC,CAAS,CAAC,CAChD,EAEOC,CACT,CAEO,MAAMR,EAAuB,CAAC,CACnC,SAAAO,EACA,KAAAK,EACA,WAAAN,CACF,IAIM,CACJ,MAAME,KAAS,UAAO,CAAE,YAAa,EAAK,CAAC,EAC3C,OAAID,EAAS,0BAA0B,SACrCC,EAAO,IAAII,EAAMX,EAAO,CAAE,SAAAM,EAAU,WAAAD,CAAW,CAAC,CAAC,EAE5CE,CACT",
6
+ "names": ["routes_exports", "__export", "DownloadReportRoutes", "Routes", "__toCommonJS", "import_express", "import_controller", "import_routes", "layoutPath", "services", "router", "controller", "DownloadReportController", "RequestDownloadRoutes", "path"]
7
7
  }
@@ -6,7 +6,6 @@ import DownloadReportController from './controller'
6
6
  // Routes
7
7
  import RequestDownloadRoutes from './request-download/routes'
8
8
  import { Services } from '../../../types/Services'
9
- import logger from '../../../utils/logger'
10
9
 
11
10
  export function Routes({ layoutPath, services }: { services: Services; layoutPath: string }) {
12
11
  const router = Router({ mergeParams: true })
@@ -34,10 +33,8 @@ export const DownloadReportRoutes = ({
34
33
  path: string
35
34
  layoutPath: string
36
35
  }) => {
37
- logger.info('Initialiasing routes: Download')
38
-
39
36
  const router = Router({ mergeParams: true })
40
- if (services.downloadPermissionService) {
37
+ if (services.downloadPermissionService.enabled) {
41
38
  router.use(path, Routes({ services, layoutPath }))
42
39
  }
43
40
  return router
@@ -1,2 +1,2 @@
1
- var s=require("test-app/routes/integrationTests/redisStateTestUtils"),o=require("../../../../../cypress-tests/cypressUtils");context("Download report",()=>{const d="/embedded/platform/";let t,l;before(()=>{(0,o.executeReportStubs)(),cy.task("stubDefinitionRequestExamplesSuccess"),cy.task("stubRequestSuccessResult20"),cy.task("stubRequestSuccessResult100"),cy.visit(d),cy.findByLabelText(/Reports catalogue.*/i).within(()=>{cy.findByRole("row",{name:(e,i)=>i.textContent.includes("Successful Report")&&i.textContent.includes("this will succeed")}).within(()=>{cy.findByRole("link",{name:"Request report"}).click()})}),(0,o.checkA11y)(),cy.findByRole("button",{name:/Request/}).click(),(0,o.checkA11y)(),cy.findByRole("heading",{level:1,name:/Successful Report/}).should("be.visible"),cy.url().then(e=>{l=e})}),beforeEach(()=>{cy.visit(l)}),describe("Enabling download",()=>{it("should show the enable download button",()=>{cy.findByLabelText(/Enable download/).should("exist").should("be.visible"),cy.findByRole("heading",{name:"To download this report"}).should("not.exist")}),it("should show the download disabled message with link to form",()=>{cy.findByLabelText(/Enable download/).click(),cy.url().should("have.string","/report/download-disabled"),cy.findByRole("heading",{name:"To download this report"}).should("be.visible"),cy.findByRole("link",{name:"Fill out a form"})}),it("should go to the request download form",()=>{cy.findByLabelText(/Enable download/).click(),cy.findByRole("link",{name:"Fill out a form"}).click(),cy.url().then(e=>{t=e}),cy.url().should("match",/\/embedded\/platform\/dpr\/download-report\/request-download\/request-examples\/request-example-success\/tableId\/tblId_[0-9]+\/form/),cy.location().should(e=>{expect(e.search).to.match(/.*reportUrl=\/embedded\/platform\/dpr\/view-report\/async\/report\/request-examples\/request-example-success\/tblId_[0-9]+\/report/)})})}),describe("Requesting download",()=>{it("should prefill the user data in the request form",()=>{cy.visit(t),cy.findByRole("textbox",{name:"What is your Full name?"}).should("have.value","Test User"),cy.findByRole("textbox",{name:"What is your Email address?"}).should("have.value","test@user.com")}),it("should validate the required fields",()=>{cy.visit(t),cy.findByRole("alert").should("not.exist"),cy.findAllByRole("paragraph").contains("Enter your Job title").should("not.exist"),cy.findAllByRole("paragraph").contains("provide information on how you will use this data").should("not.exist"),cy.get("#more-detail-error").should("not.be.visible"),cy.findByRole("button",{name:/Submit request/}).click(),cy.findByRole("alert").should("exist"),cy.findAllByRole("paragraph").contains("Enter your Job title").should("exist"),cy.findAllByRole("paragraph").contains("provide information on how you will use this data").should("exist")}),it("should submit the download request",()=>{cy.visit(t),cy.findByRole("textbox",{name:"What is your Job title?"}).type("Software engineer"),cy.findByRole("textbox",{name:"Can you provide more detail"}).type("I like this report"),cy.findByRole("button",{name:"Submit request"}).click(),cy.findByText(/You have been granted permission/).should("be.visible"),cy.url().as("downloadRequestSubmittedPage"),cy.url().and("match",/dpr\/download-report\/request-download\/request-examples\/request-example-success\/tableId\/tblId_[0-9]+\/form\/submitted/),cy.findByRole("link",{name:/Return to report to download/}).click(),cy.findAllByRole("heading").contains("Successful Report").should("exist"),cy.findByRole("button",{name:/download/}).should("be.visible"),cy.task("stubRequestSuccessResult10MissingFirstRow"),cy.findByRole("button",{name:/download/}).click(),cy.task("checkContents10RowExcelValid").should("equal",!0)}),it("should redirect on trying to download after having the permission to download removed",()=>{(0,s.updateRedisState)("downloadPermissions",[]),cy.findByRole("heading",{name:/To download this report/}).should("not.exist"),cy.findByRole("button",{name:/download/}).click(),cy.findByRole("heading",{name:/To download this report/}).should("be.visible")})})});
1
+ "use strict";var s=require("test-app/routes/integrationTests/redisStateTestUtils"),o=require("../../../../../cypress-tests/cypressUtils");context("Download report",()=>{const d="/embedded/platform/";let t,l;before(()=>{(0,o.executeReportStubs)(),cy.task("stubDefinitionRequestExamplesSuccess"),cy.task("stubRequestSuccessResult20"),cy.task("stubRequestSuccessResult100"),cy.visit(d),cy.findByLabelText(/Reports catalogue.*/i).within(()=>{cy.findByRole("row",{name:(e,i)=>!!i.textContent?.includes("Successful Report")&&!!i.textContent?.includes("this will succeed")}).within(()=>{cy.findByRole("link",{name:"Request report"}).click()})}),(0,o.checkA11y)(),cy.findByRole("button",{name:/Request/}).click(),(0,o.checkA11y)(),cy.findByRole("heading",{level:1,name:/Successful Report/}).should("be.visible"),cy.url().then(e=>{l=e})}),beforeEach(()=>{cy.visit(l)}),describe("Enabling download",()=>{it("should show the enable download button",()=>{cy.findByLabelText(/Enable download/).should("exist").should("be.visible"),cy.findByRole("heading",{name:"To download this report"}).should("not.exist")}),it("should show the download disabled message with link to form",()=>{cy.findByLabelText(/Enable download/).click(),cy.url().should("have.string","/report/download-disabled"),cy.findByRole("heading",{name:"To download this report"}).should("be.visible"),cy.findByRole("link",{name:"Fill out a form"})}),it("should go to the request download form",()=>{cy.findByLabelText(/Enable download/).click(),cy.findByRole("link",{name:"Fill out a form"}).click(),cy.url().then(e=>{t=e}),cy.url().should("match",/\/embedded\/platform\/dpr\/download-report\/request-download\/request-examples\/request-example-success\/tableId\/tblId_[0-9]+\/form/),cy.location().should(e=>{expect(e.search).to.match(/.*reportUrl=\/embedded\/platform\/dpr\/view-report\/async\/report\/request-examples\/request-example-success\/tblId_[0-9]+\/report/)})})}),describe("Requesting download",()=>{it("should prefill the user data in the request form",()=>{cy.visit(t),cy.findByRole("textbox",{name:"What is your Full name?"}).should("have.value","Test User"),cy.findByRole("textbox",{name:"What is your Email address?"}).should("have.value","test@user.com")}),it("should validate the required fields",()=>{cy.visit(t),cy.findByRole("alert").should("not.exist"),cy.findAllByRole("paragraph").contains("Enter your Job title").should("not.exist"),cy.findAllByRole("paragraph").contains("provide information on how you will use this data").should("not.exist"),cy.get("#more-detail-error").should("not.be.visible"),cy.findByRole("button",{name:/Submit request/}).click(),cy.findByRole("alert").should("exist"),cy.findAllByRole("paragraph").contains("Enter your Job title").should("exist"),cy.findAllByRole("paragraph").contains("provide information on how you will use this data").should("exist")}),it("should submit the download request",()=>{cy.visit(t),cy.findByRole("textbox",{name:"What is your Job title?"}).type("Software engineer"),cy.findByRole("textbox",{name:"Can you provide more detail"}).type("I like this report"),cy.findByRole("button",{name:"Submit request"}).click(),cy.findByText(/You have been granted permission/).should("be.visible"),cy.url().as("downloadRequestSubmittedPage"),cy.url().and("match",/dpr\/download-report\/request-download\/request-examples\/request-example-success\/tableId\/tblId_[0-9]+\/form\/submitted/),cy.findByRole("link",{name:/Return to report to download/}).click(),cy.findAllByRole("heading").contains("Successful Report").should("exist"),cy.findByRole("button",{name:/download/}).should("be.visible"),cy.task("stubRequestSuccessResult10MissingFirstRow"),cy.findByRole("button",{name:/download/}).click(),cy.task("checkContents10RowExcelValid").should("equal",!0)}),it("should redirect on trying to download after having the permission to download removed",()=>{(0,s.updateRedisState)("downloadPermissions",[]),cy.findByRole("heading",{name:/To download this report/}).should("not.exist"),cy.findByRole("button",{name:/download/}).click(),cy.findByRole("heading",{name:/To download this report/}).should("be.visible")})})});
2
2
  //# sourceMappingURL=tests.cy.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/dpr/routes/journeys/download-report/tests.cy.ts"],
4
- "sourcesContent": ["import { updateRedisState } from 'test-app/routes/integrationTests/redisStateTestUtils'\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 element.textContent.includes('Successful Report') && element.textContent.includes('this will succeed')\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
- "mappings": "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",
4
+ "sourcesContent": ["import { updateRedisState } from 'test-app/routes/integrationTests/redisStateTestUtils'\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
+ "mappings": "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",
6
6
  "names": ["import_redisStateTestUtils", "import_cypressUtils", "path", "downloadRequestFormPage", "viewReportUrl", "_", "element", "url", "location"]
7
7
  }
@@ -15,7 +15,10 @@ context('Download report', () => {
15
15
  cy.findByLabelText(/Reports catalogue.*/i).within(() => {
16
16
  cy.findByRole('row', {
17
17
  name: (_, element) => {
18
- return element.textContent.includes('Successful Report') && element.textContent.includes('this will succeed')
18
+ return (
19
+ Boolean(element.textContent?.includes('Successful Report')) &&
20
+ Boolean(element.textContent?.includes('this will succeed'))
21
+ )
19
22
  },
20
23
  }).within(() => {
21
24
  cy.findByRole('link', { name: 'Request report' }).click()
@@ -1,2 +1,2 @@
1
- var N=Object.create;var m=Object.defineProperty;var O=Object.getOwnPropertyDescriptor;var x=Object.getOwnPropertyNames;var H=Object.getPrototypeOf,K=Object.prototype.hasOwnProperty;var V=(n,t)=>{for(var e in t)m(n,e,{get:t[e],enumerable:!0})},C=(n,t,e,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of x(t))!K.call(n,s)&&s!==e&&m(n,s,{get:()=>t[s],enumerable:!(i=O(t,s))||i.enumerable});return n};var R=(n,t,e)=>(e=n!=null?N(H(n)):{},C(t||!n||!n.__esModule?m(e,"default",{value:n,enumerable:!0}):e,n)),E=n=>C(m({},"__esModule",{value:!0}),n);var W={};V(W,{default:()=>$,downloadReport:()=>b,getKeys:()=>y});module.exports=E(W);var T=require("json-2-csv"),q=require("../../../types/UserReports"),L=R(require("../../../utils/localsHelper")),u=R(require("../../../types/ReportQuery"));const J=(n,t)=>(0,T.json2csv)(n,t),y=(n,t)=>{const e=[],i=[];return n.forEach(s=>{Object.keys(s).forEach(o=>{const a=t.find(r=>r.name===o);a&&!i.includes(o)&&(i.push(o),e.push({field:o,title:a.display}))})}),e},j=(n,t)=>n.map(e=>Object.keys(e).filter(i=>t.includes(i)).reduce((i,s)=>(i[s]=e[s],i),{})),z=(n,t)=>{const{specification:e}=t.variant;if(e){const{fields:i}=e,s=i.filter(o=>o.type==="HTML");s.length&&n.map(o=>(s.forEach(a=>{const{name:r}=a,c=o[r];if(c){const p=/target="_blank">(.*?)<\/a>/g.exec(c);o[r]=p?p[1]:c}}),o))}return n},F=async n=>{const{token:t,services:e,tableId:i,reportId:s,id:o,queryParams:a}=n,r=await e.reportingService.getAsyncCount(t,i),c={...a,pageSize:r.toString()};return e.reportingService.getAsyncReport(t,s,o,i,c)},Q=async n=>{const{token:t,services:e,queryParams:i,definition:s}=n,{variant:o}=s,{resourceName:a,specification:r}=o;let c=[];if(r){const p=new u.default({fields:r.fields,template:r.template,queryParams:i,definitionsPath:i.dataProductDefinitionsPath}),l=await e.reportingService.getCount(a,t,p),f=new u.default({fields:r.fields,template:r.template,queryParams:{...i,pageSize:l.toString()},definitionsPath:i.dataProductDefinitionsPath});c=(await e.reportingService.getListWithWarnings(a,t,f)).data}return c},b=async({req:n,services:t,res:e,redirect:i,loadType:s})=>{const{dprUser:o,token:a}=L.default.getValues(e),{reportId:r,id:c,tableId:p,dataProductDefinitionsPath:l,reportName:f,name:D,cols:v,sortedAsc:S,sortColumn:h}=n.body,{downloadPermissionService:P}=t;if(!(P?await P.downloadEnabled(o.id,r,c):!1))e.redirect(i);else{const g=await t.reportingService.getDefinition(a,r,c,l),w={dataProductDefinitionsPath:l,...S&&{sortedAsc:S},...h&&{sortColumn:h}};let d;s===q.LoadType.SYNC?d=await Q({definition:g,services:t,token:a,queryParams:w}):d=await F({services:t,token:a,reportId:r,id:c,tableId:p,queryParams:w}),v&&(d=j(d,JSON.parse(v))),d=z(d,g);const k=g.variant.specification?.fields||[],A=y(d,k),I=J(d,{keys:A,emptyFieldValue:""});e.setHeader("Content-Type","application/json"),e.setHeader("Content-disposition",`attachment; filename=${f}-${D}-${new Date().toISOString()}.csv`),e.end(I)}};var $={downloadReport:b,getKeys:y};0&&(module.exports={downloadReport,getKeys});
1
+ "use strict";var N=Object.create;var m=Object.defineProperty;var O=Object.getOwnPropertyDescriptor;var x=Object.getOwnPropertyNames;var H=Object.getPrototypeOf,K=Object.prototype.hasOwnProperty;var V=(n,t)=>{for(var e in t)m(n,e,{get:t[e],enumerable:!0})},w=(n,t,e,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of x(t))!K.call(n,o)&&o!==e&&m(n,o,{get:()=>t[o],enumerable:!(i=O(t,o))||i.enumerable});return n};var R=(n,t,e)=>(e=n!=null?N(H(n)):{},w(t||!n||!n.__esModule?m(e,"default",{value:n,enumerable:!0}):e,n)),E=n=>w(m({},"__esModule",{value:!0}),n);var W={};V(W,{default:()=>$,downloadReport:()=>L,getKeys:()=>y});module.exports=E(W);var C=require("json-2-csv"),T=require("../../../types/UserReports"),q=R(require("../../../utils/localsHelper")),u=R(require("../../../types/ReportQuery"));const F=(n,t)=>(0,C.json2csv)(n,t),y=(n,t)=>{const e=[],i=[];return n.forEach(o=>{Object.keys(o).forEach(s=>{const a=t.find(r=>r.name===s);a&&!i.includes(s)&&(i.push(s),e.push({field:s,title:a.display}))})}),e},J=(n,t)=>n.map(e=>Object.keys(e).filter(i=>t.includes(i)).reduce((i,o)=>(i[o]=e[o],i),{})),j=(n,t)=>{const{specification:e}=t.variant;if(e){const{fields:i}=e,o=i.filter(s=>s.type==="HTML");o.length&&n.map(s=>(o.forEach(a=>{const{name:r}=a,c=s[r];if(c){const p=/target="_blank">(.*?)<\/a>/g.exec(c);s[r]=p?p[1]:c}}),s))}return n},z=async n=>{const{token:t,services:e,tableId:i,reportId:o,id:s,queryParams:a}=n,r=await e.reportingService.getAsyncCount(t,i),c={...a,pageSize:r.toString()};return e.reportingService.getAsyncReport(t,o,s,i,c)},Q=async n=>{const{token:t,services:e,queryParams:i,definition:o}=n,{variant:s}=o,{resourceName:a,specification:r}=s;let c=[];if(r){const p=new u.default({fields:r.fields,template:r.template,queryParams:i,definitionsPath:i.dataProductDefinitionsPath}),l=await e.reportingService.getCount(a,t,p),f=new u.default({fields:r.fields,template:r.template,queryParams:{...i,pageSize:l.toString()},definitionsPath:i.dataProductDefinitionsPath});c=(await e.reportingService.getListWithWarnings(a,t,f)).data}return c},L=async({req:n,services:t,res:e,redirect:i,loadType:o})=>{const{dprUser:s,token:a}=q.default.getValues(e),{reportId:r,id:c,tableId:p,dataProductDefinitionsPath:l,reportName:f,name:D,cols:v,sortedAsc:S,sortColumn:h}=n.body,{downloadPermissionService:b}=t;if(!await b.downloadEnabledForReport(s.id,r,c))e.redirect(i);else{const g=await t.reportingService.getDefinition(a,r,c,l),P={dataProductDefinitionsPath:l,...S&&{sortedAsc:S},...h&&{sortColumn:h}};let d;o===T.LoadType.SYNC?d=await Q({definition:g,services:t,token:a,queryParams:P}):d=await z({services:t,token:a,reportId:r,id:c,tableId:p,queryParams:P}),v&&(d=J(d,JSON.parse(v))),d=j(d,g);const k=g.variant.specification?.fields||[],A=y(d,k),I=F(d,{keys:A,emptyFieldValue:""});e.setHeader("Content-Type","application/json"),e.setHeader("Content-disposition",`attachment; filename=${f}-${D}-${new Date().toISOString()}.csv`),e.end(I)}};var $={downloadReport:L,getKeys:y};0&&(module.exports={downloadReport,getKeys});
2
2
  //# sourceMappingURL=utils.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/dpr/routes/journeys/download-report/utils.ts"],
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 canDownload = downloadPermissionService\n ? await downloadPermissionService.downloadEnabled(dprUser.id, reportId, id)\n : false\n if (!canDownload) {\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
- "mappings": "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",
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
+ "mappings": "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",
6
6
  "names": ["utils_exports", "__export", "utils_default", "downloadReport", "getKeys", "__toCommonJS", "import_json_2_csv", "import_UserReports", "import_localsHelper", "import_ReportQuery", "convertToCsv", "reportData", "options", "fields", "keys", "keyNames", "row", "key", "field", "f", "applyColumnsAndSort", "data", "columns", "obj", "removeHtmlTags", "reportDefinition", "specification", "htmlFields", "d", "name", "colValue", "innerText", "dowloadAsyncData", "args", "token", "services", "tableId", "reportId", "id", "queryParams", "pageSize", "query", "downloadSyncData", "definition", "variant", "resourceName", "countReportQuery", "ReportQuery", "count", "dataReportQuery", "req", "res", "redirect", "loadType", "dprUser", "LocalsHelper", "dataProductDefinitionsPath", "reportName", "sortedAsc", "sortColumn", "downloadPermissionService", "csvData"]
7
7
  }
@@ -161,10 +161,8 @@ export const downloadReport = async ({
161
161
  sortColumn,
162
162
  } = req.body
163
163
  const { downloadPermissionService } = services
164
- const canDownload = downloadPermissionService
165
- ? await downloadPermissionService.downloadEnabled(dprUser.id, reportId, id)
166
- : false
167
- if (!canDownload) {
164
+ const canDownloadReport = await downloadPermissionService.downloadEnabledForReport(dprUser.id, reportId, id)
165
+ if (!canDownloadReport) {
168
166
  res.redirect(redirect)
169
167
  } else {
170
168
  const definition = await services.reportingService.getDefinition(token, reportId, id, dataProductDefinitionsPath)
@@ -1,2 +1,2 @@
1
- var m=Object.create;var a=Object.defineProperty;var p=Object.getOwnPropertyDescriptor;var k=Object.getOwnPropertyNames;var v=Object.getPrototypeOf,u=Object.prototype.hasOwnProperty;var y=(o,e)=>{for(var r in e)a(o,r,{get:e[r],enumerable:!0})},n=(o,e,r,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let t of k(e))!u.call(o,t)&&t!==r&&a(o,t,{get:()=>e[t],enumerable:!(s=p(e,t))||s.enumerable});return o};var h=(o,e,r)=>(r=o!=null?m(v(o)):{},n(e||!o||!o.__esModule?a(r,"default",{value:o,enumerable:!0}):r,o)),S=o=>n(a({},"__esModule",{value:!0}),o);var f={};y(f,{BookmarkController:()=>d,default:()=>b});module.exports=S(f);var c=h(require("../../../../utils/localsHelper"));class d{constructor(e,r){this.POST=async(e,r)=>{const{dprUser:s}=c.default.getValues(r),{reportId:t,id:i,reportType:l}=e.body;await this.services.bookmarkService.addBookmark(s.id,t,i,l),r.end()};this.DELETE=async(e,r)=>{const{dprUser:s}=c.default.getValues(r),{id:t,reportId:i}=e.body;await this.services.bookmarkService.removeBookmark(s.id,t,i),r.end()};this.layoutPath=e,this.services=r}}var b=d;0&&(module.exports={BookmarkController});
1
+ "use strict";var m=Object.create;var a=Object.defineProperty;var p=Object.getOwnPropertyDescriptor;var k=Object.getOwnPropertyNames;var v=Object.getPrototypeOf,u=Object.prototype.hasOwnProperty;var y=(o,e)=>{for(var r in e)a(o,r,{get:e[r],enumerable:!0})},n=(o,e,r,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let t of k(e))!u.call(o,t)&&t!==r&&a(o,t,{get:()=>e[t],enumerable:!(s=p(e,t))||s.enumerable});return o};var h=(o,e,r)=>(r=o!=null?m(v(o)):{},n(e||!o||!o.__esModule?a(r,"default",{value:o,enumerable:!0}):r,o)),S=o=>n(a({},"__esModule",{value:!0}),o);var f={};y(f,{BookmarkController:()=>d,default:()=>b});module.exports=S(f);var c=h(require("../../../../utils/localsHelper"));class d{constructor(e,r){this.POST=async(e,r)=>{const{dprUser:s}=c.default.getValues(r),{reportId:t,id:i,reportType:l}=e.body;await this.services.bookmarkService.addBookmark(s.id,t,i,l),r.end()};this.DELETE=async(e,r)=>{const{dprUser:s}=c.default.getValues(r),{id:t,reportId:i}=e.body;await this.services.bookmarkService.removeBookmark(s.id,t,i),r.end()};this.layoutPath=e,this.services=r}}var b=d;0&&(module.exports={BookmarkController});
2
2
  //# sourceMappingURL=controller.js.map
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../src/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 } = req.body\n await this.services.bookmarkService.addBookmark(dprUser.id, reportId, id, reportType)\n res.end()\n }\n\n DELETE: RequestHandler = async (req, res) => {\n const { dprUser } = LocalsHelper.getValues(res)\n const { id, reportId } = req.body\n await this.services.bookmarkService.removeBookmark(dprUser.id, id, reportId)\n res.end()\n }\n}\n\nexport { BookmarkController }\nexport default BookmarkController\n"],
5
- "mappings": "6iBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,wBAAAE,EAAA,YAAAC,IAAA,eAAAC,EAAAJ,GAEA,IAAAK,EAAyB,6CAEzB,MAAMH,CAAmB,CAKvB,YAAYI,EAAoBC,EAAoB,CAKpD,UAAuB,MAAOC,EAAKC,IAAQ,CACzC,KAAM,CAAE,QAAAC,CAAQ,EAAI,EAAAC,QAAa,UAAUF,CAAG,EACxC,CAAE,SAAAG,EAAU,GAAAC,EAAI,WAAAC,CAAW,EAAIN,EAAI,KACzC,MAAM,KAAK,SAAS,gBAAgB,YAAYE,EAAQ,GAAIE,EAAUC,EAAIC,CAAU,EACpFL,EAAI,IAAI,CACV,EAEA,YAAyB,MAAOD,EAAKC,IAAQ,CAC3C,KAAM,CAAE,QAAAC,CAAQ,EAAI,EAAAC,QAAa,UAAUF,CAAG,EACxC,CAAE,GAAAI,EAAI,SAAAD,CAAS,EAAIJ,EAAI,KAC7B,MAAM,KAAK,SAAS,gBAAgB,eAAeE,EAAQ,GAAIG,EAAID,CAAQ,EAC3EH,EAAI,IAAI,CACV,EAhBE,KAAK,WAAaH,EAClB,KAAK,SAAWC,CAClB,CAeF,CAGA,IAAOJ,EAAQD",
5
+ "mappings": "0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,wBAAAE,EAAA,YAAAC,IAAA,eAAAC,EAAAJ,GAEA,IAAAK,EAAyB,6CAEzB,MAAMH,CAAmB,CAKvB,YAAYI,EAAoBC,EAAoB,CAKpD,UAAuB,MAAOC,EAAKC,IAAQ,CACzC,KAAM,CAAE,QAAAC,CAAQ,EAAI,EAAAC,QAAa,UAAUF,CAAG,EACxC,CAAE,SAAAG,EAAU,GAAAC,EAAI,WAAAC,CAAW,EAAIN,EAAI,KACzC,MAAM,KAAK,SAAS,gBAAgB,YAAYE,EAAQ,GAAIE,EAAUC,EAAIC,CAAU,EACpFL,EAAI,IAAI,CACV,EAEA,YAAyB,MAAOD,EAAKC,IAAQ,CAC3C,KAAM,CAAE,QAAAC,CAAQ,EAAI,EAAAC,QAAa,UAAUF,CAAG,EACxC,CAAE,GAAAI,EAAI,SAAAD,CAAS,EAAIJ,EAAI,KAC7B,MAAM,KAAK,SAAS,gBAAgB,eAAeE,EAAQ,GAAIG,EAAID,CAAQ,EAC3EH,EAAI,IAAI,CACV,EAhBE,KAAK,WAAaH,EAClB,KAAK,SAAWC,CAClB,CAeF,CAGA,IAAOJ,EAAQD",
6
6
  "names": ["controller_exports", "__export", "BookmarkController", "controller_default", "__toCommonJS", "import_localsHelper", "layoutPath", "services", "req", "res", "dprUser", "LocalsHelper", "reportId", "id", "reportType"]
7
7
  }
@@ -1,2 +1,2 @@
1
- var n=Object.create;var o=Object.defineProperty;var c=Object.getOwnPropertyDescriptor;var k=Object.getOwnPropertyNames;var u=Object.getPrototypeOf,d=Object.prototype.hasOwnProperty;var h=(r,t)=>{for(var e in t)o(r,e,{get:t[e],enumerable:!0})},l=(r,t,e,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of k(t))!d.call(r,s)&&s!==e&&o(r,s,{get:()=>t[s],enumerable:!(i=c(t,s))||i.enumerable});return r};var p=(r,t,e)=>(e=r!=null?n(u(r)):{},l(t||!r||!r.__esModule?o(e,"default",{value:r,enumerable:!0}):e,r)),v=r=>l(o({},"__esModule",{value:!0}),r);var f={};h(f,{BookmarkListingController:()=>a,default:()=>y});module.exports=v(f);var m=p(require("../../../../../components/user-reports/bookmarks/utils"));class a{constructor(t,e){this.GET=async(t,e,i)=>{e.render("dpr/routes/journeys/my-reports/view",{title:"Bookmarks",layoutPath:this.layoutPath,id:"dpr-bookmarks-list",...await m.default.renderBookmarkList({services:this.services,res:e,req:t})})};this.layoutPath=t,this.services=e}}var y=a;0&&(module.exports={BookmarkListingController});
1
+ "use strict";var n=Object.create;var o=Object.defineProperty;var c=Object.getOwnPropertyDescriptor;var k=Object.getOwnPropertyNames;var u=Object.getPrototypeOf,d=Object.prototype.hasOwnProperty;var h=(r,t)=>{for(var e in t)o(r,e,{get:t[e],enumerable:!0})},l=(r,t,e,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of k(t))!d.call(r,s)&&s!==e&&o(r,s,{get:()=>t[s],enumerable:!(i=c(t,s))||i.enumerable});return r};var p=(r,t,e)=>(e=r!=null?n(u(r)):{},l(t||!r||!r.__esModule?o(e,"default",{value:r,enumerable:!0}):e,r)),v=r=>l(o({},"__esModule",{value:!0}),r);var f={};h(f,{BookmarkListingController:()=>a,default:()=>y});module.exports=v(f);var m=p(require("../../../../../components/user-reports/bookmarks/utils"));class a{constructor(t,e){this.GET=async(t,e,i)=>{e.render("dpr/routes/journeys/my-reports/view",{title:"Bookmarks",layoutPath:this.layoutPath,id:"dpr-bookmarks-list",...await m.default.renderBookmarkList({services:this.services,res:e})})};this.layoutPath=t,this.services=e}}var y=a;0&&(module.exports={BookmarkListingController});
2
2
  //# sourceMappingURL=controller.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../../src/dpr/routes/journeys/my-reports/bookmarks/list/controller.ts"],
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, req })),\n })\n }\n}\n\nexport { BookmarkListingController }\nexport default BookmarkListingController\n"],
5
- "mappings": "6iBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,+BAAAE,EAAA,YAAAC,IAAA,eAAAC,EAAAJ,GACA,IAAAK,EAA8B,qEAG9B,MAAMH,CAA0B,CAK9B,YAAYI,EAAoBC,EAAoB,CAKpD,SAAsB,MAAOC,EAAKC,EAAKC,IAAS,CAC9CD,EAAI,OAAO,sCAAuC,CAChD,MAAO,YACP,WAAY,KAAK,WACjB,GAAI,qBACJ,GAAI,MAAM,EAAAE,QAAkB,mBAAmB,CAAE,SAAU,KAAK,SAAU,IAAAF,EAAK,IAAAD,CAAI,CAAC,CACtF,CAAC,CACH,EAXE,KAAK,WAAaF,EAClB,KAAK,SAAWC,CAClB,CAUF,CAGA,IAAOJ,EAAQD",
6
- "names": ["controller_exports", "__export", "BookmarkListingController", "controller_default", "__toCommonJS", "import_utils", "layoutPath", "services", "req", "res", "next", "BookmarklistUtils"]
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
+ "mappings": "0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,+BAAAE,EAAA,YAAAC,IAAA,eAAAC,EAAAJ,GACA,IAAAK,EAA8B,qEAG9B,MAAMH,CAA0B,CAK9B,YAAYI,EAAoBC,EAAoB,CAKpD,SAAsB,MAAOC,EAAMC,EAAKC,IAAU,CAChDD,EAAI,OAAO,sCAAuC,CAChD,MAAO,YACP,WAAY,KAAK,WACjB,GAAI,qBACJ,GAAI,MAAM,EAAAE,QAAkB,mBAAmB,CAAE,SAAU,KAAK,SAAU,IAAAF,CAAI,CAAC,CACjF,CAAC,CACH,EAXE,KAAK,WAAaH,EAClB,KAAK,SAAWC,CAClB,CAUF,CAGA,IAAOJ,EAAQD",
6
+ "names": ["controller_exports", "__export", "BookmarkListingController", "controller_default", "__toCommonJS", "import_utils", "layoutPath", "services", "_req", "res", "_next", "BookmarklistUtils"]
7
7
  }
@@ -12,12 +12,12 @@ class BookmarkListingController {
12
12
  this.services = services
13
13
  }
14
14
 
15
- GET: RequestHandler = async (req, res, next) => {
15
+ GET: RequestHandler = async (_req, res, _next) => {
16
16
  res.render(`dpr/routes/journeys/my-reports/view`, {
17
17
  title: 'Bookmarks',
18
18
  layoutPath: this.layoutPath,
19
19
  id: 'dpr-bookmarks-list',
20
- ...(await BookmarklistUtils.renderBookmarkList({ services: this.services, res, req })),
20
+ ...(await BookmarklistUtils.renderBookmarkList({ services: this.services, res })),
21
21
  })
22
22
  }
23
23
  }
@@ -1,2 +1,2 @@
1
- var a=Object.create;var n=Object.defineProperty;var l=Object.getOwnPropertyDescriptor;var f=Object.getOwnPropertyNames;var p=Object.getPrototypeOf,g=Object.prototype.hasOwnProperty;var v=(r,o)=>{for(var t in o)n(r,t,{get:o[t],enumerable:!0})},s=(r,o,t,i)=>{if(o&&typeof o=="object"||typeof o=="function")for(let e of f(o))!g.call(r,e)&&e!==t&&n(r,e,{get:()=>o[e],enumerable:!(i=l(o,e))||i.enumerable});return r};var k=(r,o,t)=>(t=r!=null?a(p(r)):{},s(o||!r||!r.__esModule?n(t,"default",{value:r,enumerable:!0}):t,r)),x=r=>s(n({},"__esModule",{value:!0}),r);var S={};v(S,{default:()=>P,routes:()=>c});module.exports=x(S);var m=require("express"),u=k(require("./controller"));function c({layoutPath:r,services:o}){const t=(0,m.Router)({mergeParams:!0}),i=new u.default(r,o);return t.get("/",i.GET),t}var P=c;0&&(module.exports={routes});
1
+ "use strict";var a=Object.create;var n=Object.defineProperty;var l=Object.getOwnPropertyDescriptor;var f=Object.getOwnPropertyNames;var p=Object.getPrototypeOf,g=Object.prototype.hasOwnProperty;var v=(r,o)=>{for(var t in o)n(r,t,{get:o[t],enumerable:!0})},s=(r,o,t,i)=>{if(o&&typeof o=="object"||typeof o=="function")for(let e of f(o))!g.call(r,e)&&e!==t&&n(r,e,{get:()=>o[e],enumerable:!(i=l(o,e))||i.enumerable});return r};var k=(r,o,t)=>(t=r!=null?a(p(r)):{},s(o||!r||!r.__esModule?n(t,"default",{value:r,enumerable:!0}):t,r)),x=r=>s(n({},"__esModule",{value:!0}),r);var S={};v(S,{default:()=>P,routes:()=>c});module.exports=x(S);var m=require("express"),u=k(require("./controller"));function c({layoutPath:r,services:o}){const t=(0,m.Router)({mergeParams:!0}),i=new u.default(r,o);return t.get("/",i.GET),t}var P=c;0&&(module.exports={routes});
2
2
  //# sourceMappingURL=routes.js.map
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../../src/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
- "mappings": "6iBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,aAAAE,EAAA,WAAAC,IAAA,eAAAC,EAAAJ,GACA,IAAAK,EAAuB,mBACvBC,EAAsC,2BAG/B,SAASH,EAAO,CAAE,WAAAI,EAAY,SAAAC,CAAS,EAA+C,CAC3F,MAAMC,KAAS,UAAO,CAAE,YAAa,EAAK,CAAC,EAErCC,EAAa,IAAI,EAAAC,QAA0BJ,EAAYC,CAAQ,EACrE,OAAAC,EAAO,IAAI,IAAKC,EAAW,GAAG,EAEvBD,CACT,CAEA,IAAOP,EAAQC",
5
+ "mappings": "0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,aAAAE,EAAA,WAAAC,IAAA,eAAAC,EAAAJ,GACA,IAAAK,EAAuB,mBACvBC,EAAsC,2BAG/B,SAASH,EAAO,CAAE,WAAAI,EAAY,SAAAC,CAAS,EAA+C,CAC3F,MAAMC,KAAS,UAAO,CAAE,YAAa,EAAK,CAAC,EAErCC,EAAa,IAAI,EAAAC,QAA0BJ,EAAYC,CAAQ,EACrE,OAAAC,EAAO,IAAI,IAAKC,EAAW,GAAG,EAEvBD,CACT,CAEA,IAAOP,EAAQC",
6
6
  "names": ["routes_exports", "__export", "routes_default", "routes", "__toCommonJS", "import_express", "import_controller", "layoutPath", "services", "router", "controller", "BookmarkListingController"]
7
7
  }
@@ -1,2 +1,2 @@
1
- var e=require("../../../../../../../test-app/routes/integrationTests/redisStateTestUtils"),s=require("../../../../../types/UserReports");context("Bookmarks list",()=>{const t="/embedded/platform/dpr/my-reports/bookmarks/list";before(()=>{cy.task("resetStubs"),cy.task("resetRedis"),cy.task("stubDefinitions"),cy.task("stubSingleSummaries"),cy.task("stubDefinitionRequestExamplesSuccess")}),it("is accessible",()=>{(0,e.setRedisState)({requestedReports:[],recentlyViewedReports:[],bookmarks:[{reportId:"request-examples",id:"request-examples",variantId:"request-example-success",type:s.ReportType.REPORT}],downloadPermissions:[{reportId:"request-examples",id:"request-example-success"}],defaultFilters:[]}),cy.visit(t),cy.injectAxe(),cy.checkA11y(),cy.findAllByText(/Successful Report/).should("be.visible")})});
1
+ "use strict";var e=require("../../../../../../../test-app/routes/integrationTests/redisStateTestUtils"),s=require("../../../../../types/UserReports");context("Bookmarks list",()=>{const t="/embedded/platform/dpr/my-reports/bookmarks/list";before(()=>{cy.task("resetStubs"),cy.task("resetRedis"),cy.task("stubDefinitions"),cy.task("stubSingleSummaries"),cy.task("stubDefinitionRequestExamplesSuccess")}),it("is accessible",()=>{(0,e.setRedisState)({requestedReports:[],recentlyViewedReports:[],bookmarks:[{reportId:"request-examples",id:"request-example-success",type:s.ReportType.REPORT}],downloadPermissions:[{reportId:"request-examples",id:"request-example-success"}],defaultFilters:[]}),cy.visit(t),cy.injectAxe(),cy.checkA11y(),cy.findAllByText(/Successful Report/).should("be.visible")})});
2
2
  //# sourceMappingURL=tests.cy.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../../src/dpr/routes/journeys/my-reports/bookmarks/list/tests.cy.ts"],
4
- "sourcesContent": ["import { setRedisState } from '../../../../../../../test-app/routes/integrationTests/redisStateTestUtils'\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-examples',\n variantId: '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
- "mappings": "AAAA,IAAAA,EAA8B,qFAC9BC,EAA2B,4CAE3B,QAAQ,iBAAkB,IAAM,CAC9B,MAAMC,EAAO,mDAEb,OAAO,IAAM,CACX,GAAG,KAAK,YAAY,EACpB,GAAG,KAAK,YAAY,EACpB,GAAG,KAAK,iBAAiB,EACzB,GAAG,KAAK,qBAAqB,EAC7B,GAAG,KAAK,sCAAsC,CAChD,CAAC,EAED,GAAG,gBAAiB,IAAM,IACxB,iBAAc,CACZ,iBAAkB,CAAC,EACnB,sBAAuB,CAAC,EACxB,UAAW,CACT,CACE,SAAU,mBACV,GAAI,mBACJ,UAAW,0BACX,KAAM,aAAW,MACnB,CACF,EACA,oBAAqB,CAAC,CAAE,SAAU,mBAAoB,GAAI,yBAA0B,CAAC,EACrF,eAAgB,CAAC,CACnB,CAAC,EACD,GAAG,MAAMA,CAAI,EACb,GAAG,UAAU,EACb,GAAG,UAAU,EACb,GAAG,cAAc,mBAAmB,EAAE,OAAO,YAAY,CAC3D,CAAC,CACH,CAAC",
4
+ "sourcesContent": ["import { setRedisState } from '../../../../../../../test-app/routes/integrationTests/redisStateTestUtils'\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
+ "mappings": "aAAA,IAAAA,EAA8B,qFAC9BC,EAA2B,4CAE3B,QAAQ,iBAAkB,IAAM,CAC9B,MAAMC,EAAO,mDAEb,OAAO,IAAM,CACX,GAAG,KAAK,YAAY,EACpB,GAAG,KAAK,YAAY,EACpB,GAAG,KAAK,iBAAiB,EACzB,GAAG,KAAK,qBAAqB,EAC7B,GAAG,KAAK,sCAAsC,CAChD,CAAC,EAED,GAAG,gBAAiB,IAAM,IACxB,iBAAc,CACZ,iBAAkB,CAAC,EACnB,sBAAuB,CAAC,EACxB,UAAW,CACT,CACE,SAAU,mBACV,GAAI,0BACJ,KAAM,aAAW,MACnB,CACF,EACA,oBAAqB,CAAC,CAAE,SAAU,mBAAoB,GAAI,yBAA0B,CAAC,EACrF,eAAgB,CAAC,CACnB,CAAC,EACD,GAAG,MAAMA,CAAI,EACb,GAAG,UAAU,EACb,GAAG,UAAU,EACb,GAAG,cAAc,mBAAmB,EAAE,OAAO,YAAY,CAC3D,CAAC,CACH,CAAC",
6
6
  "names": ["import_redisStateTestUtils", "import_UserReports", "path"]
7
7
  }
@@ -19,8 +19,7 @@ context('Bookmarks list', () => {
19
19
  bookmarks: [
20
20
  {
21
21
  reportId: 'request-examples',
22
- id: 'request-examples',
23
- variantId: 'request-example-success',
22
+ id: 'request-example-success',
24
23
  type: ReportType.REPORT,
25
24
  },
26
25
  ],
@@ -1,2 +1,2 @@
1
- var f=Object.create;var m=Object.defineProperty;var a=Object.getOwnPropertyDescriptor;var E=Object.getOwnPropertyNames;var S=Object.getPrototypeOf,d=Object.prototype.hasOwnProperty;var g=(r,o)=>{for(var t in o)m(r,t,{get:o[t],enumerable:!0})},i=(r,o,t,e)=>{if(o&&typeof o=="object"||typeof o=="function")for(let s of E(o))!d.call(r,s)&&s!==t&&m(r,s,{get:()=>o[s],enumerable:!(e=a(o,s))||e.enumerable});return r};var n=(r,o,t)=>(t=r!=null?f(S(r)):{},i(o||!r||!r.__esModule?m(t,"default",{value:r,enumerable:!0}):t,r)),k=r=>i(m({},"__esModule",{value:!0}),r);var x={};g(x,{default:()=>v,routes:()=>c});module.exports=k(x);var u=require("express"),l=n(require("./controller")),p=n(require("./list/routes"));function c({layoutPath:r,services:o}){const t=(0,u.Router)({mergeParams:!0}),e=new l.default(r,o);return t.post("/",e.POST),t.delete("/",e.DELETE),t.use("/list",(0,p.default)({layoutPath:r,services:o})),t}var v=c;0&&(module.exports={routes});
1
+ "use strict";var f=Object.create;var m=Object.defineProperty;var a=Object.getOwnPropertyDescriptor;var E=Object.getOwnPropertyNames;var S=Object.getPrototypeOf,d=Object.prototype.hasOwnProperty;var g=(r,o)=>{for(var t in o)m(r,t,{get:o[t],enumerable:!0})},i=(r,o,t,e)=>{if(o&&typeof o=="object"||typeof o=="function")for(let s of E(o))!d.call(r,s)&&s!==t&&m(r,s,{get:()=>o[s],enumerable:!(e=a(o,s))||e.enumerable});return r};var n=(r,o,t)=>(t=r!=null?f(S(r)):{},i(o||!r||!r.__esModule?m(t,"default",{value:r,enumerable:!0}):t,r)),k=r=>i(m({},"__esModule",{value:!0}),r);var x={};g(x,{default:()=>v,routes:()=>c});module.exports=k(x);var u=require("express"),l=n(require("./controller")),p=n(require("./list/routes"));function c({layoutPath:r,services:o}){const t=(0,u.Router)({mergeParams:!0}),e=new l.default(r,o);return t.post("/",e.POST),t.delete("/",e.DELETE),t.use("/list",(0,p.default)({layoutPath:r,services:o})),t}var v=c;0&&(module.exports={routes});
2
2
  //# sourceMappingURL=routes.js.map
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../src/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\n router.post('/', controller.POST)\n router.delete('/', controller.DELETE)\n\n router.use(`/list`, listRoutes({ layoutPath, services }))\n return router\n}\n\nexport default routes\n"],
5
- "mappings": "6iBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,aAAAE,EAAA,WAAAC,IAAA,eAAAC,EAAAJ,GACA,IAAAK,EAAuB,mBAEvBC,EAA+B,2BAC/BC,EAAuB,4BAEhB,SAASJ,EAAO,CAAE,WAAAK,EAAY,SAAAC,CAAS,EAA+C,CAC3F,MAAMC,KAAS,UAAO,CAAE,YAAa,EAAK,CAAC,EAErCC,EAAa,IAAI,EAAAC,QAAmBJ,EAAYC,CAAQ,EAE9D,OAAAC,EAAO,KAAK,IAAKC,EAAW,IAAI,EAChCD,EAAO,OAAO,IAAKC,EAAW,MAAM,EAEpCD,EAAO,IAAI,WAAS,EAAAG,SAAW,CAAE,WAAAL,EAAY,SAAAC,CAAS,CAAC,CAAC,EACjDC,CACT,CAEA,IAAOR,EAAQC",
5
+ "mappings": "0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,aAAAE,EAAA,WAAAC,IAAA,eAAAC,EAAAJ,GACA,IAAAK,EAAuB,mBAEvBC,EAA+B,2BAC/BC,EAAuB,4BAEhB,SAASJ,EAAO,CAAE,WAAAK,EAAY,SAAAC,CAAS,EAA+C,CAC3F,MAAMC,KAAS,UAAO,CAAE,YAAa,EAAK,CAAC,EAErCC,EAAa,IAAI,EAAAC,QAAmBJ,EAAYC,CAAQ,EAE9D,OAAAC,EAAO,KAAK,IAAKC,EAAW,IAAI,EAChCD,EAAO,OAAO,IAAKC,EAAW,MAAM,EAEpCD,EAAO,IAAI,WAAS,EAAAG,SAAW,CAAE,WAAAL,EAAY,SAAAC,CAAS,CAAC,CAAC,EACjDC,CACT,CAEA,IAAOR,EAAQC",
6
6
  "names": ["routes_exports", "__export", "routes_default", "routes", "__toCommonJS", "import_express", "import_controller", "import_routes", "layoutPath", "services", "router", "controller", "BookmarkController", "listRoutes"]
7
7
  }