@hmcts/opal-frontend-common 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (262) hide show
  1. package/README.md +24 -0
  2. package/esm2022/hmcts-opal-frontend-common.mjs +5 -0
  3. package/esm2022/lib/components/govuk/govuk-button/govuk-button.component.mjs +34 -0
  4. package/esm2022/lib/components/govuk/govuk-text-input/govuk-text-input.component.mjs +57 -0
  5. package/esm2022/lib/components/govuk/index.mjs +3 -0
  6. package/esm2022/lib/guards/auth/auth.guard.mjs +20 -0
  7. package/esm2022/lib/guards/auth/index.mjs +2 -0
  8. package/esm2022/lib/guards/can-deactivate/can-deactivate.guard.mjs +6 -0
  9. package/esm2022/lib/guards/can-deactivate/index.mjs +5 -0
  10. package/esm2022/lib/guards/can-deactivate/interfaces/can-deactivate-can-component-deactivate.interface.mjs +2 -0
  11. package/esm2022/lib/guards/can-deactivate/interfaces/index.mjs +2 -0
  12. package/esm2022/lib/guards/has-flow-state/has-flow-state.guard.mjs +16 -0
  13. package/esm2022/lib/guards/has-flow-state/index.mjs +2 -0
  14. package/esm2022/lib/guards/helpers/get-guard-with-dummy-url.mjs +19 -0
  15. package/esm2022/lib/guards/helpers/handle-observable-result.mjs +13 -0
  16. package/esm2022/lib/guards/helpers/index.mjs +5 -0
  17. package/esm2022/lib/guards/helpers/run-auth-guard-with-context.mjs +15 -0
  18. package/esm2022/lib/guards/helpers/run-has-flow-state-guard-with-context.mjs +9 -0
  19. package/esm2022/lib/guards/index.mjs +10 -0
  20. package/esm2022/lib/guards/route-permissions/index.mjs +2 -0
  21. package/esm2022/lib/guards/route-permissions/route-permissions.guard.mjs +25 -0
  22. package/esm2022/lib/guards/signed-in/index.mjs +3 -0
  23. package/esm2022/lib/guards/signed-in/signed-in.guard.mjs +20 -0
  24. package/esm2022/lib/guards/types/can-deactivate.type.mjs +2 -0
  25. package/esm2022/lib/guards/types/guard-return.type.mjs +2 -0
  26. package/esm2022/lib/guards/types/index.mjs +3 -0
  27. package/esm2022/lib/interceptors/http-error/http-error.interceptor.mjs +24 -0
  28. package/esm2022/lib/interceptors/index.mjs +3 -0
  29. package/esm2022/lib/opal-frontend-common.module.mjs +22 -0
  30. package/esm2022/lib/pages/access-denied/access-denied.component.mjs +18 -0
  31. package/esm2022/lib/pages/index.mjs +4 -0
  32. package/esm2022/lib/pages/routing/constants/routing-paths.constant.mjs +9 -0
  33. package/esm2022/lib/pages/routing/constants/routing-titles.constant.mjs +9 -0
  34. package/esm2022/lib/pages/routing/interfaces/routing-paths.interface.mjs +2 -0
  35. package/esm2022/lib/pages/routing/pages.routes.mjs +24 -0
  36. package/esm2022/lib/pages/sign-in/interfaces/index.mjs +2 -0
  37. package/esm2022/lib/pages/sign-in/interfaces/sign-in-stub-form.interface.mjs +2 -0
  38. package/esm2022/lib/pages/sign-in/sign-in-sso/sign-in-sso.component.mjs +23 -0
  39. package/esm2022/lib/pages/sign-in/sign-in-stub/sign-in-stub.component.mjs +39 -0
  40. package/esm2022/lib/pages/sign-in/sign-in.component.mjs +38 -0
  41. package/esm2022/lib/resolvers/index.mjs +3 -0
  42. package/esm2022/lib/resolvers/title/index.mjs +2 -0
  43. package/esm2022/lib/resolvers/title/title.resolver.mjs +22 -0
  44. package/esm2022/lib/resolvers/user-state/index.mjs +2 -0
  45. package/esm2022/lib/resolvers/user-state/user-state.resolver.mjs +12 -0
  46. package/esm2022/lib/routing/constants/index.mjs +2 -0
  47. package/esm2022/lib/routing/constants/sso-endpoints.constant.mjs +7 -0
  48. package/esm2022/lib/routing/index.mjs +3 -0
  49. package/esm2022/lib/routing/interfaces/child-routing-paths.interface.mjs +2 -0
  50. package/esm2022/lib/routing/interfaces/index.mjs +4 -0
  51. package/esm2022/lib/routing/interfaces/nested-routes.interface.mjs +2 -0
  52. package/esm2022/lib/routing/interfaces/sso-endpoints.interface.mjs +2 -0
  53. package/esm2022/lib/services/app-initializer-service/app-initializer.service.mjs +36 -0
  54. package/esm2022/lib/services/app-initializer-service/index.mjs +2 -0
  55. package/esm2022/lib/services/app-insights/app-insights.service.mjs +73 -0
  56. package/esm2022/lib/services/app-insights/index.mjs +4 -0
  57. package/esm2022/lib/services/auth-service/auth.service.mjs +36 -0
  58. package/esm2022/lib/services/auth-service/index.mjs +2 -0
  59. package/esm2022/lib/services/date-service/date.service.mjs +182 -0
  60. package/esm2022/lib/services/date-service/index.mjs +4 -0
  61. package/esm2022/lib/services/index.mjs +12 -0
  62. package/esm2022/lib/services/launch-darkly/index.mjs +5 -0
  63. package/esm2022/lib/services/launch-darkly/launch-darkly.service.mjs +94 -0
  64. package/esm2022/lib/services/launch-darkly/mocks/index.mjs +3 -0
  65. package/esm2022/lib/services/launch-darkly/mocks/launch-darkly-change-flags.mock.mjs +5 -0
  66. package/esm2022/lib/services/launch-darkly/mocks/launch-darkly-flags.mock.mjs +5 -0
  67. package/esm2022/lib/services/permissions-service/index.mjs +4 -0
  68. package/esm2022/lib/services/permissions-service/permissions.service.mjs +40 -0
  69. package/esm2022/lib/services/session-service/constants/index.mjs +2 -0
  70. package/esm2022/lib/services/session-service/constants/session-endpoints.constant.mjs +5 -0
  71. package/esm2022/lib/services/session-service/index.mjs +7 -0
  72. package/esm2022/lib/services/session-service/interfaces/index.mjs +4 -0
  73. package/esm2022/lib/services/session-service/interfaces/session-endpoints.interface.mjs +2 -0
  74. package/esm2022/lib/services/session-service/interfaces/session-token-expiry.interface.mjs +2 -0
  75. package/esm2022/lib/services/session-service/interfaces/session-user-state.interface.mjs +2 -0
  76. package/esm2022/lib/services/session-service/mocks/index.mjs +3 -0
  77. package/esm2022/lib/services/session-service/mocks/session-token-expiry.mock.mjs +5 -0
  78. package/esm2022/lib/services/session-service/mocks/session-user-state.mock.mjs +386 -0
  79. package/esm2022/lib/services/session-service/session.service.mjs +64 -0
  80. package/esm2022/lib/services/sort-service/index.mjs +6 -0
  81. package/esm2022/lib/services/sort-service/interfaces/index.mjs +3 -0
  82. package/esm2022/lib/services/sort-service/interfaces/sort-service-values.interface.mjs +2 -0
  83. package/esm2022/lib/services/sort-service/interfaces/sort-service.interface.mjs +2 -0
  84. package/esm2022/lib/services/sort-service/sort-service.mjs +90 -0
  85. package/esm2022/lib/services/sort-service/types/index.mjs +2 -0
  86. package/esm2022/lib/services/sort-service/types/sort-service.type.mjs +2 -0
  87. package/esm2022/lib/services/transfer-state-service/index.mjs +6 -0
  88. package/esm2022/lib/services/transfer-state-service/interfaces/index.mjs +4 -0
  89. package/esm2022/lib/services/transfer-state-service/interfaces/transfer-state-app-insights-config.interface.mjs +2 -0
  90. package/esm2022/lib/services/transfer-state-service/interfaces/transfer-state-launch-darkly-config.interface.mjs +2 -0
  91. package/esm2022/lib/services/transfer-state-service/interfaces/transfer-state-server-state.interface.mjs +2 -0
  92. package/esm2022/lib/services/transfer-state-service/mocks/index.mjs +4 -0
  93. package/esm2022/lib/services/transfer-state-service/mocks/transfer-state-app-insights-config.mock.mjs +6 -0
  94. package/esm2022/lib/services/transfer-state-service/mocks/transfer-state-launch-darkly-config.mock.mjs +6 -0
  95. package/esm2022/lib/services/transfer-state-service/mocks/transfer-state.mock.mjs +8 -0
  96. package/esm2022/lib/services/transfer-state-service/transfer-state.service.mjs +59 -0
  97. package/esm2022/lib/services/transformation-service/index.mjs +5 -0
  98. package/esm2022/lib/services/transformation-service/interfaces/index.mjs +2 -0
  99. package/esm2022/lib/services/transformation-service/interfaces/transform-item.interface.mjs +2 -0
  100. package/esm2022/lib/services/transformation-service/transformation.service.mjs +69 -0
  101. package/esm2022/lib/services/utils/index.mjs +4 -0
  102. package/esm2022/lib/services/utils/utils.service.mjs +86 -0
  103. package/esm2022/lib/stores/global/global.store.mjs +33 -0
  104. package/esm2022/lib/stores/global/index.mjs +6 -0
  105. package/esm2022/lib/stores/global/interfaces/error-state.interface.mjs +2 -0
  106. package/esm2022/lib/stores/global/interfaces/index.mjs +2 -0
  107. package/esm2022/lib/stores/global/types/global-store.type.mjs +2 -0
  108. package/esm2022/lib/stores/global/types/index.mjs +2 -0
  109. package/esm2022/lib/stores/index.mjs +2 -0
  110. package/esm2022/lib/validators/alphabetical-text/alphabetical-text.validator.mjs +10 -0
  111. package/esm2022/lib/validators/amount/amount.validator.mjs +15 -0
  112. package/esm2022/lib/validators/date-after-year/date-after-year.validator.mjs +12 -0
  113. package/esm2022/lib/validators/date-before/date-before.validator.mjs +15 -0
  114. package/esm2022/lib/validators/date-of-birth/date-of-birth.validator.mjs +18 -0
  115. package/esm2022/lib/validators/future-date/future-date.validator.mjs +15 -0
  116. package/esm2022/lib/validators/index.mjs +20 -0
  117. package/esm2022/lib/validators/invalid-value/invalid-value.validator.mjs +9 -0
  118. package/esm2022/lib/validators/national-insurance-number/national-insurance-number.validator.mjs +16 -0
  119. package/esm2022/lib/validators/numerical-only/numerical-only.validator.mjs +10 -0
  120. package/esm2022/lib/validators/optional-max-length/optional-max-length.validator.mjs +10 -0
  121. package/esm2022/lib/validators/optional-valid-date/optional-valid-date.validator.mjs +23 -0
  122. package/esm2022/lib/validators/optional-valid-email-address/optional-valid-email-address.validator.mjs +11 -0
  123. package/esm2022/lib/validators/optional-valid-telephone/optional-valid-telephone.validator.mjs +14 -0
  124. package/esm2022/lib/validators/over-eighteen/over-eighteen.validator.mjs +45 -0
  125. package/esm2022/lib/validators/past-date/past-date.validator.mjs +16 -0
  126. package/esm2022/lib/validators/special-characters/special-characters.validator.mjs +11 -0
  127. package/esm2022/lib/validators/two-decimal-places/two-decimal-places.validator.mjs +12 -0
  128. package/esm2022/lib/validators/valid-value/valid-value.validator.mjs +9 -0
  129. package/esm2022/public-api.mjs +11 -0
  130. package/fesm2022/hmcts-opal-frontend-common-sign-in-stub.component-CysPzJGJ.mjs +41 -0
  131. package/fesm2022/hmcts-opal-frontend-common-sign-in-stub.component-CysPzJGJ.mjs.map +1 -0
  132. package/fesm2022/hmcts-opal-frontend-common.mjs +1947 -0
  133. package/fesm2022/hmcts-opal-frontend-common.mjs.map +1 -0
  134. package/index.d.ts +5 -0
  135. package/lib/components/govuk/govuk-button/govuk-button.component.d.ts +14 -0
  136. package/lib/components/govuk/govuk-text-input/govuk-text-input.component.d.ts +17 -0
  137. package/lib/components/govuk/index.d.ts +2 -0
  138. package/lib/guards/auth/auth.guard.d.ts +6 -0
  139. package/lib/guards/auth/index.d.ts +1 -0
  140. package/lib/guards/can-deactivate/can-deactivate.guard.d.ts +3 -0
  141. package/lib/guards/can-deactivate/index.d.ts +2 -0
  142. package/lib/guards/can-deactivate/interfaces/can-deactivate-can-component-deactivate.interface.d.ts +4 -0
  143. package/lib/guards/can-deactivate/interfaces/index.d.ts +2 -0
  144. package/lib/guards/has-flow-state/has-flow-state.guard.d.ts +2 -0
  145. package/lib/guards/has-flow-state/index.d.ts +1 -0
  146. package/lib/guards/helpers/get-guard-with-dummy-url.d.ts +12 -0
  147. package/lib/guards/helpers/handle-observable-result.d.ts +8 -0
  148. package/lib/guards/helpers/index.d.ts +4 -0
  149. package/lib/guards/helpers/run-auth-guard-with-context.d.ts +9 -0
  150. package/lib/guards/helpers/run-has-flow-state-guard-with-context.d.ts +3 -0
  151. package/lib/guards/index.d.ts +7 -0
  152. package/lib/guards/route-permissions/index.d.ts +1 -0
  153. package/lib/guards/route-permissions/route-permissions.guard.d.ts +2 -0
  154. package/lib/guards/signed-in/index.d.ts +1 -0
  155. package/lib/guards/signed-in/signed-in.guard.d.ts +8 -0
  156. package/lib/guards/types/can-deactivate.type.d.ts +3 -0
  157. package/lib/guards/types/guard-return.type.d.ts +2 -0
  158. package/lib/guards/types/index.d.ts +2 -0
  159. package/lib/interceptors/http-error/http-error.interceptor.d.ts +2 -0
  160. package/lib/interceptors/index.d.ts +2 -0
  161. package/lib/opal-frontend-common.module.d.ts +14 -0
  162. package/lib/pages/access-denied/access-denied.component.d.ts +7 -0
  163. package/lib/pages/index.d.ts +3 -0
  164. package/lib/pages/routing/constants/routing-paths.constant.d.ts +2 -0
  165. package/lib/pages/routing/constants/routing-titles.constant.d.ts +2 -0
  166. package/lib/pages/routing/interfaces/routing-paths.interface.d.ts +8 -0
  167. package/lib/pages/routing/pages.routes.d.ts +2 -0
  168. package/lib/pages/sign-in/interfaces/index.d.ts +2 -0
  169. package/lib/pages/sign-in/interfaces/sign-in-stub-form.interface.d.ts +3 -0
  170. package/lib/pages/sign-in/sign-in-sso/sign-in-sso.component.d.ts +11 -0
  171. package/lib/pages/sign-in/sign-in-stub/sign-in-stub.component.d.ts +19 -0
  172. package/lib/pages/sign-in/sign-in.component.d.ts +51 -0
  173. package/lib/resolvers/index.d.ts +2 -0
  174. package/lib/resolvers/title/index.d.ts +1 -0
  175. package/lib/resolvers/title/title.resolver.d.ts +10 -0
  176. package/lib/resolvers/user-state/index.d.ts +1 -0
  177. package/lib/resolvers/user-state/user-state.resolver.d.ts +7 -0
  178. package/lib/routing/constants/index.d.ts +1 -0
  179. package/lib/routing/constants/sso-endpoints.constant.d.ts +2 -0
  180. package/lib/routing/index.d.ts +2 -0
  181. package/lib/routing/interfaces/child-routing-paths.interface.d.ts +6 -0
  182. package/lib/routing/interfaces/index.d.ts +3 -0
  183. package/lib/routing/interfaces/nested-routes.interface.d.ts +4 -0
  184. package/lib/routing/interfaces/sso-endpoints.interface.d.ts +6 -0
  185. package/lib/services/app-initializer-service/app-initializer.service.d.ts +20 -0
  186. package/lib/services/app-initializer-service/index.d.ts +1 -0
  187. package/lib/services/app-insights/app-insights.service.d.ts +33 -0
  188. package/lib/services/app-insights/index.d.ts +1 -0
  189. package/lib/services/auth-service/auth.service.d.ts +8 -0
  190. package/lib/services/auth-service/index.d.ts +1 -0
  191. package/lib/services/date-service/date.service.d.ts +123 -0
  192. package/lib/services/date-service/index.d.ts +1 -0
  193. package/lib/services/index.d.ts +11 -0
  194. package/lib/services/launch-darkly/index.d.ts +2 -0
  195. package/lib/services/launch-darkly/launch-darkly.service.d.ts +41 -0
  196. package/lib/services/launch-darkly/mocks/index.d.ts +2 -0
  197. package/lib/services/launch-darkly/mocks/launch-darkly-change-flags.mock.d.ts +10 -0
  198. package/lib/services/launch-darkly/mocks/launch-darkly-flags.mock.d.ts +4 -0
  199. package/lib/services/permissions-service/index.d.ts +1 -0
  200. package/lib/services/permissions-service/permissions.service.d.ts +14 -0
  201. package/lib/services/session-service/constants/index.d.ts +1 -0
  202. package/lib/services/session-service/constants/session-endpoints.constant.d.ts +2 -0
  203. package/lib/services/session-service/index.d.ts +4 -0
  204. package/lib/services/session-service/interfaces/index.d.ts +3 -0
  205. package/lib/services/session-service/interfaces/session-endpoints.interface.d.ts +4 -0
  206. package/lib/services/session-service/interfaces/session-token-expiry.interface.d.ts +4 -0
  207. package/lib/services/session-service/interfaces/session-user-state.interface.d.ts +15 -0
  208. package/lib/services/session-service/mocks/index.d.ts +2 -0
  209. package/lib/services/session-service/mocks/session-token-expiry.mock.d.ts +2 -0
  210. package/lib/services/session-service/mocks/session-user-state.mock.d.ts +2 -0
  211. package/lib/services/session-service/session.service.d.ts +30 -0
  212. package/lib/services/sort-service/index.d.ts +3 -0
  213. package/lib/services/sort-service/interfaces/index.d.ts +2 -0
  214. package/lib/services/sort-service/interfaces/sort-service-values.interface.d.ts +6 -0
  215. package/lib/services/sort-service/interfaces/sort-service.interface.d.ts +4 -0
  216. package/lib/services/sort-service/sort-service.d.ts +64 -0
  217. package/lib/services/sort-service/types/index.d.ts +1 -0
  218. package/lib/services/sort-service/types/sort-service.type.d.ts +1 -0
  219. package/lib/services/transfer-state-service/index.d.ts +3 -0
  220. package/lib/services/transfer-state-service/interfaces/index.d.ts +3 -0
  221. package/lib/services/transfer-state-service/interfaces/transfer-state-app-insights-config.interface.d.ts +5 -0
  222. package/lib/services/transfer-state-service/interfaces/transfer-state-launch-darkly-config.interface.d.ts +5 -0
  223. package/lib/services/transfer-state-service/interfaces/transfer-state-server-state.interface.d.ts +7 -0
  224. package/lib/services/transfer-state-service/mocks/index.d.ts +3 -0
  225. package/lib/services/transfer-state-service/mocks/transfer-state-app-insights-config.mock.d.ts +5 -0
  226. package/lib/services/transfer-state-service/mocks/transfer-state-launch-darkly-config.mock.d.ts +5 -0
  227. package/lib/services/transfer-state-service/mocks/transfer-state.mock.d.ts +2 -0
  228. package/lib/services/transfer-state-service/transfer-state.service.d.ts +23 -0
  229. package/lib/services/transformation-service/index.d.ts +2 -0
  230. package/lib/services/transformation-service/interfaces/index.d.ts +1 -0
  231. package/lib/services/transformation-service/interfaces/transform-item.interface.d.ts +6 -0
  232. package/lib/services/transformation-service/transformation.service.d.ts +30 -0
  233. package/lib/services/utils/index.d.ts +1 -0
  234. package/lib/services/utils/utils.service.d.ts +54 -0
  235. package/lib/stores/global/global.store.d.ts +35 -0
  236. package/lib/stores/global/index.d.ts +3 -0
  237. package/lib/stores/global/interfaces/error-state.interface.d.ts +4 -0
  238. package/lib/stores/global/interfaces/index.d.ts +1 -0
  239. package/lib/stores/global/types/global-store.type.d.ts +2 -0
  240. package/lib/stores/global/types/index.d.ts +1 -0
  241. package/lib/stores/index.d.ts +1 -0
  242. package/lib/validators/alphabetical-text/alphabetical-text.validator.d.ts +2 -0
  243. package/lib/validators/amount/amount.validator.d.ts +2 -0
  244. package/lib/validators/date-after-year/date-after-year.validator.d.ts +2 -0
  245. package/lib/validators/date-before/date-before.validator.d.ts +2 -0
  246. package/lib/validators/date-of-birth/date-of-birth.validator.d.ts +2 -0
  247. package/lib/validators/future-date/future-date.validator.d.ts +2 -0
  248. package/lib/validators/index.d.ts +19 -0
  249. package/lib/validators/invalid-value/invalid-value.validator.d.ts +2 -0
  250. package/lib/validators/national-insurance-number/national-insurance-number.validator.d.ts +2 -0
  251. package/lib/validators/numerical-only/numerical-only.validator.d.ts +2 -0
  252. package/lib/validators/optional-max-length/optional-max-length.validator.d.ts +2 -0
  253. package/lib/validators/optional-valid-date/optional-valid-date.validator.d.ts +2 -0
  254. package/lib/validators/optional-valid-email-address/optional-valid-email-address.validator.d.ts +2 -0
  255. package/lib/validators/optional-valid-telephone/optional-valid-telephone.validator.d.ts +2 -0
  256. package/lib/validators/over-eighteen/over-eighteen.validator.d.ts +14 -0
  257. package/lib/validators/past-date/past-date.validator.d.ts +2 -0
  258. package/lib/validators/special-characters/special-characters.validator.d.ts +2 -0
  259. package/lib/validators/two-decimal-places/two-decimal-places.validator.d.ts +2 -0
  260. package/lib/validators/valid-value/valid-value.validator.d.ts +2 -0
  261. package/package.json +28 -0
  262. package/public-api.d.ts +10 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hmcts-opal-frontend-common.mjs","sources":["../../../projects/opal-frontend-common/src/lib/components/govuk/govuk-button/govuk-button.component.ts","../../../projects/opal-frontend-common/src/lib/components/govuk/govuk-button/govuk-button.component.html","../../../projects/opal-frontend-common/src/lib/components/govuk/govuk-text-input/govuk-text-input.component.ts","../../../projects/opal-frontend-common/src/lib/components/govuk/govuk-text-input/govuk-text-input.component.html","../../../projects/opal-frontend-common/src/lib/opal-frontend-common.module.ts","../../../projects/opal-frontend-common/src/lib/pages/routing/constants/routing-paths.constant.ts","../../../projects/opal-frontend-common/src/lib/routing/constants/sso-endpoints.constant.ts","../../../projects/opal-frontend-common/src/lib/stores/global/global.store.ts","../../../projects/opal-frontend-common/src/lib/stores/global/index.ts","../../../projects/opal-frontend-common/src/lib/services/auth-service/auth.service.ts","../../../projects/opal-frontend-common/src/lib/guards/auth/auth.guard.ts","../../../projects/opal-frontend-common/src/lib/guards/can-deactivate/can-deactivate.guard.ts","../../../projects/opal-frontend-common/src/lib/guards/can-deactivate/index.ts","../../../projects/opal-frontend-common/src/lib/guards/has-flow-state/has-flow-state.guard.ts","../../../projects/opal-frontend-common/src/lib/services/permissions-service/permissions.service.ts","../../../projects/opal-frontend-common/src/lib/services/permissions-service/index.ts","../../../projects/opal-frontend-common/src/lib/services/session-service/constants/session-endpoints.constant.ts","../../../projects/opal-frontend-common/src/lib/services/session-service/session.service.ts","../../../projects/opal-frontend-common/src/lib/services/session-service/mocks/session-token-expiry.mock.ts","../../../projects/opal-frontend-common/src/lib/services/session-service/mocks/session-user-state.mock.ts","../../../projects/opal-frontend-common/src/lib/services/session-service/index.ts","../../../projects/opal-frontend-common/src/lib/guards/route-permissions/route-permissions.guard.ts","../../../projects/opal-frontend-common/src/lib/services/transfer-state-service/transfer-state.service.ts","../../../projects/opal-frontend-common/src/lib/services/transfer-state-service/mocks/transfer-state-app-insights-config.mock.ts","../../../projects/opal-frontend-common/src/lib/services/transfer-state-service/mocks/transfer-state-launch-darkly-config.mock.ts","../../../projects/opal-frontend-common/src/lib/services/transfer-state-service/mocks/transfer-state.mock.ts","../../../projects/opal-frontend-common/src/lib/services/transfer-state-service/index.ts","../../../projects/opal-frontend-common/src/lib/services/app-initializer-service/app-initializer.service.ts","../../../projects/opal-frontend-common/src/lib/services/app-insights/app-insights.service.ts","../../../projects/opal-frontend-common/src/lib/services/app-insights/index.ts","../../../projects/opal-frontend-common/src/lib/services/date-service/date.service.ts","../../../projects/opal-frontend-common/src/lib/services/date-service/index.ts","../../../projects/opal-frontend-common/src/lib/services/launch-darkly/launch-darkly.service.ts","../../../projects/opal-frontend-common/src/lib/services/launch-darkly/mocks/launch-darkly-change-flags.mock.ts","../../../projects/opal-frontend-common/src/lib/services/launch-darkly/mocks/launch-darkly-flags.mock.ts","../../../projects/opal-frontend-common/src/lib/services/launch-darkly/index.ts","../../../projects/opal-frontend-common/src/lib/services/sort-service/sort-service.ts","../../../projects/opal-frontend-common/src/lib/services/sort-service/index.ts","../../../projects/opal-frontend-common/src/lib/services/transformation-service/transformation.service.ts","../../../projects/opal-frontend-common/src/lib/services/transformation-service/index.ts","../../../projects/opal-frontend-common/src/lib/services/utils/utils.service.ts","../../../projects/opal-frontend-common/src/lib/services/utils/index.ts","../../../projects/opal-frontend-common/src/lib/guards/signed-in/signed-in.guard.ts","../../../projects/opal-frontend-common/src/lib/guards/signed-in/index.ts","../../../projects/opal-frontend-common/src/lib/guards/helpers/get-guard-with-dummy-url.ts","../../../projects/opal-frontend-common/src/lib/guards/helpers/handle-observable-result.ts","../../../projects/opal-frontend-common/src/lib/guards/helpers/run-auth-guard-with-context.ts","../../../projects/opal-frontend-common/src/lib/guards/helpers/run-has-flow-state-guard-with-context.ts","../../../projects/opal-frontend-common/src/lib/guards/index.ts","../../../projects/opal-frontend-common/src/lib/interceptors/http-error/http-error.interceptor.ts","../../../projects/opal-frontend-common/src/lib/pages/access-denied/access-denied.component.ts","../../../projects/opal-frontend-common/src/lib/pages/access-denied/access-denied.component.html","../../../projects/opal-frontend-common/src/lib/pages/sign-in/sign-in-sso/sign-in-sso.component.ts","../../../projects/opal-frontend-common/src/lib/pages/sign-in/sign-in-sso/sign-in-sso.component.html","../../../projects/opal-frontend-common/src/lib/pages/sign-in/sign-in.component.ts","../../../projects/opal-frontend-common/src/lib/pages/sign-in/sign-in.component.html","../../../projects/opal-frontend-common/src/lib/pages/routing/constants/routing-titles.constant.ts","../../../projects/opal-frontend-common/src/lib/resolvers/user-state/user-state.resolver.ts","../../../projects/opal-frontend-common/src/lib/resolvers/title/title.resolver.ts","../../../projects/opal-frontend-common/src/lib/pages/routing/pages.routes.ts","../../../projects/opal-frontend-common/src/lib/validators/alphabetical-text/alphabetical-text.validator.ts","../../../projects/opal-frontend-common/src/lib/validators/amount/amount.validator.ts","../../../projects/opal-frontend-common/src/lib/validators/date-after-year/date-after-year.validator.ts","../../../projects/opal-frontend-common/src/lib/validators/date-before/date-before.validator.ts","../../../projects/opal-frontend-common/src/lib/validators/date-of-birth/date-of-birth.validator.ts","../../../projects/opal-frontend-common/src/lib/validators/future-date/future-date.validator.ts","../../../projects/opal-frontend-common/src/lib/validators/invalid-value/invalid-value.validator.ts","../../../projects/opal-frontend-common/src/lib/validators/national-insurance-number/national-insurance-number.validator.ts","../../../projects/opal-frontend-common/src/lib/validators/numerical-only/numerical-only.validator.ts","../../../projects/opal-frontend-common/src/lib/validators/optional-max-length/optional-max-length.validator.ts","../../../projects/opal-frontend-common/src/lib/validators/optional-valid-date/optional-valid-date.validator.ts","../../../projects/opal-frontend-common/src/lib/validators/optional-valid-email-address/optional-valid-email-address.validator.ts","../../../projects/opal-frontend-common/src/lib/validators/optional-valid-telephone/optional-valid-telephone.validator.ts","../../../projects/opal-frontend-common/src/lib/validators/over-eighteen/over-eighteen.validator.ts","../../../projects/opal-frontend-common/src/lib/validators/past-date/past-date.validator.ts","../../../projects/opal-frontend-common/src/lib/validators/special-characters/special-characters.validator.ts","../../../projects/opal-frontend-common/src/lib/validators/two-decimal-places/two-decimal-places.validator.ts","../../../projects/opal-frontend-common/src/lib/validators/valid-value/valid-value.validator.ts","../../../projects/opal-frontend-common/src/hmcts-opal-frontend-common.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\n\n@Component({\n standalone: true,\n selector: 'opal-lib-govuk-button',\n imports: [CommonModule, ReactiveFormsModule],\n templateUrl: './govuk-button.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class GovukButtonComponent {\n @Input({ required: true }) buttonId!: string;\n @Input({ required: false }) type = 'button';\n @Input({ required: false }) buttonClasses!: string;\n\n @Output() buttonClickEvent = new EventEmitter<boolean>();\n\n /**\n * Handles the button click event.\n */\n public handleButtonClick(): void {\n this.buttonClickEvent.emit(true);\n }\n}\n","<button\n [id]=\"buttonId\"\n [type]=\"type\"\n class=\"govuk-button {{ buttonClasses }}\"\n data-module=\"govuk-button\"\n (click)=\"handleButtonClick()\"\n>\n <ng-content></ng-content>\n</button>\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { AbstractControl, FormControl, ReactiveFormsModule } from '@angular/forms';\n\n@Component({\n standalone: true,\n selector: 'opal-lib-govuk-text-input',\n imports: [CommonModule, ReactiveFormsModule],\n templateUrl: './govuk-text-input.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class GovukTextInputComponent {\n private _control!: FormControl;\n\n @Input({ required: true }) labelText!: string;\n @Input({ required: false }) labelClasses!: string;\n @Input({ required: true }) inputId!: string;\n @Input({ required: true }) inputName!: string;\n @Input({ required: false }) inputClasses!: string;\n @Input({ required: false }) hintText!: string;\n @Input({ required: false }) hintHtml!: boolean;\n @Input({ required: false }) errors: string | null = null;\n @Input({ required: true }) set control(abstractControl: AbstractControl | null) {\n // Form controls are passed in as abstract controls, we need to re-cast it.\n this._control = abstractControl as FormControl;\n }\n\n get getControl() {\n return this._control;\n }\n}\n","<div class=\"govuk-form-group\" [class.govuk-form-group--error]=\"!!errors\">\n <h1 class=\"govuk-label-wrapper\">\n <label class=\"govuk-label {{ labelClasses }}\" [for]=\"inputId\">\n {{ labelText }}\n </label>\n </h1>\n @if (hintText) {\n <div id=\"{{ inputId }}-hint\" class=\"govuk-hint\">\n {{ hintText }}\n </div>\n }\n\n @if (hintHtml) {\n <div id=\"{{ inputId }}-hint\" class=\"govuk-hint\"><ng-content></ng-content></div>\n }\n\n @if (errors) {\n <p id=\"{{ this.inputId }}-error-message\" class=\"govuk-error-message\">\n <span class=\"govuk-visually-hidden\">Error: </span> {{ errors }}\n </p>\n }\n\n <input\n class=\"govuk-input {{ inputClasses }}\"\n [id]=\"inputId\"\n [name]=\"inputName\"\n type=\"text\"\n [formControl]=\"getControl\"\n />\n</div>\n","import { NgModule } from '@angular/core';\nimport { GovukButtonComponent } from './components/govuk/govuk-button/govuk-button.component';\nimport { GovukTextInputComponent } from './components/govuk/govuk-text-input/govuk-text-input.component';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { RouterModule } from '@angular/router';\n\nexport const GOV_UI_COMPONENTS = [GovukButtonComponent, GovukTextInputComponent];\n\n@NgModule({\n imports: [...GOV_UI_COMPONENTS, CommonModule, FormsModule, ReactiveFormsModule, RouterModule.forChild([])],\n exports: [...GOV_UI_COMPONENTS],\n})\nexport class OpalFrontendCommonModule {}\n","import { IPagesRoutingPaths } from '../interfaces/routing-paths.interface';\n\nexport const PAGES_ROUTING_PATHS: IPagesRoutingPaths = {\n root: '',\n children: {\n accessDenied: 'access-denied',\n signIn: 'sign-in',\n signInStub: 'sign-in-stub',\n },\n};\n","import { ISsoEndpoints } from '../interfaces';\n\nexport const SSO_ENDPOINTS: ISsoEndpoints = {\n login: '/sso/login',\n logout: '/sso/logout',\n callback: '/sso/callback',\n authenticated: '/sso/authenticated',\n};\n","import { patchState, signalStore, withMethods, withState } from '@ngrx/signals';\nimport { LDFlagSet } from 'launchdarkly-js-client-sdk';\nimport { IErrorState } from './interfaces/error-state.interface';\nimport { ISessionUserState } from '../../services/session-service/interfaces/session-user-state.interface';\nimport { ITransferStateLaunchDarklyConfig } from '../../services/transfer-state-service/interfaces/transfer-state-launch-darkly-config.interface';\nimport { ISessionTokenExpiry } from '../../services/session-service/interfaces/session-token-expiry.interface';\n\nexport const GlobalStore = signalStore(\n { providedIn: 'root' },\n withState(() => ({\n authenticated: false,\n error: { error: false, message: '' },\n featureFlags: {} as LDFlagSet,\n userState: {} as ISessionUserState,\n ssoEnabled: false,\n launchDarklyConfig: {} as ITransferStateLaunchDarklyConfig,\n tokenExpiry: {} as ISessionTokenExpiry,\n })),\n withMethods((store) => ({\n setAuthenticated: (authenticated: boolean) => {\n patchState(store, { authenticated });\n },\n setError: (error: IErrorState) => {\n patchState(store, { error });\n },\n setFeatureFlags: (featureFlags: LDFlagSet) => {\n patchState(store, { featureFlags });\n },\n setUserState: (userState: ISessionUserState) => {\n patchState(store, { userState });\n },\n setSsoEnabled: (ssoEnabled: boolean) => {\n patchState(store, { ssoEnabled });\n },\n setLaunchDarklyConfig: (config: ITransferStateLaunchDarklyConfig) => {\n patchState(store, { launchDarklyConfig: config });\n },\n setTokenExpiry: (tokenExpiry: ISessionTokenExpiry) => {\n patchState(store, { tokenExpiry });\n },\n })),\n);\n","// STORE\nexport * from './global.store';\n\n// INTERFACES AND TYPES\nexport * from './interfaces';\nexport * from './types';\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\nimport { catchError, tap, throwError } from 'rxjs';\nimport { SSO_ENDPOINTS } from '../../routing/constants/sso-endpoints.constant';\nimport { GlobalStore } from '../../stores';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AuthService {\n private readonly http = inject(HttpClient);\n private readonly globalStore = inject(GlobalStore);\n\n public checkAuthenticated() {\n return this.http\n .get<boolean>(SSO_ENDPOINTS.authenticated, {\n headers: new HttpHeaders({\n 'Cache-Control': 'no-cache',\n Pragma: 'no-cache',\n Expires: '0',\n }),\n })\n .pipe(\n tap((resp) => {\n this.globalStore.setAuthenticated(resp);\n }),\n )\n .pipe(\n catchError((error) => {\n this.globalStore.setAuthenticated(false);\n return throwError(() => error);\n }),\n );\n }\n}\n","import { CanActivateFn, Router } from '@angular/router';\nimport { inject } from '@angular/core';\nimport { map, catchError, of } from 'rxjs';\nimport { PAGES_ROUTING_PATHS } from '../../pages/routing/constants/routing-paths.constant';\nimport { AuthService } from '../../services/auth-service';\n\n/**\n * A guard that checks if the user is authenticated before allowing access to a route.\n * @returns An Observable that emits a boolean value indicating whether the user is authenticated.\n */\nexport const authGuard: CanActivateFn = () => {\n const authService: AuthService = inject(AuthService);\n const router = inject(Router);\n\n return authService.checkAuthenticated().pipe(\n map((resp) => {\n return resp;\n }),\n catchError(() => {\n router.navigate([PAGES_ROUTING_PATHS.children.signIn]);\n return of(false);\n }),\n );\n};\n","import { CanDeactivateFn } from '@angular/router';\nimport { ICanDeactivateCanComponentDeactivate } from './interfaces';\n\nexport const canDeactivateGuard: CanDeactivateFn<ICanDeactivateCanComponentDeactivate> = (\n component: ICanDeactivateCanComponentDeactivate,\n) => {\n return component.canDeactivate()\n ? true\n : confirm(\n 'WARNING: You have unsaved changes. Press Cancel to go back and save these changes, or OK to lose these changes.',\n );\n};\n","// GUARD\nexport * from './can-deactivate.guard';\n\n// INTERFACES\nexport * from './interfaces';\n","import { inject } from '@angular/core';\nimport { ActivatedRouteSnapshot, CanActivateFn, Router } from '@angular/router';\n\nexport function hasFlowStateGuard<T>(\n getState: () => T,\n checkCondition: (state: T) => boolean,\n getNavigationPath: () => string,\n): CanActivateFn {\n return (route: ActivatedRouteSnapshot) => {\n const router = inject(Router);\n const state = getState();\n const { queryParams, fragment } = route;\n\n return checkCondition(state)\n ? true\n : router.createUrlTree([getNavigationPath()], {\n queryParams: queryParams ?? undefined,\n fragment: fragment ?? undefined,\n });\n };\n}\n","import { Injectable } from '@angular/core';\nimport { ISessionUserState, ISessionUserStatePermission, ISessionUserStateRole } from '../session-service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class PermissionsService {\n private storedUniquePermissionIds: number[] = [];\n\n /**\n * Retrieves the unique permission IDs associated with the user.\n * If the unique permission IDs have not been stored yet, it calculates them based on the user's roles and permissions.\n * @returns An array of unique permission IDs.\n */\n public getUniquePermissions(userState: ISessionUserState | null): number[] {\n const roles = userState ? userState['business_unit_user'] : null;\n\n if (!this.storedUniquePermissionIds.length && roles) {\n const permissionIds = roles.flatMap((role) => {\n return role.permissions.map(({ permission_id: permissionId }) => permissionId);\n });\n\n this.storedUniquePermissionIds = [...new Set(permissionIds)];\n }\n\n return this.storedUniquePermissionIds;\n }\n\n public hasPermissionAccess(permissionId: number, businessUnitId: number, roles: ISessionUserStateRole[]): boolean {\n if (roles?.length) {\n // First we need to find the matching role\n const role = roles?.find((role) => role.business_unit_id === businessUnitId);\n\n // Then we need to find the matching permission\n const hasPermission = !!role?.permissions.find(\n (permission: ISessionUserStatePermission) => permission.permission_id === permissionId,\n );\n\n return hasPermission;\n }\n // if we don't have any roles, we can't have any permissions\n return true;\n }\n}\n","// SERVICE\nexport * from './permissions.service';\n\n// CONSTANTS, INTERFACES, AND MOCKS\n","import { ISessionEndpoints } from '../interfaces';\n\nexport const SESSION_ENDPOINTS: ISessionEndpoints = {\n userState: '/session/user-state',\n expiry: '/session/expiry',\n};\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\nimport { Observable, retry, shareReplay, tap, timer } from 'rxjs';\nimport { GlobalStore } from '../../stores';\nimport { SESSION_ENDPOINTS } from './constants';\nimport { ISessionUserState, ISessionTokenExpiry } from './interfaces';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SessionService {\n private readonly http = inject(HttpClient);\n private readonly globalStore = inject(GlobalStore);\n private userStateCache$!: Observable<ISessionUserState>;\n private tokenExpiryCache$!: Observable<ISessionTokenExpiry> | null;\n\n private readonly MAX_RETRIES = 5;\n private readonly RETRY_DELAY_MS = 1000;\n\n /**\n * Retrieves the user state from the backend.\n * If the user state is not available or needs to be refreshed, it makes an HTTP request to fetch the user state.\n * The user state is then stored in the state service for future use.\n * The user state is cached using the `shareReplay` operator to avoid unnecessary HTTP requests.\n * @returns An observable that emits the user state.\n */\n public getUserState(): Observable<ISessionUserState> {\n // The backend can return an empty object so...\n // If we don't have a user state, then we need to refresh it...\n // And override the shareReplay cache...\n const refresh = !this.globalStore.userState()?.user_id;\n\n if (!this.userStateCache$ || refresh) {\n this.userStateCache$ = this.http\n .get<ISessionUserState>(SESSION_ENDPOINTS.userState)\n .pipe(shareReplay(1))\n .pipe(\n tap((userState) => {\n this.globalStore.setUserState(userState);\n }),\n );\n }\n\n return this.userStateCache$;\n }\n\n /**\n * Retrieves the token expiry information from the server.\n * If the token expiry information is already cached, it returns the cached value.\n * Otherwise, it makes an HTTP GET request to fetch the token expiry information,\n * retries the request up to a maximum number of times if it fails, and caches the result.\n *\n * @returns {Observable<ISessionTokenExpiry>} An observable that emits the token expiry information.\n */\n public getTokenExpiry(): Observable<ISessionTokenExpiry> {\n if (!this.tokenExpiryCache$) {\n this.tokenExpiryCache$ = this.http.get<ISessionTokenExpiry>(SESSION_ENDPOINTS.expiry).pipe(\n retry({\n count: this.MAX_RETRIES,\n delay: () => timer(this.RETRY_DELAY_MS),\n }),\n tap((expiry) => {\n this.globalStore.setTokenExpiry(expiry);\n }),\n shareReplay(1),\n );\n }\n return this.tokenExpiryCache$;\n }\n}\n","import { ISessionTokenExpiry } from '../interfaces';\n\nexport const SESSION_TOKEN_EXPIRY_MOCK: ISessionTokenExpiry = {\n expiry: 'test',\n warningThresholdInMilliseconds: 5,\n};\n","import { ISessionUserState } from '../interfaces';\n\nexport const SESSION_USER_STATE_MOCK: ISessionUserState = {\n user_id: 'gl.timTest',\n user_name: 'timmyTest@HMCTS.NET',\n name: 'Timmy Test',\n business_unit_user: [\n {\n business_unit_user_id: 'L017KG',\n business_unit_id: 17,\n permissions: [\n {\n permission_id: 54,\n permission_name: 'Account Enquiry',\n },\n {\n permission_id: 41,\n permission_name: 'Account Enquiry - Account Notes',\n },\n ],\n },\n {\n business_unit_user_id: 'L016KG',\n business_unit_id: 16,\n permissions: [\n {\n permission_id: 54,\n permission_name: 'Account Enquiry',\n },\n {\n permission_id: 41,\n permission_name: 'Account Enquiry - Account Notes',\n },\n ],\n },\n {\n business_unit_user_id: 'L019KG',\n business_unit_id: 19,\n permissions: [\n {\n permission_id: 54,\n permission_name: 'Account Enquiry',\n },\n {\n permission_id: 41,\n permission_name: 'Account Enquiry - Account Notes',\n },\n ],\n },\n {\n business_unit_user_id: 'L013KG',\n business_unit_id: 13,\n permissions: [\n {\n permission_id: 54,\n permission_name: 'Account Enquiry',\n },\n {\n permission_id: 41,\n permission_name: 'Account Enquiry - Account Notes',\n },\n ],\n },\n {\n business_unit_user_id: 'L076KG',\n business_unit_id: 76,\n permissions: [\n {\n permission_id: 54,\n permission_name: 'Account Enquiry',\n },\n {\n permission_id: 41,\n permission_name: 'Account Enquiry - Account Notes',\n },\n ],\n },\n {\n business_unit_user_id: 'L081KG',\n business_unit_id: 81,\n permissions: [\n {\n permission_id: 54,\n permission_name: 'Account Enquiry',\n },\n {\n permission_id: 41,\n permission_name: 'Account Enquiry - Account Notes',\n },\n ],\n },\n {\n business_unit_user_id: 'L077KG',\n business_unit_id: 77,\n permissions: [\n {\n permission_id: 54,\n permission_name: 'Account Enquiry',\n },\n {\n permission_id: 41,\n permission_name: 'Account Enquiry - Account Notes',\n },\n ],\n },\n {\n business_unit_user_id: 'L078KG',\n business_unit_id: 78,\n permissions: [\n {\n permission_id: 54,\n permission_name: 'Account Enquiry',\n },\n {\n permission_id: 41,\n permission_name: 'Account Enquiry - Account Notes',\n },\n ],\n },\n {\n business_unit_user_id: 'L079KG',\n business_unit_id: 79,\n permissions: [\n {\n permission_id: 54,\n permission_name: 'Account Enquiry',\n },\n {\n permission_id: 41,\n permission_name: 'Account Enquiry - Account Notes',\n },\n ],\n },\n {\n business_unit_user_id: 'L040KG',\n business_unit_id: 40,\n permissions: [\n {\n permission_id: 54,\n permission_name: 'Account Enquiry',\n },\n {\n permission_id: 41,\n permission_name: 'Account Enquiry - Account Notes',\n },\n ],\n },\n {\n business_unit_user_id: 'L066KG',\n business_unit_id: 66,\n permissions: [\n {\n permission_id: 54,\n permission_name: 'Account Enquiry',\n },\n {\n permission_id: 41,\n permission_name: 'Account Enquiry - Account Notes',\n },\n ],\n },\n {\n business_unit_user_id: 'L072KG',\n business_unit_id: 72,\n permissions: [\n {\n permission_id: 54,\n permission_name: 'Account Enquiry',\n },\n {\n permission_id: 41,\n permission_name: 'Account Enquiry - Account Notes',\n },\n ],\n },\n {\n business_unit_user_id: 'L067KG',\n business_unit_id: 67,\n permissions: [\n {\n permission_id: 54,\n permission_name: 'Account Enquiry',\n },\n {\n permission_id: 41,\n permission_name: 'Account Enquiry - Account Notes',\n },\n ],\n },\n {\n business_unit_user_id: 'L073KG',\n business_unit_id: 73,\n permissions: [\n {\n permission_id: 54,\n permission_name: 'Account Enquiry',\n },\n {\n permission_id: 41,\n permission_name: 'Account Enquiry - Account Notes',\n },\n ],\n },\n {\n business_unit_user_id: 'L068KG',\n business_unit_id: 68,\n permissions: [\n {\n permission_id: 54,\n permission_name: 'Account Enquiry',\n },\n {\n permission_id: 41,\n permission_name: 'Account Enquiry - Account Notes',\n },\n ],\n },\n {\n business_unit_user_id: 'L074KG',\n business_unit_id: 74,\n permissions: [\n {\n permission_id: 54,\n permission_name: 'Account Enquiry',\n },\n {\n permission_id: 41,\n permission_name: 'Account Enquiry - Account Notes',\n },\n ],\n },\n {\n business_unit_user_id: 'L069KG',\n business_unit_id: 69,\n permissions: [\n {\n permission_id: 54,\n permission_name: 'Account Enquiry',\n },\n {\n permission_id: 41,\n permission_name: 'Account Enquiry - Account Notes',\n },\n ],\n },\n {\n business_unit_user_id: 'L075KG',\n business_unit_id: 75,\n permissions: [\n {\n permission_id: 54,\n permission_name: 'Account Enquiry',\n },\n {\n permission_id: 41,\n permission_name: 'Account Enquiry - Account Notes',\n },\n ],\n },\n {\n business_unit_user_id: 'L080KG',\n business_unit_id: 80,\n permissions: [\n {\n permission_id: 54,\n permission_name: 'Account Enquiry',\n },\n {\n permission_id: 41,\n permission_name: 'Account Enquiry - Account Notes',\n },\n ],\n },\n {\n business_unit_user_id: 'L062KG',\n business_unit_id: 62,\n permissions: [\n {\n permission_id: 54,\n permission_name: 'Account Enquiry',\n },\n {\n permission_id: 41,\n permission_name: 'Account Enquiry - Account Notes',\n },\n ],\n },\n {\n business_unit_user_id: 'L025KG',\n business_unit_id: 25,\n permissions: [\n {\n permission_id: 54,\n permission_name: 'Account Enquiry',\n },\n {\n permission_id: 41,\n permission_name: 'Account Enquiry - Account Notes',\n },\n ],\n },\n {\n business_unit_user_id: 'L032KG',\n business_unit_id: 32,\n permissions: [\n {\n permission_id: 54,\n permission_name: 'Account Enquiry',\n },\n {\n permission_id: 41,\n permission_name: 'Account Enquiry - Account Notes',\n },\n ],\n },\n {\n business_unit_user_id: 'L063KG',\n business_unit_id: 63,\n permissions: [\n {\n permission_id: 54,\n permission_name: 'Account Enquiry',\n },\n {\n permission_id: 41,\n permission_name: 'Account Enquiry - Account Notes',\n },\n ],\n },\n {\n business_unit_user_id: 'L064KG',\n business_unit_id: 64,\n permissions: [\n {\n permission_id: 54,\n permission_name: 'Account Enquiry',\n },\n {\n permission_id: 41,\n permission_name: 'Account Enquiry - Account Notes',\n },\n ],\n },\n {\n business_unit_user_id: 'L070KG',\n business_unit_id: 70,\n permissions: [\n {\n permission_id: 54,\n permission_name: 'Account Enquiry',\n },\n {\n permission_id: 41,\n permission_name: 'Account Enquiry - Account Notes',\n },\n ],\n },\n {\n business_unit_user_id: 'L065KG',\n business_unit_id: 65,\n permissions: [\n {\n permission_id: 54,\n permission_name: 'Account Enquiry',\n },\n {\n permission_id: 41,\n permission_name: 'Account Enquiry - Account Notes',\n },\n ],\n },\n {\n business_unit_user_id: 'L071KG',\n business_unit_id: 71,\n permissions: [\n {\n permission_id: 54,\n permission_name: 'Account Enquiry',\n },\n {\n permission_id: 41,\n permission_name: 'Account Enquiry - Account Notes',\n },\n ],\n },\n ],\n};\n","// SERVICE\nexport * from './session.service';\n\n// CONSTANTS, INTERFACES, AND MOCKS\nexport * from './constants';\nexport * from './interfaces';\nexport * from './mocks';\n","import { inject } from '@angular/core';\nimport { ActivatedRouteSnapshot, CanActivateFn, Router } from '@angular/router';\nimport { catchError, map, of } from 'rxjs';\nimport { PermissionsService } from '../../services/permissions-service';\nimport { SessionService } from '../../services/session-service';\nimport { PAGES_ROUTING_PATHS } from '../../pages/routing/constants/routing-paths.constant';\n\nexport const routePermissionsGuard: CanActivateFn = (route: ActivatedRouteSnapshot) => {\n const permissionService = inject(PermissionsService);\n const sessionService = inject(SessionService);\n const router = inject(Router);\n\n return sessionService.getUserState().pipe(\n map((resp) => {\n const routePermissionId: number = route.data['routePermissionId'];\n\n // Get the unique permission ids for the user\n const uniquePermissionIds = permissionService.getUniquePermissions(resp);\n\n // If we don't have a permission id for the route, or we don't have any unique permission ids, or the user doesn't have the required permission\n // then redirect the user to the access denied page\n if (!routePermissionId || uniquePermissionIds.length === 0 || !uniquePermissionIds.includes(routePermissionId)) {\n return router.createUrlTree([`/${PAGES_ROUTING_PATHS.children.accessDenied}`]);\n }\n\n return true;\n }),\n catchError(() => {\n return of(false);\n }),\n );\n};\n","import { isPlatformBrowser } from '@angular/common';\nimport { Inject, Injectable, Optional, PLATFORM_ID, TransferState, inject, makeStateKey } from '@angular/core';\nimport { ITransferStateServerState } from './interfaces/transfer-state-server-state.interface';\nimport { GlobalStore } from '../../stores/global/global.store';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class TransferStateService {\n private readonly globalStore = inject(GlobalStore);\n private readonly storedServerTransferState!: ITransferStateServerState;\n\n constructor(\n @Inject(PLATFORM_ID) private readonly platformId: typeof PLATFORM_ID,\n @Optional()\n @Inject('serverTransferState')\n public readonly serverTransferState: ITransferStateServerState | null,\n private readonly transferState: TransferState,\n ) {\n const storeKeyTransferState = makeStateKey<ITransferStateServerState>('serverTransferState');\n\n if (isPlatformBrowser(this.platformId)) {\n // get user state from transfer state if browser side\n this.serverTransferState = this.transferState.get(storeKeyTransferState, null);\n\n if (this.serverTransferState) {\n this.storedServerTransferState = this.serverTransferState;\n }\n } else {\n // server side: store server transfer state\n this.transferState.set(storeKeyTransferState, this.serverTransferState);\n }\n }\n\n /**\n * Initializes the SSO (Single Sign-On) enabled state.\n * Sets the SSO enabled state based on the stored server transfer state.\n */\n public initializeSsoEnabled(): void {\n this.globalStore.setSsoEnabled(this.storedServerTransferState?.ssoEnabled);\n }\n\n /**\n * Initializes the LaunchDarkly configuration by assigning the stored server transfer state's\n * launchDarklyConfig value to the globalStore's launchDarklyConfig property.\n */\n public initializeLaunchDarklyConfig(): void {\n this.globalStore.setLaunchDarklyConfig(this.storedServerTransferState?.launchDarklyConfig);\n }\n}\n","export const TRANSFER_STATE_APP_INSIGHTS_CONFIG_MOCK = {\n enabled: true,\n connectionString:\n 'InstrumentationKey=00000000-0000-0000-0000-000000000000;IngestionEndpoint=https://your-ingestion-endpoint/',\n cloudRoleName: 'opal-frontend',\n};\n","export const TRANSFER_STATE_LAUNCH_DARKLY_CONFIG_MOCK = {\n enabled: true,\n clientId: '12345',\n stream: true,\n};\n","import { ITransferStateServerState } from '../interfaces/transfer-state-server-state.interface';\nimport { TRANSFER_STATE_LAUNCH_DARKLY_CONFIG_MOCK } from './transfer-state-launch-darkly-config.mock';\nimport { TRANSFER_STATE_APP_INSIGHTS_CONFIG_MOCK } from './transfer-state-app-insights-config.mock';\n\nexport const TRANSFER_STATE_MOCK: ITransferStateServerState = {\n launchDarklyConfig: TRANSFER_STATE_LAUNCH_DARKLY_CONFIG_MOCK,\n ssoEnabled: true,\n appInsightsConfig: TRANSFER_STATE_APP_INSIGHTS_CONFIG_MOCK,\n};\n","// SERVICE\nexport * from './transfer-state.service';\n\n// CONSTANTS, INTERFACES, AND MOCKS\nexport * from './interfaces';\nexport * from './mocks';\n","import { Injectable, inject } from '@angular/core';\nimport { TransferStateService } from '../transfer-state-service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AppInitializerService {\n private readonly transferStateService = inject(TransferStateService);\n\n /**\n * Initializes the SSO (Single Sign-On) enabled state.\n * This method calls the `initializeSsoEnabled` method of the `transferStateService`.\n */\n private initializeSsoEnabled(): void {\n this.transferStateService.initializeSsoEnabled();\n }\n\n /**\n * Initializes the LaunchDarkly configuration.\n */\n private initializeLaunchDarkly(): void {\n this.transferStateService.initializeLaunchDarklyConfig();\n }\n\n /**\n * Initializes the application.\n * This method calls the necessary initialization functions.\n */\n public initializeApp(): void {\n this.initializeSsoEnabled();\n this.initializeLaunchDarkly();\n }\n}\n","import { isPlatformBrowser } from '@angular/common';\nimport { inject, Injectable, PLATFORM_ID } from '@angular/core';\nimport { ApplicationInsights, ITelemetryItem } from '@microsoft/applicationinsights-web';\nimport { ITransferStateAppInsightsConfig } from '../transfer-state-service/interfaces/transfer-state-app-insights-config.interface';\nimport { TransferStateService } from '../transfer-state-service/transfer-state.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AppInsightsService {\n private readonly appInsights!: ApplicationInsights;\n private readonly appInsightsConfig!: ITransferStateAppInsightsConfig | undefined;\n private readonly platformId = inject(PLATFORM_ID);\n private readonly transferStateService = inject(TransferStateService);\n\n constructor() {\n this.appInsightsConfig = this.transferStateService.serverTransferState?.appInsightsConfig;\n\n if (isPlatformBrowser(this.platformId) && this.appInsightsConfig) {\n if (this.appInsightsConfig.enabled) {\n this.appInsights = new ApplicationInsights({\n config: {\n connectionString: this.appInsightsConfig.connectionString!,\n enableAutoRouteTracking: true,\n },\n });\n\n this.appInsights.addTelemetryInitializer(this.telemetryInitializer.bind(this));\n this.appInsights.loadAppInsights();\n }\n }\n }\n\n /**\n * Adds a telemetry initializer to set the cloud role name for the telemetry item.\n *\n * @param envelope - The telemetry item to which the cloud role name will be added.\n */\n private telemetryInitializer(envelope: ITelemetryItem): void {\n envelope.tags = envelope.tags || {};\n if (this.appInsightsConfig?.enabled) {\n envelope.tags['ai.cloud.role'] = this.appInsightsConfig.cloudRoleName!;\n }\n }\n\n /**\n * Logs a page view to the Application Insights service.\n *\n * @param name - The name of the page. Optional.\n * @param url - The URL of the page. Optional.\n *\n * This method uses the Application Insights SDK to track a page view event.\n * If the `name` or `url` parameters are not provided, the SDK will use default values.\n */\n public logPageView(name?: string, url?: string): void {\n if (!this.appInsightsConfig?.enabled) {\n return;\n }\n this.appInsights.trackPageView({ name, uri: url });\n }\n\n /**\n * Logs an exception to the Application Insights service.\n *\n * @param exception - The error object to be logged.\n * @param severityLevel - Optional. The severity level of the exception. If not provided, a default severity level will be used.\n */\n public logException(exception: Error, severityLevel?: number): void {\n if (!this.appInsightsConfig?.enabled) {\n return;\n }\n this.appInsights.trackException({ exception, severityLevel });\n }\n}\n","// SERVICE\nexport * from './app-insights.service';\n\n// CONSTANTS, INTERFACES, AND MOCKS\n","import { Injectable } from '@angular/core';\nimport { DateTime, Duration, DurationLikeObject } from 'luxon';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class DateService {\n /**\n * Calculates the difference in minutes between two DateTime objects.\n * @param startDate The start date and time.\n * @param endDate The end date and time.\n * @returns The difference in minutes between the start and end dates.\n */\n public calculateMinutesDifference(startDate: DateTime, endDate: DateTime): number {\n const minuteDifference = endDate.diff(startDate, 'minutes');\n return Math.max(0, Math.ceil(minuteDifference.minutes));\n }\n\n /**\n * Converts milliseconds to minutes.\n * @param milliseconds - The number of milliseconds to convert.\n * @returns The equivalent number of minutes.\n */\n public convertMillisecondsToMinutes(milliseconds: number): number {\n const minutes = Duration.fromMillis(milliseconds).as('minutes');\n return Math.max(0, Math.ceil(minutes));\n }\n\n /**\n * Calculates the age based on the given date of birth.\n * @param dateOfBirth - The date of birth to calculate the age from.\n * @param format - The format of the date of birth. Defaults to 'dd/MM/yyyy'.\n * @returns The calculated age.\n */\n public calculateAge(dateOfBirth: DateTime | string, format: string = 'dd/MM/yyyy'): number {\n const date = typeof dateOfBirth === 'string' ? this.getFromFormat(dateOfBirth, format) : dateOfBirth;\n\n return Math.floor(DateTime.now().diff(date, 'years').years);\n }\n\n /**\n * Checks if a given date is valid.\n * @param dateInput - The date to be checked. It can be a DateTime object, a string, or null.\n * @param format - The format of the date string (default: 'dd/MM/yyyy').\n * @returns A boolean indicating whether the date is valid or not.\n */\n public isValidDate(dateInput: DateTime | string | null, format: string = 'dd/MM/yyyy'): boolean {\n if (dateInput) {\n const date = typeof dateInput === 'string' ? this.getFromFormat(dateInput, format) : dateInput;\n return date.isValid;\n }\n return false;\n }\n\n /**\n * Returns a string representation of a date subtracted by the given duration.\n * @param duration A DurationLikeObject representing the amount of time to subtract from the current date.\n * @returns A string representing the subtracted date in the format specified by the current locale.\n */\n public getPreviousDate(duration: DurationLikeObject): string {\n return DateTime.now().minus(duration).setLocale('en-gb').toLocaleString();\n }\n\n /**\n * Parses a string value into a DateTime object based on the specified format.\n * @param value - The string value to parse.\n * @param format - The format of the string value.\n * @returns A DateTime object representing the parsed value.\n */\n public getFromFormat(value: string, format: string): DateTime<true> | DateTime<false> {\n return DateTime.fromFormat(value, format);\n }\n\n /**\n * Parses a string value into a native JavaScript Date object based on the specified format.\n * @param value - The string value to parse.\n * @param format - The format of the string value.\n * @returns A Date object representing the parsed value, or null if parsing fails.\n */\n public getDateFromFormat(value: string, format: string): Date | null {\n const dateTime = DateTime.fromFormat(value, format);\n return dateTime.isValid ? dateTime.toJSDate() : null;\n }\n\n /**\n * Converts a DateTime value to a formatted string.\n *\n * @param value - The DateTime value to format.\n * @param format - The format string to apply to the DateTime value.\n * @returns The formatted string representation of the DateTime value.\n */\n public toFormat(value: DateTime<true> | DateTime<false>, format: string): string {\n return value.toFormat(format);\n }\n\n /**\n * Converts a given Date object to a formatted string based on the specified format.\n *\n * @param value - The Date object to be formatted.\n * @param format - The string format to apply to the Date object.\n * @returns The formatted date string.\n */\n public toDateStringFormat(value: Date, format: string): string {\n return DateTime.fromJSDate(value).toFormat(format);\n }\n\n /**\n * Converts a string in ISO format to a DateTime object.\n * @param value - The string value in ISO format.\n * @returns A DateTime object representing the given value.\n */\n public getFromIso(value: string): DateTime {\n return DateTime.fromISO(value);\n }\n\n /**\n * Returns the current date and time.\n * @returns {DateTime} The current date and time.\n */\n public getDateNow(): DateTime {\n return DateTime.now();\n }\n\n /**\n * Adds a duration to a given date and returns the result in the specified format.\n * @param date - The date to which the duration will be added.\n * @param years - The number of years to add to the date (default: 0).\n * @param months - The number of months to add to the date (default: 0).\n * @param weeks - The number of weeks to add to the date (default: 0).\n * @param days - The number of days to add to the date (default: 0).\n * @param format - The format in which the resulting date will be returned (default: 'dd/MM/yyyy').\n * @returns The resulting date in the specified format.\n */\n public addDurationToDate(\n date: string,\n years: number = 0,\n months: number = 0,\n weeks: number = 0,\n days: number = 0,\n format: string = 'dd/MM/yyyy',\n ): string {\n const dateObj = this.getFromFormat(date, format);\n const newDate = dateObj.plus({ years, months, weeks, days });\n return newDate.toFormat(format);\n }\n\n /**\n * Calculates the number of days between two dates.\n * @param startDate - The start date in the specified format.\n * @param endDate - The end date in the specified format.\n * @param format - The format of the dates (default: 'dd/MM/yyyy').\n * @returns The number of days between the start and end dates.\n */\n public calculateDaysBetweenDates(startDate: string, endDate: string, format: string = 'dd/MM/yyyy'): number {\n const start = this.getFromFormat(startDate, format);\n const end = this.getFromFormat(endDate, format);\n const diff = end.diff(start, 'days');\n return diff.days;\n }\n\n /**\n * Checks if a given date is in the past.\n * @param date - The date to check.\n * @param format - The format of the date string. Defaults to 'dd/MM/yyyy'.\n * @returns True if the date is in the past, false otherwise.\n */\n public isDateInThePast(date: string, format: string = 'dd/MM/yyyy'): boolean {\n return this.getFromFormat(date, format) < DateTime.now();\n }\n\n /**\n * Checks if a given date is in the future.\n * @param date - The date to check.\n * @param yearsInTheFuture - Optional. The number of years in the future to compare against. If not provided, the current date is used.\n * @param format - Optional. The format of the input date. Defaults to 'dd/MM/yyyy'.\n * @returns True if the date is in the future, false otherwise.\n */\n public isDateInTheFuture(date: string, yearsInTheFuture?: number, format: string = 'dd/MM/yyyy'): boolean {\n const now = DateTime.now();\n const dateValue = this.getFromFormat(date, format);\n\n if (yearsInTheFuture) {\n const futureDate = now.plus({ years: yearsInTheFuture });\n return dateValue > futureDate;\n }\n\n return dateValue > now;\n }\n\n /**\n * Converts a date string from one format to another.\n *\n * @param date - The date string to be converted.\n * @param fromFormat - The format of the input date string.\n * @param toFormat - The desired format of the output date string.\n * @returns The date string in the desired format.\n */\n public getFromFormatToFormat(date: string, fromFormat: string, toFormat: string): string {\n return this.getFromFormat(date, fromFormat).toFormat(toFormat);\n }\n}\n","// SERVICE\nexport * from './date.service';\n\n// CONSTANTS, INTERFACES, AND MOCKS\n","import { inject, Injectable, OnDestroy } from '@angular/core';\nimport { initialize, LDClient, LDFlagChangeset, LDFlagSet } from 'launchdarkly-js-client-sdk';\nimport { GlobalStore } from '../../stores';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class LaunchDarklyService implements OnDestroy {\n private readonly globalStore = inject(GlobalStore);\n private ldClient!: LDClient;\n\n /**\n * Sets the LaunchDarkly flags by updating the featureFlags in the state service.\n */\n private setLaunchDarklyFlags() {\n if (this.ldClient) {\n this.globalStore.setFeatureFlags(this.ldClient.allFlags());\n }\n }\n\n /**\n * Formats the LDFlagChangeset into an LDFlagSet.\n *\n * @param flags - The LDFlagChangeset to be formatted.\n * @returns The formatted LDFlagSet.\n */\n private formatChangeFlags(flags: LDFlagChangeset): LDFlagSet {\n return Object.keys(flags).reduce((flag: LDFlagSet, key) => {\n flag[key] = flags[key].current;\n return flag;\n }, {});\n }\n\n /**\n * Closes the LaunchDarkly client if it is open.\n */\n private closeLaunchDarklyClient(): void {\n if (this.ldClient) {\n this.ldClient.close();\n }\n }\n\n /**\n * Initializes the LaunchDarkly change listener.\n * This method listens for changes in feature flags and updates the state accordingly.\n */\n public initializeLaunchDarklyChangeListener() {\n if (this.ldClient && this.globalStore.launchDarklyConfig().stream) {\n this.ldClient.on('change', (flags: LDFlagChangeset) => {\n const updatedFlags = {\n ...this.globalStore.featureFlags(),\n ...this.formatChangeFlags(flags),\n };\n this.globalStore.setFeatureFlags(updatedFlags);\n });\n }\n }\n\n /**\n * Initializes the LaunchDarkly flags and sets them.\n * If the LD client is already initialized, it waits for initialization and then sets the flags.\n * If the LD client is not initialized, it returns a resolved promise.\n * @returns A promise that resolves when the flags are set.\n */\n public async initializeLaunchDarklyFlags(): Promise<void> {\n if (this.ldClient) {\n return this.ldClient\n .waitForInitialization()\n .then(() => this.setLaunchDarklyFlags())\n .catch((err) => {\n throw err;\n });\n }\n\n return Promise.resolve();\n }\n\n /**\n * Initializes the LaunchDarkly client.\n * If a stored LaunchDarkly client ID exists, it initializes the client with the ID and anonymous mode enabled.\n */\n public initializeLaunchDarklyClient(): void {\n if (this.globalStore.launchDarklyConfig()) {\n const { enabled, clientId } = this.globalStore.launchDarklyConfig();\n\n if (enabled && clientId) {\n this.ldClient = initialize(clientId, {\n anonymous: true,\n });\n }\n }\n }\n\n ngOnDestroy(): void {\n this.closeLaunchDarklyClient();\n }\n}\n","export const LAUNCH_DARKLY_CHANGE_FLAGS_MOCK = {\n flag1: { current: true, previous: false },\n flag2: { current: false, previous: true },\n};\n","export const LAUNCH_DARKLY_FLAGS_MOCK = {\n flag1: true,\n flag2: false,\n};\n","// SERVICE\nexport * from './launch-darkly.service';\n\n// CONSTANTS, INTERFACES, AND MOCKS\nexport * from './mocks';\n","import { Injectable } from '@angular/core';\nimport { sort } from 'fast-sort';\nimport { ISortServiceConfig } from './interfaces/sort-service.interface';\nimport { ISortServiceValues, ISortServiceArrayValues } from './interfaces/sort-service-values.interface';\nimport { SortableValues } from './types/sort-service.type';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SortService {\n /**\n * Sorts an array of values in ascending order.\n *\n * @param array - The array of values to be sorted.\n * @returns The sorted array in ascending order.\n */\n public arraySortAsc(array: ISortServiceArrayValues): ISortServiceArrayValues {\n return sort(array).asc();\n }\n\n /**\n * Sorts an array of values in descending order.\n *\n * @param array - The array of values to be sorted.\n * @returns The sorted array in descending order.\n */\n public arraySortDesc(array: ISortServiceArrayValues): ISortServiceArrayValues {\n return sort(array).desc();\n }\n\n /**\n * Sorts an array of objects based on a specified key and sort type.\n *\n * @param array - The array of objects to be sorted. Each object should implement the `ISortServiceValues` interface.\n * @param config - The configuration object containing the key to sort by and the sort type (ascending or descending).\n * @returns The sorted array of objects.\n *\n * @remarks\n * - If the input array is not an array or the config key is not provided, the original array is returned.\n * - The `sortType` can be either 'ascending' or 'descending'.\n *\n * @example\n * ```typescript\n * const array = [\n * { name: 'Alice', age: 30 },\n * { name: 'Bob', age: 25 },\n * ];\n * const config = { key: 'age', sortType: 'ascending' };\n * const sortedArray = getObjects(array, config);\n * // sortedArray will be:\n * // [\n * // { name: 'Bob', age: 25 },\n * // { name: 'Alice', age: 30 },\n * // ]\n * ```\n */\n private sortObjectArray(\n array: ISortServiceValues<SortableValues>[] | null,\n config: ISortServiceConfig,\n ): ISortServiceValues<SortableValues>[] | null {\n if (!Array.isArray(array) || !config.key) {\n return array;\n }\n\n const { key, sortType } = config;\n\n if (sortType === 'ascending') {\n return sort(array).asc((obj) => obj[key]);\n } else {\n return sort(array).desc((obj) => obj[key]);\n }\n }\n\n /**\n * Sorts an array of objects in ascending order based on the specified key.\n *\n * @param array - The array of objects to be sorted.\n * @param key - The key of the object property to sort by.\n * @returns The sorted array of objects.\n */\n public sortObjectArrayAsc(\n array: ISortServiceValues<SortableValues>[] | null,\n key: string,\n ): ISortServiceValues<SortableValues>[] | null {\n return this.sortObjectArray(array, { key, sortType: 'ascending' });\n }\n\n /**\n * Sorts an array of objects in descending order based on the specified key.\n *\n * @param array - The array of objects to be sorted. Each object should implement the ISortServiceValues interface.\n * @param key - The key of the object property to sort by.\n * @returns The sorted array of objects in descending order.\n */\n public sortObjectArrayDesc(\n array: ISortServiceValues<SortableValues>[] | null,\n key: string,\n ): ISortServiceValues<SortableValues>[] | null {\n return this.sortObjectArray(array, { key, sortType: 'descending' });\n }\n}\n","// SERVICE\nexport * from './sort-service';\n\n// INTERFACES AND TYPES\nexport * from './interfaces';\nexport * from './types';\n","import { inject, Injectable } from '@angular/core';\nimport { ITransformItem } from './interfaces/transform-item.interface';\nimport { DateService } from '../date-service/date.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class TransformationService {\n private readonly dateService = inject(DateService);\n\n /**\n * Applies a transformation to the given value based on the specified transformation configuration.\n *\n * @param value - The value to be transformed.\n * @param transformItem - The configuration for the transformation, including the type of transformation and any necessary format details.\n * @returns The transformed value, or the original value if no transformation is applied.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private applyTransformation(value: any, transformItem: ITransformItem): any {\n if (!value) {\n return value;\n }\n\n if (transformItem.transformType === 'date') {\n if (transformItem.dateInputFormat !== null && transformItem.dateOutputFormat !== null) {\n const parsedDate = this.dateService.getFromFormat(value, transformItem.dateInputFormat);\n if (this.dateService.isValidDate(parsedDate)) {\n return this.dateService.toFormat(parsedDate, transformItem.dateOutputFormat);\n }\n }\n return value;\n }\n\n return value;\n }\n\n /**\n * Transforms the values of an object based on a given transformation configuration.\n *\n * @param obj - The object whose values need to be transformed. It should be a non-null object.\n * @param toTransform - An array of transformation configurations, where each configuration specifies\n * the key to transform and the transformation details.\n * @returns The transformed object with values modified according to the transformation configuration.\n *\n * @remarks\n * - If the input `obj` is not an object or is null, it returns the input as is.\n * - The function recursively processes nested objects.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public transformObjectValues(obj: { [key: string]: any }, toTransform: ITransformItem[]): any {\n if (typeof obj !== 'object' || obj === null) {\n return obj;\n }\n\n for (const [key, value] of Object.entries(obj)) {\n const transformItem = toTransform.find((item) => item.key === key);\n\n if (transformItem) {\n obj[key] = this.applyTransformation(value, transformItem);\n } else if (Array.isArray(value)) {\n obj[key] = value.map((item) =>\n typeof item === 'object' ? this.transformObjectValues(item, toTransform) : item,\n );\n } else if (typeof value === 'object') {\n obj[key] = this.transformObjectValues(value, toTransform); // Recursive call\n }\n }\n return obj;\n }\n}\n","// SERVICE\nexport * from './transformation.service';\n\n// INTERFACES\nexport * from './interfaces';\n","import { ViewportScroller } from '@angular/common';\nimport { inject, Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class UtilsService {\n private readonly viewportScroller = inject(ViewportScroller);\n\n /**\n * Converts the first letter of a string to uppercase.\n * @param str - The input string.\n * @returns The input string with the first letter capitalized.\n */\n public upperCaseFirstLetter(str: string): string {\n return str.charAt(0).toUpperCase() + str.slice(1);\n }\n\n /**\n * Converts the entire string to uppercase.\n * @param str - The input string.\n * @returns The input string in uppercase.\n */\n public upperCaseAllLetters(str: string): string {\n return str.toUpperCase();\n }\n\n /**\n * Converts a number to a monetary string representation.\n * @param amount - The number to convert.\n * @returns The monetary string representation of the number.\n */\n public convertToMonetaryString(amount: number | string): string {\n if (typeof amount === 'string') {\n amount = parseFloat(amount);\n }\n return `£${amount.toFixed(2)}`;\n }\n\n /**\n * Formats a 6-digit number or string as a sort code.\n * @param value - The 6-digit value to format.\n * @returns The formatted sort code string (xx-xx-xx).\n */\n public formatSortCode(value: string | number): string {\n const sortCode = value.toString();\n return `${sortCode.slice(0, 2)}-${sortCode.slice(2, 4)}-${sortCode.slice(4, 6)}`;\n }\n\n /**\n * Filters out null or empty strings from an array of address lines.\n *\n * @param address - An array of address lines which may contain strings or null values.\n * @returns A new array containing only non-empty strings from the input array.\n */\n public formatAddress(address: (string | null)[]): string[] {\n return address.filter((line): line is string => !!line?.trim());\n }\n\n /**\n * Scrolls the viewport to the top of the page.\n * Utilizes the `viewportScroller` service to scroll to the position [0, 0].\n */\n public scrollToTop(): void {\n this.viewportScroller.scrollToPosition([0, 0]);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public checkFormValues(form: { [key: string]: any }): boolean {\n return Object.values(form).some((value) => {\n return Array.isArray(value) ? value.length > 0 : Boolean(value);\n });\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public checkFormArrayValues(forms: { [key: string]: any }[]): boolean {\n return forms.every((form) => this.checkFormValues(form));\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public getFormStatus(form: { [key: string]: any }, providedMessage: string, notProvidedMessage: string): string {\n return this.checkFormValues(form) ? providedMessage : notProvidedMessage;\n }\n\n public getArrayFormStatus(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n forms: { [key: string]: any }[],\n providedMessage: string,\n notProvidedMessage: string,\n ): string {\n return forms.every((form) => this.checkFormValues(form)) ? providedMessage : notProvidedMessage;\n }\n}\n","// SERVICE\nexport * from './utils.service';\n\n// CONSTANTS, INTERFACES, AND MOCKS\n","import { inject } from '@angular/core';\nimport { CanActivateFn, Router } from '@angular/router';\nimport { map, catchError, of } from 'rxjs';\nimport { AuthService } from '../../services';\n\n/**\n * A guard that checks if the user is signed in.\n * If the user is signed in, it redirects to the default route.\n * If the user is not signed in, it allows access to the route.\n * @returns An Observable<boolean> indicating whether the user is signed in or not.\n */\nexport const signedInGuard: CanActivateFn = () => {\n const authService: AuthService = inject(AuthService);\n const router = inject(Router);\n\n return authService.checkAuthenticated().pipe(\n map(() => {\n return router.createUrlTree(['/']);\n }),\n catchError(() => {\n return of(true);\n }),\n );\n};\n","// GUARD\nexport * from './signed-in.guard';\n","import { ActivatedRouteSnapshot, UrlSegment, RouterStateSnapshot, CanActivateFn } from '@angular/router';\nimport { Observable } from 'rxjs';\nimport { GuardReturnType } from '../types';\n\n/**\n * Returns a function that invokes the specified guard with a dummy route and state.\n * The dummy route and state are created using the provided `urlPath`.\n *\n * @param guard - The guard function to be invoked.\n * @param urlPath - The URL path to be used in the dummy route and state.\n * @returns A function that invokes the guard with the dummy route and state.\n */\nexport function getGuardWithDummyUrl(\n guard: CanActivateFn,\n urlPath: string,\n): () => GuardReturnType | Promise<GuardReturnType> | Observable<GuardReturnType> {\n const dummyRoute = new ActivatedRouteSnapshot();\n dummyRoute.url = [new UrlSegment(urlPath, {})];\n const dummyState: RouterStateSnapshot = {\n url: urlPath,\n root: new ActivatedRouteSnapshot(),\n };\n return () => guard(dummyRoute, dummyState);\n}\n","import { Observable } from 'rxjs';\nimport { GuardReturnType } from '../types';\n\n/**\n * Converts an Observable result to a Promise.\n * @param result The Observable result to handle.\n * @returns A Promise that resolves with the value of the Observable.\n */\nexport function handleObservableResult(result: Observable<GuardReturnType>): Promise<GuardReturnType> {\n return new Promise<GuardReturnType>((resolve) => {\n result.subscribe((value) => {\n resolve(value);\n });\n });\n}\n","import { TestBed } from '@angular/core/testing';\nimport { Observable } from 'rxjs';\nimport { handleObservableResult } from './handle-observable-result';\nimport { GuardReturnType } from '../types/guard-return.type';\n\n/**\n * Runs an authentication guard function within the injection context of TestBed.\n *\n * @param authGuard - The authentication guard function to run.\n * @returns A promise that resolves to a boolean or UrlTree indicating whether the user is authenticated.\n */\nexport async function runAuthGuardWithContext(\n authGuard: () => GuardReturnType | Promise<GuardReturnType> | Observable<GuardReturnType>,\n): Promise<GuardReturnType> {\n const result = TestBed.runInInjectionContext(authGuard);\n const authenticated = result instanceof Observable ? await handleObservableResult(result) : result;\n return authenticated;\n}\n","import { TestBed } from '@angular/core/testing';\nimport { Observable } from 'rxjs';\nimport { handleObservableResult } from './handle-observable-result';\nimport { GuardReturnType } from '../types';\n\nexport async function runHasFlowStateGuardWithContext(\n hasFlowStateGuard: () => GuardReturnType | Promise<GuardReturnType> | Observable<GuardReturnType>,\n): Promise<GuardReturnType> {\n const result = TestBed.runInInjectionContext(hasFlowStateGuard);\n const emptyFlow = result instanceof Observable ? await handleObservableResult(result) : result;\n return emptyFlow;\n}\n","// GUARDS\nexport * from './auth';\nexport * from './can-deactivate';\nexport * from './has-flow-state';\nexport * from './route-permissions';\nexport * from './signed-in';\n\n// HELPERS AND TYPES\nexport * from './helpers';\nexport * from './types';\n","import { HttpInterceptorFn } from '@angular/common/http';\nimport { inject } from '@angular/core';\nimport { catchError, tap, throwError } from 'rxjs';\nimport { AppInsightsService } from '../../services/app-insights/app-insights.service';\nimport { GlobalStore } from '../../stores';\n\nexport const httpErrorInterceptor: HttpInterceptorFn = (req, next) => {\n const globalStore = inject(GlobalStore);\n const appInsightsService = inject(AppInsightsService);\n\n return next(req).pipe(\n tap(() => {\n // Clear the state service on new requests\n globalStore.setError({ error: false, message: '' });\n }),\n catchError((error) => {\n // Ensure ErrorEvent is handled only in browser environments\n const isBrowser = typeof window !== 'undefined';\n const isErrorEvent = isBrowser && typeof ErrorEvent !== 'undefined' && error.error instanceof ErrorEvent;\n\n const errorMessage = isErrorEvent ? `Error: ${error.error.message}` : `Error: ${error.message}`;\n\n globalStore.setError({\n error: true,\n message: errorMessage,\n });\n\n appInsightsService.logException(error);\n\n return throwError(() => error);\n }),\n );\n};\n","import { ChangeDetectionStrategy, Component, inject } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { GovukButtonComponent } from '../../components/govuk';\n\n@Component({\n standalone: true,\n selector: 'opal-lib-access-denied',\n imports: [GovukButtonComponent],\n templateUrl: './access-denied.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AccessDeniedComponent {\n private readonly router = inject(Router);\n\n public handleGoBackButtonClick(): void {\n // For now, test page will act as our 'Dashboard' page\n this.router.navigate(['/']);\n }\n}\n","<div class=\"govuk-grid-row\">\n <div class=\"govuk-grid-column-two-thirds\">\n <h1 class=\"govuk-heading-l\">Access Denied</h1>\n <p class=\"govuk-body\">You do not have the appropriate permissions to access this page.</p>\n <p class=\"govuk-body\">\n <opal-lib-govuk-button\n buttonClasses=\"govuk-button--secondary\"\n buttonId=\"go-back\"\n (buttonClickEvent)=\"handleGoBackButtonClick()\"\n >\n Back to dashboard</opal-lib-govuk-button\n >\n </p>\n </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, EventEmitter, Output } from '@angular/core';\nimport { GovukButtonComponent } from '../../../components/govuk/govuk-button/govuk-button.component';\n\n@Component({\n standalone: true,\n selector: 'opal-lib-sign-in-sso',\n imports: [CommonModule, GovukButtonComponent],\n templateUrl: './sign-in-sso.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SignInSsoComponent {\n @Output() private readonly signInButtonClick = new EventEmitter();\n\n /**\n * Handles the button click event.\n * Emits the `signInButtonClick` event.\n */\n public handleButtonClick(): void {\n this.signInButtonClick.emit();\n }\n}\n","<div class=\"govuk-grid-column-two-thirds\">\n <h1 class=\"govuk-heading-m\">Sign in</h1>\n <p class=\"govuk-body\">Please sign in to continue using the application</p>\n\n <p class=\"govuk-body\">\n <opal-lib-govuk-button buttonId=\"signInButton\" (buttonClickEvent)=\"handleButtonClick()\">\n Sign in</opal-lib-govuk-button\n >\n </p>\n</div>\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, OnInit, inject } from '@angular/core';\nimport { CommonModule, DOCUMENT } from '@angular/common';\nimport { SignInSsoComponent } from './sign-in-sso/sign-in-sso.component';\nimport { SignInStubComponent } from './sign-in-stub/sign-in-stub.component';\nimport { ISignInStubForm } from './interfaces';\nimport { GlobalStore } from '../../stores/global/global.store';\nimport { SSO_ENDPOINTS } from '../../routing/constants/sso-endpoints.constant';\n\n@Component({\n standalone: true,\n selector: 'opal-lib-sign-in',\n imports: [CommonModule, SignInSsoComponent, SignInStubComponent],\n templateUrl: './sign-in.component.html',\n\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SignInComponent implements OnInit {\n public readonly globalStore = inject(GlobalStore);\n public ssoEnabled: boolean | null = true;\n private readonly document = inject(DOCUMENT);\n private readonly changeDetectorRef = inject(ChangeDetectorRef);\n\n /**\n * Handles the login button click event.\n */\n public handleSsoSignInButtonClick(): void {\n this.document.location.href = SSO_ENDPOINTS.login;\n }\n\n /**\n * Handles the submission of the stub sign-in form.\n * Redirects the user to the SSO login page with the provided email.\n * @param formData - The form data containing the email.\n */\n public handleStubSignInFormSubmit(formData: ISignInStubForm): void {\n this.document.location.href = `${SSO_ENDPOINTS.login}?email=${formData.email}`;\n }\n\n ngOnInit(): void {\n // This is to prevent a load flicker when switching between sso/stub sign in\n this.ssoEnabled = this.globalStore.ssoEnabled();\n this.changeDetectorRef.detectChanges();\n }\n}\n","@defer (when !ssoEnabled) {\n <opal-lib-sign-in-stub (signInFormSubmit)=\"handleStubSignInFormSubmit($event)\"></opal-lib-sign-in-stub>\n} @placeholder {\n <opal-lib-sign-in-sso (signInButtonClick)=\"handleSsoSignInButtonClick()\"></opal-lib-sign-in-sso>\n}\n","import { IPagesRoutingPaths } from '../interfaces/routing-paths.interface';\n\nexport const PAGES_ROUTING_TITLES: IPagesRoutingPaths = {\n root: '',\n children: {\n accessDenied: 'Access denied',\n signIn: 'Sign in',\n signInStub: 'Sign in',\n },\n};\n","import { inject } from '@angular/core';\nimport { ResolveFn } from '@angular/router';\nimport { firstValueFrom } from 'rxjs';\nimport { ISessionUserState } from '../../services/session-service/interfaces/session-user-state.interface';\nimport { SessionService } from '../../services/session-service/session.service';\n\n/**\n * Resolver function for retrieving the user state.\n * @returns A promise that resolves to the user state.\n */\nexport const userStateResolver: ResolveFn<ISessionUserState> = async () => {\n // Weirdly angular suggests using async/await - https://angular.dev/api/router/ResolveFn?tab=usage-notes\n return await firstValueFrom(inject(SessionService).getUserState());\n};\n","import { Injectable } from '@angular/core';\nimport { Resolve, ActivatedRouteSnapshot } from '@angular/router';\nimport { Title } from '@angular/platform-browser';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class TitleResolver implements Resolve<void> {\n constructor(private readonly titleService: Title) {}\n\n resolve(route: ActivatedRouteSnapshot): void {\n const title = route.data['title'] ?? 'Frontend';\n this.titleService.setTitle(`OPAL - ${title}`);\n }\n}\n","import { Routes } from '@angular/router';\nimport { PAGES_ROUTING_TITLES } from './constants/routing-titles.constant';\nimport { PAGES_ROUTING_PATHS } from './constants/routing-paths.constant';\nimport { authGuard } from '../../guards';\nimport { userStateResolver } from '../../resolvers/user-state/user-state.resolver';\nimport { TitleResolver } from '../../resolvers/title/title.resolver';\nimport { signedInGuard } from '../../guards/signed-in/signed-in.guard';\n\nexport const routing: Routes = [\n { path: '', redirectTo: 'dashboard', pathMatch: 'full' },\n {\n path: PAGES_ROUTING_PATHS.children.accessDenied,\n loadComponent: () => import('../access-denied/access-denied.component').then((c) => c.AccessDeniedComponent),\n canActivate: [authGuard],\n data: { title: PAGES_ROUTING_TITLES.children.accessDenied },\n resolve: { userState: userStateResolver, title: TitleResolver },\n },\n {\n path: PAGES_ROUTING_PATHS.children.signIn,\n loadComponent: () => import('../sign-in/sign-in.component').then((c) => c.SignInComponent),\n canActivate: [signedInGuard],\n data: { title: PAGES_ROUTING_TITLES.children.signIn },\n resolve: { title: TitleResolver },\n },\n];\n","import { ValidatorFn, AbstractControl } from '@angular/forms';\n\nexport function alphabeticalTextValidator(): ValidatorFn {\n return (control: AbstractControl): { [key: string]: unknown } | null => {\n const value = control.value;\n if (value && !/^[a-zA-Z0-9'()*_., -]*$/.test(value)) {\n return { alphabeticalTextPattern: { value: value } };\n }\n return null;\n };\n}\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\n\nexport function amountValidator(maxIntegers: number, maxDecimals: number): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n if (control.value === null || control.value === undefined || control.value === '') {\n return null;\n }\n\n // Ensure the value is numerical, allowing only digits and optionally one decimal point\n if (isNaN(control.value)) {\n return { invalidAmountValue: true };\n }\n\n // Regex to match numbers with the specified integer and decimal places\n const regex = new RegExp(`^-?(0|[1-9]\\\\d{0,${maxIntegers - 1}})(\\\\.\\\\d{0,${maxDecimals}})?$`);\n\n return regex.test(control.value) ? null : { invalidAmount: true };\n };\n}\n","import { ValidatorFn, AbstractControl } from '@angular/forms';\n\nexport function dateAfterYearValidator(year: number): ValidatorFn {\n return (control: AbstractControl): { [key: string]: unknown } | null => {\n if (control.value) {\n const yearInput = Number(control.value.split('/')[2]);\n\n if (yearInput <= year) {\n return { invalidYear: { value: control.value } };\n }\n }\n return null;\n };\n}\n","import { ValidatorFn, AbstractControl } from '@angular/forms';\n\nexport function dateBeforeValidator(targetDate: Date | null): ValidatorFn {\n return (control: AbstractControl): { [key: string]: unknown } | null => {\n const inputValue = control.value;\n if (!inputValue || !targetDate) {\n return null;\n }\n\n const [day, month, year] = inputValue.split('/').map(Number);\n const inputDate = new Date(year, month - 1, day);\n\n if (inputDate < targetDate) {\n return { dateNotBefore: { value: inputValue } };\n }\n\n return null;\n };\n}\n","import { ValidatorFn, AbstractControl } from '@angular/forms';\n\nexport function dateOfBirthValidator(): ValidatorFn {\n return (control: AbstractControl): { [key: string]: unknown } | null => {\n const value = control.value;\n if (value) {\n const [day, month, year] = value.split('/').map((part: string) => parseInt(part, 10));\n const date = new Date(year, month - 1, day);\n\n // Check if the date is in the past\n const today = new Date();\n // Set the time of today to the start of the day to avoid time comparison issues\n today.setHours(0, 0, 0, 0);\n\n if (date >= today) {\n return { invalidDateOfBirth: { value: value } };\n }\n }\n return null;\n };\n}\n","import { ValidatorFn, AbstractControl } from '@angular/forms';\n\nexport function futureDateValidator(): ValidatorFn {\n return (control: AbstractControl): { [key: string]: unknown } | null => {\n if (control.value) {\n const [day, month, year] = control.value.split('/');\n const date = new Date(Date.parse(`${month}/${day}/${year}`));\n\n // Check if the date is in the future\n const today = new Date();\n\n if (date >= today) {\n return { invalidFutureDate: { value: control.value } };\n }\n }\n return null;\n };\n}\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\n\nexport function invalidValueValidator(invalidValues: string[]): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n if (control.value === null || control.value === undefined || control.value === '') {\n return null;\n }\n\n return invalidValues.some((value) => value === control.value) ? { valueInArray: true } : null;\n };\n}\n","import { ValidatorFn, AbstractControl } from '@angular/forms';\n\nexport function nationalInsuranceNumberValidator(): ValidatorFn {\n return (control: AbstractControl): { [key: string]: unknown } | null => {\n const value = control.value;\n if (value) {\n // Remove all spaces and convert to uppercase for uniformity\n const cleanedValue = value.replace(/\\s+/g, '').toUpperCase();\n\n // Check if the cleaned value has exactly 9 characters and matches the National Insurance number format\n const ninoRegex = /^[A-Z]{2}\\d{6}[A-D]$/;\n if (cleanedValue.length !== 9 || !ninoRegex.test(cleanedValue)) {\n return { nationalInsuranceNumberPattern: { value: value } };\n }\n }\n return null;\n };\n}\n","import { ValidatorFn, AbstractControl } from '@angular/forms';\n\nexport function numericalTextValidator(): ValidatorFn {\n return (control: AbstractControl): { [key: string]: unknown } | null => {\n const value = control.value;\n if (value && !/^\\d*$/.test(value)) {\n return { numericalTextPattern: { value: value } };\n }\n return null;\n };\n}\n","import { ValidatorFn, AbstractControl, Validators } from '@angular/forms';\n\nexport function optionalMaxLengthValidator(maxLength: number): ValidatorFn {\n return (control: AbstractControl): { [key: string]: unknown } | null => {\n if (control.value) {\n return Validators.maxLength(maxLength)(control);\n }\n return null;\n };\n}\n","import { ValidatorFn, AbstractControl } from '@angular/forms';\n\nexport function optionalValidDateValidator(): ValidatorFn {\n return (control: AbstractControl): { [key: string]: unknown } | null => {\n const value = control.value;\n if (value) {\n // Check if the value matches the format dd/MM/yyyy\n const dateRegex = /^(\\d{2})\\/(\\d{2})\\/(\\d{4})$/;\n const match = value.match(dateRegex);\n\n if (!match) {\n return { invalidDateFormat: { value: value } };\n }\n\n const [, day, month, year] = match;\n\n // Check if the date is valid\n const date = new Date(`${year}-${month}-${day}`);\n if (\n date.getDate() !== parseInt(day, 10) ||\n date.getMonth() + 1 !== parseInt(month, 10) ||\n date.getFullYear() !== parseInt(year, 10)\n ) {\n return { invalidDate: { value: value } };\n }\n }\n return null;\n };\n}\n","import { ValidatorFn, AbstractControl } from '@angular/forms';\n\nexport function optionalEmailAddressValidator(): ValidatorFn {\n const emailPattern = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$/;\n return (control: AbstractControl): { [key: string]: unknown } | null => {\n if (control.value) {\n const valid = emailPattern.test(control.value);\n return valid ? null : { emailPattern: { value: control.value } };\n }\n return null;\n };\n}\n","import { ValidatorFn, AbstractControl } from '@angular/forms';\n\nexport function optionalPhoneNumberValidator(): ValidatorFn {\n const numericPattern = /^[\\d\\s]*$/;\n return (control: AbstractControl): { [key: string]: unknown } | null => {\n if (control.value) {\n const valueWithoutSpaces = control.value.replace(/\\s+/g, '');\n const isValidPattern = numericPattern.test(control.value);\n const isValidLength = valueWithoutSpaces.length === 11;\n const valid = isValidPattern && isValidLength;\n return valid ? null : { phoneNumberPattern: { value: control.value } };\n }\n return null;\n };\n}\n","import { ValidatorFn, AbstractControl, ValidationErrors } from '@angular/forms';\nimport { DateService } from '../../services/date-service/date.service';\n\n/**\n * Validates whether a date, constructed from provided form controls for day, month and year\n * is at least 18 years in the past.\n *\n * @param dayControl - Name of the control for the day portion of the date\n * @param monthControl - Name of the control for the month portion of the date\n * @param yearControl - Name of the control for the year portion of the date\n * @param dateService - An instance of DateService\n * @returns Validator function that returns null if the date is valid and the age is 18 years older,\n * or an error object within { underEighteen: true } if under 18.\n */\nexport const overEighteenValidator = (\n dayControl: string,\n monthControl: string,\n yearControl: string,\n dateService: DateService,\n): ValidatorFn => {\n return (group: AbstractControl): ValidationErrors | null => {\n const day = group.get(dayControl);\n const month = group.get(monthControl);\n const year = group.get(yearControl);\n\n // Return if controls are not defined or values are not provided\n if (!day || !month || !year || !day.value || !month.value || !year.value) {\n return null;\n }\n\n // Format day and month to ensure two digits\n const formattedDay = day.value.toString().padStart(2, '0');\n const formattedMonth = month.value.toString().padStart(2, '0');\n const formattedYear = year.value.toString();\n\n // Create the date string in the format dd/MM/yyyy\n const dateValue = `${formattedDay}/${formattedMonth}/${formattedYear}`;\n const inputDate = dateService.getFromFormat(dateValue, 'dd/MM/yyyy');\n\n if (inputDate.isValid) {\n // Verify if the entered date is at least 18 years in the past\n const underEighteen = inputDate.diffNow('years').years > -18;\n\n if (underEighteen) {\n year.setErrors({ underEighteen: true });\n return { underEighteen: true };\n } else {\n year.setErrors(null);\n return null;\n }\n } else {\n return null;\n }\n };\n};\n","import { ValidatorFn, AbstractControl } from '@angular/forms';\n\nexport function pastDateValidator(): ValidatorFn {\n const today = new Date();\n today.setHours(0, 0, 0, 0); // Set time to start of the day to avoid time comparison issues\n\n return (control: AbstractControl): { [key: string]: unknown } | null => {\n if (control.value) {\n const [day, month, year] = control.value.split('/');\n const date = new Date(Date.parse(`${month}/${day}/${year}`));\n\n // Check if the date is in the past\n if (date < today) {\n return { invalidPastDate: { value: control.value } };\n }\n }\n return null;\n };\n}\n","import { ValidatorFn, AbstractControl } from '@angular/forms';\n\nexport function specialCharactersValidator(): ValidatorFn {\n const specialCharactersPattern = /\\*/;\n return (control: AbstractControl): { [key: string]: unknown } | null => {\n if (control.value) {\n const hasSpecialCharacters = specialCharactersPattern.test(control.value);\n return hasSpecialCharacters ? { specialCharactersPattern: { value: control.value } } : null;\n }\n return null;\n };\n}\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\n\nexport function twoDecimalPlacesValidator(): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n const value = control.value;\n\n if (!value) {\n return null; // No validation if empty\n }\n\n // Check if the value is a valid number with up to 2 decimal places\n const decimalRegex = /^\\d+(\\.\\d{0,2})?$/;\n\n return decimalRegex.test(value) ? null : { invalidDecimal: true };\n };\n}\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\n\nexport function validValueValidator(validValues: string[]): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n if (control.value === null || control.value === undefined || control.value === '') {\n return null;\n }\n\n return validValues.some((value) => value === control.value) ? null : { valueNotInArray: true };\n };\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1"],"mappings":"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"}
package/index.d.ts ADDED
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ /// <amd-module name="@hmcts/opal-frontend-common" />
5
+ export * from './public-api';
@@ -0,0 +1,14 @@
1
+ import { EventEmitter } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export declare class GovukButtonComponent {
4
+ buttonId: string;
5
+ type: string;
6
+ buttonClasses: string;
7
+ buttonClickEvent: EventEmitter<boolean>;
8
+ /**
9
+ * Handles the button click event.
10
+ */
11
+ handleButtonClick(): void;
12
+ static ɵfac: i0.ɵɵFactoryDeclaration<GovukButtonComponent, never>;
13
+ static ɵcmp: i0.ɵɵComponentDeclaration<GovukButtonComponent, "opal-lib-govuk-button", never, { "buttonId": { "alias": "buttonId"; "required": true; }; "type": { "alias": "type"; "required": false; }; "buttonClasses": { "alias": "buttonClasses"; "required": false; }; }, { "buttonClickEvent": "buttonClickEvent"; }, never, ["*"], true, never>;
14
+ }
@@ -0,0 +1,17 @@
1
+ import { AbstractControl, FormControl } from '@angular/forms';
2
+ import * as i0 from "@angular/core";
3
+ export declare class GovukTextInputComponent {
4
+ private _control;
5
+ labelText: string;
6
+ labelClasses: string;
7
+ inputId: string;
8
+ inputName: string;
9
+ inputClasses: string;
10
+ hintText: string;
11
+ hintHtml: boolean;
12
+ errors: string | null;
13
+ set control(abstractControl: AbstractControl | null);
14
+ get getControl(): FormControl<any>;
15
+ static ɵfac: i0.ɵɵFactoryDeclaration<GovukTextInputComponent, never>;
16
+ static ɵcmp: i0.ɵɵComponentDeclaration<GovukTextInputComponent, "opal-lib-govuk-text-input", never, { "labelText": { "alias": "labelText"; "required": true; }; "labelClasses": { "alias": "labelClasses"; "required": false; }; "inputId": { "alias": "inputId"; "required": true; }; "inputName": { "alias": "inputName"; "required": true; }; "inputClasses": { "alias": "inputClasses"; "required": false; }; "hintText": { "alias": "hintText"; "required": false; }; "hintHtml": { "alias": "hintHtml"; "required": false; }; "errors": { "alias": "errors"; "required": false; }; "control": { "alias": "control"; "required": true; }; }, {}, never, ["*"], true, never>;
17
+ }
@@ -0,0 +1,2 @@
1
+ export * from './govuk-text-input/govuk-text-input.component';
2
+ export * from './govuk-button/govuk-button.component';
@@ -0,0 +1,6 @@
1
+ import { CanActivateFn } from '@angular/router';
2
+ /**
3
+ * A guard that checks if the user is authenticated before allowing access to a route.
4
+ * @returns An Observable that emits a boolean value indicating whether the user is authenticated.
5
+ */
6
+ export declare const authGuard: CanActivateFn;
@@ -0,0 +1 @@
1
+ export * from './auth.guard';
@@ -0,0 +1,3 @@
1
+ import { CanDeactivateFn } from '@angular/router';
2
+ import { ICanDeactivateCanComponentDeactivate } from './interfaces';
3
+ export declare const canDeactivateGuard: CanDeactivateFn<ICanDeactivateCanComponentDeactivate>;
@@ -0,0 +1,2 @@
1
+ export * from './can-deactivate.guard';
2
+ export * from './interfaces';
@@ -0,0 +1,4 @@
1
+ import { CanDeactivateTypes } from '../../types/can-deactivate.type';
2
+ export interface ICanDeactivateCanComponentDeactivate {
3
+ canDeactivate: () => CanDeactivateTypes;
4
+ }
@@ -0,0 +1,2 @@
1
+ import { ICanDeactivateCanComponentDeactivate } from './can-deactivate-can-component-deactivate.interface';
2
+ export type { ICanDeactivateCanComponentDeactivate };
@@ -0,0 +1,2 @@
1
+ import { CanActivateFn } from '@angular/router';
2
+ export declare function hasFlowStateGuard<T>(getState: () => T, checkCondition: (state: T) => boolean, getNavigationPath: () => string): CanActivateFn;
@@ -0,0 +1 @@
1
+ export * from './has-flow-state.guard';
@@ -0,0 +1,12 @@
1
+ import { CanActivateFn } from '@angular/router';
2
+ import { Observable } from 'rxjs';
3
+ import { GuardReturnType } from '../types';
4
+ /**
5
+ * Returns a function that invokes the specified guard with a dummy route and state.
6
+ * The dummy route and state are created using the provided `urlPath`.
7
+ *
8
+ * @param guard - The guard function to be invoked.
9
+ * @param urlPath - The URL path to be used in the dummy route and state.
10
+ * @returns A function that invokes the guard with the dummy route and state.
11
+ */
12
+ export declare function getGuardWithDummyUrl(guard: CanActivateFn, urlPath: string): () => GuardReturnType | Promise<GuardReturnType> | Observable<GuardReturnType>;
@@ -0,0 +1,8 @@
1
+ import { Observable } from 'rxjs';
2
+ import { GuardReturnType } from '../types';
3
+ /**
4
+ * Converts an Observable result to a Promise.
5
+ * @param result The Observable result to handle.
6
+ * @returns A Promise that resolves with the value of the Observable.
7
+ */
8
+ export declare function handleObservableResult(result: Observable<GuardReturnType>): Promise<GuardReturnType>;
@@ -0,0 +1,4 @@
1
+ export * from './get-guard-with-dummy-url';
2
+ export * from './handle-observable-result';
3
+ export * from './run-auth-guard-with-context';
4
+ export * from './run-has-flow-state-guard-with-context';
@@ -0,0 +1,9 @@
1
+ import { Observable } from 'rxjs';
2
+ import { GuardReturnType } from '../types/guard-return.type';
3
+ /**
4
+ * Runs an authentication guard function within the injection context of TestBed.
5
+ *
6
+ * @param authGuard - The authentication guard function to run.
7
+ * @returns A promise that resolves to a boolean or UrlTree indicating whether the user is authenticated.
8
+ */
9
+ export declare function runAuthGuardWithContext(authGuard: () => GuardReturnType | Promise<GuardReturnType> | Observable<GuardReturnType>): Promise<GuardReturnType>;
@@ -0,0 +1,3 @@
1
+ import { Observable } from 'rxjs';
2
+ import { GuardReturnType } from '../types';
3
+ export declare function runHasFlowStateGuardWithContext(hasFlowStateGuard: () => GuardReturnType | Promise<GuardReturnType> | Observable<GuardReturnType>): Promise<GuardReturnType>;
@@ -0,0 +1,7 @@
1
+ export * from './auth';
2
+ export * from './can-deactivate';
3
+ export * from './has-flow-state';
4
+ export * from './route-permissions';
5
+ export * from './signed-in';
6
+ export * from './helpers';
7
+ export * from './types';
@@ -0,0 +1 @@
1
+ export * from './route-permissions.guard';
@@ -0,0 +1,2 @@
1
+ import { CanActivateFn } from '@angular/router';
2
+ export declare const routePermissionsGuard: CanActivateFn;
@@ -0,0 +1 @@
1
+ export * from './signed-in.guard';
@@ -0,0 +1,8 @@
1
+ import { CanActivateFn } from '@angular/router';
2
+ /**
3
+ * A guard that checks if the user is signed in.
4
+ * If the user is signed in, it redirects to the default route.
5
+ * If the user is not signed in, it allows access to the route.
6
+ * @returns An Observable<boolean> indicating whether the user is signed in or not.
7
+ */
8
+ export declare const signedInGuard: CanActivateFn;
@@ -0,0 +1,3 @@
1
+ import { UrlTree } from '@angular/router';
2
+ import { Observable } from 'rxjs';
3
+ export type CanDeactivateTypes = Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree;
@@ -0,0 +1,2 @@
1
+ import { UrlTree, RedirectCommand } from '@angular/router';
2
+ export type GuardReturnType = boolean | UrlTree | RedirectCommand;
@@ -0,0 +1,2 @@
1
+ export * from './can-deactivate.type';
2
+ export * from './guard-return.type';
@@ -0,0 +1,2 @@
1
+ import { HttpInterceptorFn } from '@angular/common/http';
2
+ export declare const httpErrorInterceptor: HttpInterceptorFn;
@@ -0,0 +1,2 @@
1
+ import { httpErrorInterceptor } from './http-error/http-error.interceptor';
2
+ export { httpErrorInterceptor };
@@ -0,0 +1,14 @@
1
+ import { GovukButtonComponent } from './components/govuk/govuk-button/govuk-button.component';
2
+ import { GovukTextInputComponent } from './components/govuk/govuk-text-input/govuk-text-input.component';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "./components/govuk/govuk-button/govuk-button.component";
5
+ import * as i2 from "./components/govuk/govuk-text-input/govuk-text-input.component";
6
+ import * as i3 from "@angular/common";
7
+ import * as i4 from "@angular/forms";
8
+ import * as i5 from "@angular/router";
9
+ export declare const GOV_UI_COMPONENTS: (typeof GovukButtonComponent | typeof GovukTextInputComponent)[];
10
+ export declare class OpalFrontendCommonModule {
11
+ static ɵfac: i0.ɵɵFactoryDeclaration<OpalFrontendCommonModule, never>;
12
+ static ɵmod: i0.ɵɵNgModuleDeclaration<OpalFrontendCommonModule, never, [typeof i1.GovukButtonComponent, typeof i2.GovukTextInputComponent, typeof i3.CommonModule, typeof i4.FormsModule, typeof i4.ReactiveFormsModule, typeof i5.RouterModule], [typeof i1.GovukButtonComponent, typeof i2.GovukTextInputComponent]>;
13
+ static ɵinj: i0.ɵɵInjectorDeclaration<OpalFrontendCommonModule>;
14
+ }
@@ -0,0 +1,7 @@
1
+ import * as i0 from "@angular/core";
2
+ export declare class AccessDeniedComponent {
3
+ private readonly router;
4
+ handleGoBackButtonClick(): void;
5
+ static ɵfac: i0.ɵɵFactoryDeclaration<AccessDeniedComponent, never>;
6
+ static ɵcmp: i0.ɵɵComponentDeclaration<AccessDeniedComponent, "opal-lib-access-denied", never, {}, {}, never, never, true, never>;
7
+ }
@@ -0,0 +1,3 @@
1
+ export * from './access-denied/access-denied.component';
2
+ export * from './sign-in/sign-in.component';
3
+ export * from './routing/pages.routes';
@@ -0,0 +1,2 @@
1
+ import { IPagesRoutingPaths } from '../interfaces/routing-paths.interface';
2
+ export declare const PAGES_ROUTING_PATHS: IPagesRoutingPaths;
@@ -0,0 +1,2 @@
1
+ import { IPagesRoutingPaths } from '../interfaces/routing-paths.interface';
2
+ export declare const PAGES_ROUTING_TITLES: IPagesRoutingPaths;
@@ -0,0 +1,8 @@
1
+ import { IChildRoutingPaths } from '../../../routing';
2
+ export interface IPagesRoutingPaths extends IChildRoutingPaths {
3
+ children: {
4
+ accessDenied: string;
5
+ signIn: string;
6
+ signInStub: string;
7
+ };
8
+ }
@@ -0,0 +1,2 @@
1
+ import { Routes } from '@angular/router';
2
+ export declare const routing: Routes;
@@ -0,0 +1,2 @@
1
+ import { ISignInStubForm } from './sign-in-stub-form.interface';
2
+ export type { ISignInStubForm };
@@ -0,0 +1,3 @@
1
+ export interface ISignInStubForm {
2
+ email: string;
3
+ }
@@ -0,0 +1,11 @@
1
+ import * as i0 from "@angular/core";
2
+ export declare class SignInSsoComponent {
3
+ private readonly signInButtonClick;
4
+ /**
5
+ * Handles the button click event.
6
+ * Emits the `signInButtonClick` event.
7
+ */
8
+ handleButtonClick(): void;
9
+ static ɵfac: i0.ɵɵFactoryDeclaration<SignInSsoComponent, never>;
10
+ static ɵcmp: i0.ɵɵComponentDeclaration<SignInSsoComponent, "opal-lib-sign-in-sso", never, {}, { "signInButtonClick": "signInButtonClick"; }, never, never, true, never>;
11
+ }