@hmcts/opal-frontend-common 0.0.77 → 0.0.79

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 (133) hide show
  1. package/fesm2022/{hmcts-opal-frontend-common-access-denied.component-CChd8kzZ.mjs → hmcts-opal-frontend-common-access-denied.component-D10u8Yxn.mjs} +4 -4
  2. package/fesm2022/{hmcts-opal-frontend-common-account-created.component-DN2aTb9f.mjs → hmcts-opal-frontend-common-account-created.component-DQU0jga1.mjs} +4 -4
  3. package/fesm2022/hmcts-opal-frontend-common-components-abstract-abstract-account-summary-base.mjs +3 -3
  4. package/fesm2022/hmcts-opal-frontend-common-components-abstract-abstract-form-alias-base.mjs +3 -3
  5. package/fesm2022/hmcts-opal-frontend-common-components-abstract-abstract-form-array-base.mjs +3 -3
  6. package/fesm2022/hmcts-opal-frontend-common-components-abstract-abstract-form-array-removal-base.mjs +3 -3
  7. package/fesm2022/hmcts-opal-frontend-common-components-abstract-abstract-form-base.mjs +3 -3
  8. package/fesm2022/hmcts-opal-frontend-common-components-abstract-abstract-nested-form-base.mjs +3 -3
  9. package/fesm2022/hmcts-opal-frontend-common-components-abstract-abstract-sortable-table-pagination.mjs +3 -3
  10. package/fesm2022/hmcts-opal-frontend-common-components-abstract-abstract-sortable-table.mjs +3 -3
  11. package/fesm2022/hmcts-opal-frontend-common-components-abstract-abstract-table-filter.mjs +3 -3
  12. package/fesm2022/hmcts-opal-frontend-common-components-alphagov-alphagov-accessible-autocomplete.mjs +3 -3
  13. package/fesm2022/hmcts-opal-frontend-common-components-custom-custom-account-information-custom-account-information-item-custom-account-information-item-label.mjs +3 -3
  14. package/fesm2022/hmcts-opal-frontend-common-components-custom-custom-account-information-custom-account-information-item-custom-account-information-item-value.mjs +3 -3
  15. package/fesm2022/hmcts-opal-frontend-common-components-custom-custom-account-information-custom-account-information-item.mjs +3 -3
  16. package/fesm2022/hmcts-opal-frontend-common-components-custom-custom-account-information.mjs +3 -3
  17. package/fesm2022/hmcts-opal-frontend-common-components-custom-custom-action-links.mjs +3 -3
  18. package/fesm2022/hmcts-opal-frontend-common-components-custom-custom-horizontal-scroll-pane.mjs +3 -3
  19. package/fesm2022/hmcts-opal-frontend-common-components-custom-custom-page-header.mjs +3 -3
  20. package/fesm2022/hmcts-opal-frontend-common-components-custom-custom-scrollable-panes-custom-scrollable-panes-inner-pane.mjs +3 -3
  21. package/fesm2022/hmcts-opal-frontend-common-components-custom-custom-scrollable-panes.mjs +3 -3
  22. package/fesm2022/hmcts-opal-frontend-common-components-custom-custom-summary-metric-bar-custom-summary-metric-bar-item-custom-summary-metric-bar-item-label.mjs +3 -3
  23. package/fesm2022/hmcts-opal-frontend-common-components-custom-custom-summary-metric-bar-custom-summary-metric-bar-item-custom-summary-metric-bar-item-value.mjs +3 -3
  24. package/fesm2022/hmcts-opal-frontend-common-components-custom-custom-summary-metric-bar-custom-summary-metric-bar-item.mjs +3 -3
  25. package/fesm2022/hmcts-opal-frontend-common-components-custom-custom-summary-metric-bar.mjs +3 -3
  26. package/fesm2022/hmcts-opal-frontend-common-components-custom-custom-vertical-scroll-pane-custom-vertical-scroll-pane-inner-pane.mjs +3 -3
  27. package/fesm2022/hmcts-opal-frontend-common-components-custom-custom-vertical-scroll-pane-custom-vertical-scroll-pane-outer-pane.mjs +3 -3
  28. package/fesm2022/hmcts-opal-frontend-common-components-custom-custom-vertical-scroll-pane.mjs +3 -3
  29. package/fesm2022/hmcts-opal-frontend-common-components-govuk-govuk-accordion.mjs +3 -3
  30. package/fesm2022/hmcts-opal-frontend-common-components-govuk-govuk-back-link.mjs +3 -3
  31. package/fesm2022/hmcts-opal-frontend-common-components-govuk-govuk-button.mjs +3 -3
  32. package/fesm2022/hmcts-opal-frontend-common-components-govuk-govuk-cancel-link.mjs +3 -3
  33. package/fesm2022/hmcts-opal-frontend-common-components-govuk-govuk-checkboxes.mjs +12 -12
  34. package/fesm2022/hmcts-opal-frontend-common-components-govuk-govuk-date-input.mjs +3 -3
  35. package/fesm2022/hmcts-opal-frontend-common-components-govuk-govuk-details.mjs +3 -3
  36. package/fesm2022/hmcts-opal-frontend-common-components-govuk-govuk-error-summary.mjs +3 -3
  37. package/fesm2022/hmcts-opal-frontend-common-components-govuk-govuk-footer.mjs +3 -3
  38. package/fesm2022/hmcts-opal-frontend-common-components-govuk-govuk-header.mjs +6 -6
  39. package/fesm2022/hmcts-opal-frontend-common-components-govuk-govuk-heading-with-caption.mjs +3 -3
  40. package/fesm2022/hmcts-opal-frontend-common-components-govuk-govuk-inset-text.mjs +3 -3
  41. package/fesm2022/hmcts-opal-frontend-common-components-govuk-govuk-list-govuk-list-link.mjs +3 -3
  42. package/fesm2022/hmcts-opal-frontend-common-components-govuk-govuk-list.mjs +3 -3
  43. package/fesm2022/hmcts-opal-frontend-common-components-govuk-govuk-notification-banner.mjs +3 -3
  44. package/fesm2022/hmcts-opal-frontend-common-components-govuk-govuk-pagination.mjs +3 -3
  45. package/fesm2022/hmcts-opal-frontend-common-components-govuk-govuk-panel.mjs +3 -3
  46. package/fesm2022/hmcts-opal-frontend-common-components-govuk-govuk-radio.mjs +12 -13
  47. package/fesm2022/hmcts-opal-frontend-common-components-govuk-govuk-select.mjs +3 -3
  48. package/fesm2022/hmcts-opal-frontend-common-components-govuk-govuk-summary-card-list.mjs +6 -6
  49. package/fesm2022/hmcts-opal-frontend-common-components-govuk-govuk-summary-list.mjs +12 -12
  50. package/fesm2022/hmcts-opal-frontend-common-components-govuk-govuk-table.mjs +12 -12
  51. package/fesm2022/hmcts-opal-frontend-common-components-govuk-govuk-tabs-govuk-tabs-list-item.mjs +3 -3
  52. package/fesm2022/hmcts-opal-frontend-common-components-govuk-govuk-tabs-govuk-tabs-panel.mjs +3 -3
  53. package/fesm2022/hmcts-opal-frontend-common-components-govuk-govuk-tabs.mjs +3 -3
  54. package/fesm2022/hmcts-opal-frontend-common-components-govuk-govuk-tag.mjs +3 -3
  55. package/fesm2022/hmcts-opal-frontend-common-components-govuk-govuk-task-list.mjs +6 -6
  56. package/fesm2022/hmcts-opal-frontend-common-components-govuk-govuk-text-area.mjs +3 -3
  57. package/fesm2022/hmcts-opal-frontend-common-components-govuk-govuk-text-input-prefix-suffix.mjs +3 -3
  58. package/fesm2022/hmcts-opal-frontend-common-components-govuk-govuk-text-input.mjs +3 -3
  59. package/fesm2022/hmcts-opal-frontend-common-components-hod-hod-loading-spinner.mjs +3 -3
  60. package/fesm2022/hmcts-opal-frontend-common-components-moj-moj-alert.mjs +21 -21
  61. package/fesm2022/hmcts-opal-frontend-common-components-moj-moj-badge.mjs +3 -3
  62. package/fesm2022/hmcts-opal-frontend-common-components-moj-moj-button-menu-moj-button-menu-item.mjs +3 -3
  63. package/fesm2022/hmcts-opal-frontend-common-components-moj-moj-button-menu.mjs +3 -3
  64. package/fesm2022/hmcts-opal-frontend-common-components-moj-moj-date-picker.mjs +3 -3
  65. package/fesm2022/hmcts-opal-frontend-common-components-moj-moj-filter-moj-filter-panel-moj-filter-panel-header.mjs +3 -3
  66. package/fesm2022/hmcts-opal-frontend-common-components-moj-moj-filter-moj-filter-panel-moj-filter-panel-option-moj-filter-panel-option-form-group-item.mjs +3 -3
  67. package/fesm2022/hmcts-opal-frontend-common-components-moj-moj-filter-moj-filter-panel-moj-filter-panel-option-moj-filter-panel-option-form-group-keyword.mjs +3 -3
  68. package/fesm2022/hmcts-opal-frontend-common-components-moj-moj-filter-moj-filter-panel-moj-filter-panel-option.mjs +3 -3
  69. package/fesm2022/hmcts-opal-frontend-common-components-moj-moj-filter-moj-filter-panel-moj-filter-panel-selected-moj-filter-panel-selected-tag.mjs +3 -3
  70. package/fesm2022/hmcts-opal-frontend-common-components-moj-moj-filter-moj-filter-panel-moj-filter-panel-selected.mjs +3 -3
  71. package/fesm2022/hmcts-opal-frontend-common-components-moj-moj-filter-moj-filter-panel.mjs +3 -3
  72. package/fesm2022/hmcts-opal-frontend-common-components-moj-moj-filter.mjs +3 -3
  73. package/fesm2022/hmcts-opal-frontend-common-components-moj-moj-header.mjs +6 -6
  74. package/fesm2022/hmcts-opal-frontend-common-components-moj-moj-inset-text.mjs +3 -3
  75. package/fesm2022/hmcts-opal-frontend-common-components-moj-moj-notification-badge.mjs +3 -3
  76. package/fesm2022/hmcts-opal-frontend-common-components-moj-moj-page-header.mjs +3 -3
  77. package/fesm2022/hmcts-opal-frontend-common-components-moj-moj-pagination.mjs +3 -3
  78. package/fesm2022/hmcts-opal-frontend-common-components-moj-moj-primary-navigation.mjs +6 -6
  79. package/fesm2022/hmcts-opal-frontend-common-components-moj-moj-sortable-table.mjs +18 -18
  80. package/fesm2022/hmcts-opal-frontend-common-components-moj-moj-sub-navigation.mjs +6 -6
  81. package/fesm2022/hmcts-opal-frontend-common-components-moj-moj-ticket-panel.mjs +3 -3
  82. package/fesm2022/hmcts-opal-frontend-common-components-moj-moj-timeline.mjs +6 -6
  83. package/fesm2022/{hmcts-opal-frontend-common-concurrency-failure.component-DhifLL93.mjs → hmcts-opal-frontend-common-concurrency-failure.component-BTFiOH79.mjs} +4 -4
  84. package/fesm2022/hmcts-opal-frontend-common-directives-capitalisation.mjs +3 -3
  85. package/fesm2022/hmcts-opal-frontend-common-directives-govuk-button.mjs +3 -3
  86. package/fesm2022/hmcts-opal-frontend-common-directives-moj-multi-select.mjs +6 -6
  87. package/fesm2022/hmcts-opal-frontend-common-guards-feature-flag.mjs +29 -1
  88. package/fesm2022/hmcts-opal-frontend-common-guards-helpers.mjs +7 -2
  89. package/fesm2022/{hmcts-opal-frontend-common-internal-server-error.component-BuniqC-e.mjs → hmcts-opal-frontend-common-internal-server-error.component-QMKEdjwU.mjs} +4 -4
  90. package/fesm2022/{hmcts-opal-frontend-common-pages-access-denied.component-CChd8kzZ.mjs → hmcts-opal-frontend-common-pages-access-denied.component-D10u8Yxn.mjs} +4 -4
  91. package/fesm2022/{hmcts-opal-frontend-common-pages-account-created.component-DN2aTb9f.mjs → hmcts-opal-frontend-common-pages-account-created.component-DQU0jga1.mjs} +4 -4
  92. package/fesm2022/{hmcts-opal-frontend-common-pages-concurrency-failure.component-DhifLL93.mjs → hmcts-opal-frontend-common-pages-concurrency-failure.component-BTFiOH79.mjs} +4 -4
  93. package/fesm2022/hmcts-opal-frontend-common-pages-dashboard-page.mjs +3 -3
  94. package/fesm2022/{hmcts-opal-frontend-common-pages-internal-server-error.component-BuniqC-e.mjs → hmcts-opal-frontend-common-pages-internal-server-error.component-QMKEdjwU.mjs} +4 -4
  95. package/fesm2022/{hmcts-opal-frontend-common-pages-permission-denied.component-fpUG1mFg.mjs → hmcts-opal-frontend-common-pages-permission-denied.component-BmHHWIe-.mjs} +4 -4
  96. package/fesm2022/{hmcts-opal-frontend-common-pages-sign-in-stub.component-DBsFS4i2.mjs → hmcts-opal-frontend-common-pages-sign-in-stub.component-DI08HYGy.mjs} +4 -4
  97. package/fesm2022/{hmcts-opal-frontend-common-pages-sign-in.component-DhoGKpA3.mjs → hmcts-opal-frontend-common-pages-sign-in.component-BtuyIR0b.mjs} +4 -4
  98. package/fesm2022/hmcts-opal-frontend-common-pages.mjs +6 -6
  99. package/fesm2022/{hmcts-opal-frontend-common-permission-denied.component-fpUG1mFg.mjs → hmcts-opal-frontend-common-permission-denied.component-BmHHWIe-.mjs} +4 -4
  100. package/fesm2022/hmcts-opal-frontend-common-pipes-date-format.mjs +3 -3
  101. package/fesm2022/hmcts-opal-frontend-common-pipes-days-ago.mjs +3 -3
  102. package/fesm2022/hmcts-opal-frontend-common-pipes-monetary.mjs +3 -3
  103. package/fesm2022/hmcts-opal-frontend-common-pipes-national-insurance.mjs +3 -3
  104. package/fesm2022/hmcts-opal-frontend-common-resolvers-title.mjs +3 -3
  105. package/fesm2022/hmcts-opal-frontend-common-services-app-initializer-service.mjs +10 -3
  106. package/fesm2022/hmcts-opal-frontend-common-services-app-insights-service.mjs +3 -3
  107. package/fesm2022/hmcts-opal-frontend-common-services-auth-service.mjs +3 -3
  108. package/fesm2022/hmcts-opal-frontend-common-services-date-service.mjs +3 -3
  109. package/fesm2022/hmcts-opal-frontend-common-services-launch-darkly-service.mjs +3 -3
  110. package/fesm2022/hmcts-opal-frontend-common-services-opal-user-service.mjs +45 -65
  111. package/fesm2022/hmcts-opal-frontend-common-services-permissions-service.mjs +9 -11
  112. package/fesm2022/hmcts-opal-frontend-common-services-session-service.mjs +3 -3
  113. package/fesm2022/hmcts-opal-frontend-common-services-sort-service.mjs +3 -3
  114. package/fesm2022/hmcts-opal-frontend-common-services-transfer-state-service-mocks.mjs +1 -0
  115. package/fesm2022/hmcts-opal-frontend-common-services-transfer-state-service.mjs +16 -3
  116. package/fesm2022/hmcts-opal-frontend-common-services-transformation-service.mjs +3 -3
  117. package/fesm2022/hmcts-opal-frontend-common-services-utils-service.mjs +3 -3
  118. package/fesm2022/{hmcts-opal-frontend-common-sign-in-stub.component-DBsFS4i2.mjs → hmcts-opal-frontend-common-sign-in-stub.component-DI08HYGy.mjs} +4 -4
  119. package/fesm2022/{hmcts-opal-frontend-common-sign-in.component-CT_zC3jZ.mjs → hmcts-opal-frontend-common-sign-in.component-Cs5OrpHh.mjs} +4 -4
  120. package/fesm2022/hmcts-opal-frontend-common-stores-global.mjs +4 -0
  121. package/fesm2022/hmcts-opal-frontend-common.mjs +6 -6
  122. package/package.json +1 -1
  123. package/types/hmcts-opal-frontend-common-components-abstract-abstract-account-summary-base.d.ts +3 -0
  124. package/types/hmcts-opal-frontend-common-guards-feature-flag.d.ts +21 -2
  125. package/types/hmcts-opal-frontend-common-guards-helpers.d.ts +7 -2
  126. package/types/hmcts-opal-frontend-common-pages-dashboard-page.d.ts +3 -0
  127. package/types/hmcts-opal-frontend-common-services-app-initializer-service.d.ts +4 -0
  128. package/types/hmcts-opal-frontend-common-services-opal-user-service-interfaces.d.ts +19 -2
  129. package/types/hmcts-opal-frontend-common-services-opal-user-service.d.ts +10 -20
  130. package/types/hmcts-opal-frontend-common-services-permissions-service.d.ts +0 -2
  131. package/types/hmcts-opal-frontend-common-services-transfer-state-service-interfaces.d.ts +1 -0
  132. package/types/hmcts-opal-frontend-common-services-transfer-state-service.d.ts +4 -0
  133. package/types/hmcts-opal-frontend-common-stores-global.d.ts +3 -0
@@ -28,10 +28,10 @@ class SignInStubComponent {
28
28
  ngOnInit() {
29
29
  this.setupSignInForm();
30
30
  }
31
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: SignInStubComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
32
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.13", type: SignInStubComponent, isStandalone: true, selector: "opal-lib-sign-in-stub", outputs: { signInFormSubmit: "signInFormSubmit" }, ngImport: i0, template: "<form (submit)=\"handleFormSubmit()\">\n <div class=\"govuk-grid-column-two-thirds\">\n <fieldset class=\"govuk-fieldset\">\n <legend class=\"govuk-fieldset__legend govuk-fieldset__legend--m\">\n <h1 class=\"govuk-fieldset__heading\">Sign in</h1>\n </legend>\n\n <div [formGroup]=\"signInForm\">\n <opal-lib-govuk-text-input\n labelText=\"Email\"\n inputId=\"email\"\n inputName=\"email\"\n inputClasses=\"govuk-!-width-one-half\"\n [control]=\"signInForm.controls['email']\"\n ></opal-lib-govuk-text-input>\n </div>\n </fieldset>\n <div class=\"govuk-grid-row\">\n <div class=\"govuk-grid-column-one-third\">\n <opal-lib-govuk-button buttonId=\"submitForm\" type=\"submit\"> Sign in</opal-lib-govuk-button>\n </div>\n </div>\n </div>\n</form>\n", dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.NgForm, selector: "form:not([ngNoForm]):not([formGroup]):not([formArray]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: GovukTextInputComponent, selector: "opal-lib-govuk-text-input", inputs: ["labelText", "labelClasses", "inputId", "inputName", "inputClasses", "hintText", "hintHtml", "errors", "control"] }, { kind: "component", type: GovukButtonComponent, selector: "opal-lib-govuk-button", inputs: ["buttonId", "type", "buttonClasses"], outputs: ["buttonClickEvent"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
31
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: SignInStubComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
32
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.14", type: SignInStubComponent, isStandalone: true, selector: "opal-lib-sign-in-stub", outputs: { signInFormSubmit: "signInFormSubmit" }, ngImport: i0, template: "<form (submit)=\"handleFormSubmit()\">\n <div class=\"govuk-grid-column-two-thirds\">\n <fieldset class=\"govuk-fieldset\">\n <legend class=\"govuk-fieldset__legend govuk-fieldset__legend--m\">\n <h1 class=\"govuk-fieldset__heading\">Sign in</h1>\n </legend>\n\n <div [formGroup]=\"signInForm\">\n <opal-lib-govuk-text-input\n labelText=\"Email\"\n inputId=\"email\"\n inputName=\"email\"\n inputClasses=\"govuk-!-width-one-half\"\n [control]=\"signInForm.controls['email']\"\n ></opal-lib-govuk-text-input>\n </div>\n </fieldset>\n <div class=\"govuk-grid-row\">\n <div class=\"govuk-grid-column-one-third\">\n <opal-lib-govuk-button buttonId=\"submitForm\" type=\"submit\"> Sign in</opal-lib-govuk-button>\n </div>\n </div>\n </div>\n</form>\n", dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.NgForm, selector: "form:not([ngNoForm]):not([formGroup]):not([formArray]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: GovukTextInputComponent, selector: "opal-lib-govuk-text-input", inputs: ["labelText", "labelClasses", "inputId", "inputName", "inputClasses", "hintText", "hintHtml", "errors", "control"] }, { kind: "component", type: GovukButtonComponent, selector: "opal-lib-govuk-button", inputs: ["buttonId", "type", "buttonClasses"], outputs: ["buttonClickEvent"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
33
33
  }
34
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: SignInStubComponent, decorators: [{
34
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: SignInStubComponent, decorators: [{
35
35
  type: Component,
36
36
  args: [{ selector: 'opal-lib-sign-in-stub', imports: [FormsModule, ReactiveFormsModule, GovukTextInputComponent, GovukButtonComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<form (submit)=\"handleFormSubmit()\">\n <div class=\"govuk-grid-column-two-thirds\">\n <fieldset class=\"govuk-fieldset\">\n <legend class=\"govuk-fieldset__legend govuk-fieldset__legend--m\">\n <h1 class=\"govuk-fieldset__heading\">Sign in</h1>\n </legend>\n\n <div [formGroup]=\"signInForm\">\n <opal-lib-govuk-text-input\n labelText=\"Email\"\n inputId=\"email\"\n inputName=\"email\"\n inputClasses=\"govuk-!-width-one-half\"\n [control]=\"signInForm.controls['email']\"\n ></opal-lib-govuk-text-input>\n </div>\n </fieldset>\n <div class=\"govuk-grid-row\">\n <div class=\"govuk-grid-column-one-third\">\n <opal-lib-govuk-button buttonId=\"submitForm\" type=\"submit\"> Sign in</opal-lib-govuk-button>\n </div>\n </div>\n </div>\n</form>\n" }]
37
37
  }], propDecorators: { signInFormSubmit: [{
@@ -39,4 +39,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.13", ngImpo
39
39
  }] } });
40
40
 
41
41
  export { SignInStubComponent };
42
- //# sourceMappingURL=hmcts-opal-frontend-common-sign-in-stub.component-DBsFS4i2.mjs.map
42
+ //# sourceMappingURL=hmcts-opal-frontend-common-sign-in-stub.component-DI08HYGy.mjs.map
@@ -16,13 +16,13 @@ class SignInComponent {
16
16
  handleStubSignInFormSubmit(formData) {
17
17
  this.document.location.href = `${SSO_ENDPOINTS.login}?email=${formData.email}`;
18
18
  }
19
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: SignInComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
20
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.13", type: SignInComponent, isStandalone: true, selector: "opal-lib-sign-in", ngImport: i0, template: "@defer (when !globalStore.ssoEnabled()) {\n <opal-lib-sign-in-stub (signInFormSubmit)=\"handleStubSignInFormSubmit($event)\"></opal-lib-sign-in-stub>\n}\n", changeDetection: i0.ChangeDetectionStrategy.OnPush, deferBlockDependencies: [() => [import('./hmcts-opal-frontend-common-sign-in-stub.component-DBsFS4i2.mjs').then(m => m.SignInStubComponent)]] });
19
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: SignInComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
20
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.14", type: SignInComponent, isStandalone: true, selector: "opal-lib-sign-in", ngImport: i0, template: "@defer (when !globalStore.ssoEnabled()) {\n <opal-lib-sign-in-stub (signInFormSubmit)=\"handleStubSignInFormSubmit($event)\"></opal-lib-sign-in-stub>\n}\n", changeDetection: i0.ChangeDetectionStrategy.OnPush, deferBlockDependencies: [() => [import('./hmcts-opal-frontend-common-sign-in-stub.component-DI08HYGy.mjs').then(m => m.SignInStubComponent)]] });
21
21
  }
22
- i0.ɵɵngDeclareClassMetadataAsync({ minVersion: "18.0.0", version: "21.2.13", ngImport: i0, type: SignInComponent, resolveDeferredDeps: () => [import('./hmcts-opal-frontend-common-sign-in-stub.component-DBsFS4i2.mjs').then(m => m.SignInStubComponent)], resolveMetadata: SignInStubComponent => ({ decorators: [{
22
+ i0.ɵɵngDeclareClassMetadataAsync({ minVersion: "18.0.0", version: "21.2.14", ngImport: i0, type: SignInComponent, resolveDeferredDeps: () => [import('./hmcts-opal-frontend-common-sign-in-stub.component-DI08HYGy.mjs').then(m => m.SignInStubComponent)], resolveMetadata: SignInStubComponent => ({ decorators: [{
23
23
  type: Component,
24
24
  args: [{ selector: 'opal-lib-sign-in', imports: [SignInStubComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "@defer (when !globalStore.ssoEnabled()) {\n <opal-lib-sign-in-stub (signInFormSubmit)=\"handleStubSignInFormSubmit($event)\"></opal-lib-sign-in-stub>\n}\n" }]
25
25
  }], ctorParameters: null, propDecorators: null }) });
26
26
 
27
27
  export { SignInComponent };
28
- //# sourceMappingURL=hmcts-opal-frontend-common-sign-in.component-CT_zC3jZ.mjs.map
28
+ //# sourceMappingURL=hmcts-opal-frontend-common-sign-in.component-Cs5OrpHh.mjs.map
@@ -11,6 +11,7 @@ const GlobalStore = signalStore({ providedIn: 'root' }, withState(() => ({
11
11
  appInsightsConfig: {},
12
12
  tokenExpiry: {},
13
13
  userStateCacheExpirationMilliseconds: 1800000,
14
+ userStateDomain: undefined,
14
15
  })), withMethods((store) => ({
15
16
  setAuthenticated: (authenticated) => {
16
17
  patchState(store, { authenticated });
@@ -42,6 +43,9 @@ const GlobalStore = signalStore({ providedIn: 'root' }, withState(() => ({
42
43
  setUserStateCacheExpirationMilliseconds: (milliseconds) => {
43
44
  patchState(store, { userStateCacheExpirationMilliseconds: milliseconds });
44
45
  },
46
+ setUserStateDomain: (domain) => {
47
+ patchState(store, { userStateDomain: domain });
48
+ },
45
49
  })));
46
50
 
47
51
  /**
@@ -35,39 +35,39 @@ const routing = [
35
35
  { path: '', redirectTo: 'dashboard', pathMatch: 'full' },
36
36
  {
37
37
  path: PAGES_ROUTING_PATHS.children.accessDenied,
38
- loadComponent: () => import('./hmcts-opal-frontend-common-access-denied.component-CChd8kzZ.mjs').then((c) => c.AccessDeniedComponent),
38
+ loadComponent: () => import('./hmcts-opal-frontend-common-access-denied.component-D10u8Yxn.mjs').then((c) => c.AccessDeniedComponent),
39
39
  canActivate: [authGuard, accountGuard],
40
40
  data: { title: PAGES_ROUTING_TITLES.children.accessDenied },
41
41
  resolve: { title: TitleResolver },
42
42
  },
43
43
  {
44
44
  path: PAGES_ROUTING_PATHS.children.concurrencyFailure,
45
- loadComponent: () => import('./hmcts-opal-frontend-common-concurrency-failure.component-DhifLL93.mjs').then((c) => c.ConcurrencyFailureComponent),
45
+ loadComponent: () => import('./hmcts-opal-frontend-common-concurrency-failure.component-BTFiOH79.mjs').then((c) => c.ConcurrencyFailureComponent),
46
46
  data: { title: PAGES_ROUTING_TITLES.children.concurrencyFailure },
47
47
  resolve: { title: TitleResolver },
48
48
  },
49
49
  {
50
50
  path: PAGES_ROUTING_PATHS.children.permissionDenied,
51
- loadComponent: () => import('./hmcts-opal-frontend-common-permission-denied.component-fpUG1mFg.mjs').then((c) => c.PermissionDeniedComponent),
51
+ loadComponent: () => import('./hmcts-opal-frontend-common-permission-denied.component-BmHHWIe-.mjs').then((c) => c.PermissionDeniedComponent),
52
52
  data: { title: PAGES_ROUTING_TITLES.children.permissionDenied },
53
53
  resolve: { title: TitleResolver },
54
54
  },
55
55
  {
56
56
  path: PAGES_ROUTING_PATHS.children.internalServerError,
57
- loadComponent: () => import('./hmcts-opal-frontend-common-internal-server-error.component-BuniqC-e.mjs').then((c) => c.InternalServerErrorComponent),
57
+ loadComponent: () => import('./hmcts-opal-frontend-common-internal-server-error.component-QMKEdjwU.mjs').then((c) => c.InternalServerErrorComponent),
58
58
  data: { title: PAGES_ROUTING_TITLES.children.internalServerError },
59
59
  resolve: { title: TitleResolver },
60
60
  },
61
61
  {
62
62
  path: PAGES_ROUTING_PATHS.children.signIn,
63
- loadComponent: () => import('./hmcts-opal-frontend-common-sign-in.component-CT_zC3jZ.mjs').then((c) => c.SignInComponent),
63
+ loadComponent: () => import('./hmcts-opal-frontend-common-sign-in.component-Cs5OrpHh.mjs').then((c) => c.SignInComponent),
64
64
  canActivate: [signedInGuard],
65
65
  data: { title: PAGES_ROUTING_TITLES.children.signIn },
66
66
  resolve: { title: TitleResolver },
67
67
  },
68
68
  {
69
69
  path: PAGES_ROUTING_PATHS.children.accountCreated,
70
- loadComponent: () => import('./hmcts-opal-frontend-common-account-created.component-DN2aTb9f.mjs').then((c) => c.AccountCreated),
70
+ loadComponent: () => import('./hmcts-opal-frontend-common-account-created.component-DQU0jga1.mjs').then((c) => c.AccountCreated),
71
71
  canActivate: [authGuard],
72
72
  data: { title: PAGES_ROUTING_TITLES.children.accountCreated },
73
73
  resolve: { title: TitleResolver },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hmcts/opal-frontend-common",
3
- "version": "0.0.77",
3
+ "version": "0.0.79",
4
4
  "license": "MIT",
5
5
  "repository": {
6
6
  "type": "git",
@@ -31,6 +31,7 @@ declare abstract class AbstractAccountSummaryBaseComponent<THeader, TTab extends
31
31
  appInsightsConfig: _ngrx_signals.DeepSignal<_hmcts_opal_frontend_common_services_transfer_state_service_interfaces.ITransferStateAppInsightsConfig>;
32
32
  tokenExpiry: _ngrx_signals.DeepSignal<_hmcts_opal_frontend_common_services_session_service_interfaces.ISessionTokenExpiry>;
33
33
  userStateCacheExpirationMilliseconds: _angular_core.Signal<number>;
34
+ userStateDomain: _angular_core.Signal<string | undefined>;
34
35
  setAuthenticated: (authenticated: boolean) => void;
35
36
  setBannerError: (error: _hmcts_opal_frontend_common_stores_global_interfaces.IGlobalErrorState) => void;
36
37
  resetBannerError: () => void;
@@ -41,6 +42,7 @@ declare abstract class AbstractAccountSummaryBaseComponent<THeader, TTab extends
41
42
  setAppInsightsConfig: (config: _hmcts_opal_frontend_common_services_transfer_state_service_interfaces.ITransferStateAppInsightsConfig) => void;
42
43
  setTokenExpiry: (tokenExpiry: _hmcts_opal_frontend_common_services_session_service_interfaces.ISessionTokenExpiry) => void;
43
44
  setUserStateCacheExpirationMilliseconds: (milliseconds: number) => void;
45
+ setUserStateDomain: (domain: string) => void;
44
46
  } & _ngrx_signals.StateSource<{
45
47
  authenticated: boolean;
46
48
  bannerError: {
@@ -56,6 +58,7 @@ declare abstract class AbstractAccountSummaryBaseComponent<THeader, TTab extends
56
58
  appInsightsConfig: _hmcts_opal_frontend_common_services_transfer_state_service_interfaces.ITransferStateAppInsightsConfig;
57
59
  tokenExpiry: _hmcts_opal_frontend_common_services_session_service_interfaces.ISessionTokenExpiry;
58
60
  userStateCacheExpirationMilliseconds: number;
61
+ userStateDomain: string | undefined;
59
62
  }>;
60
63
  protected readonly userState: _hmcts_opal_frontend_common_services_opal_user_service_interfaces.IOpalUserState;
61
64
  accountData: THeader;
@@ -1,5 +1,15 @@
1
- import { CanActivateFn } from '@angular/router';
1
+ import { CanActivateFn, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';
2
2
 
3
+ /**
4
+ * Resolves a feature flag route guard to a boolean result.
5
+ *
6
+ * @param flagKey - The key of the feature flag to check
7
+ * @param route - The activated route snapshot passed to the guard
8
+ * @param state - The router state snapshot passed to the guard
9
+ * @returns A boolean that is true only when the feature flag guard allows access
10
+ *
11
+ */
12
+ declare const resolveFeatureFlagGuard: (flagKey: string, route: ActivatedRouteSnapshot, state: RouterStateSnapshot) => Promise<boolean>;
3
13
  /**
4
14
  * Creates a route guard that checks if a specific feature flag is enabled before allowing access.
5
15
  *
@@ -8,5 +18,14 @@ import { CanActivateFn } from '@angular/router';
8
18
  *
9
19
  */
10
20
  declare function featureFlagGuard(flagKey: string): CanActivateFn;
21
+ /**
22
+ * Creates a route guard that redirects when a specific feature flag is not enabled.
23
+ *
24
+ * @param flagKey - The key of the feature flag to check
25
+ * @param redirectPath - The path to redirect to when the feature flag is not enabled
26
+ * @returns A CanActivateFn that returns true if the feature flag is enabled, otherwise a UrlTree
27
+ *
28
+ */
29
+ declare function featureFlagRedirectGuard(flagKey: string, redirectPath?: string): CanActivateFn;
11
30
 
12
- export { featureFlagGuard };
31
+ export { featureFlagGuard, featureFlagRedirectGuard, resolveFeatureFlagGuard };
@@ -1,4 +1,4 @@
1
- import { CanActivateFn } from '@angular/router';
1
+ import { CanActivateFn, MaybeAsync, GuardResult } from '@angular/router';
2
2
  import { Observable } from 'rxjs';
3
3
  import { GuardReturnType } from '@hmcts/opal-frontend-common/guards/types';
4
4
 
@@ -19,6 +19,11 @@ declare function getGuardWithDummyUrl(guard: CanActivateFn, urlPath: string): ()
19
19
  */
20
20
  declare function handleObservableResult(result: Observable<GuardReturnType>): Promise<GuardReturnType>;
21
21
 
22
+ /**
23
+ * Converts any valid Angular guard result into a promise so callers can await the final value consistently.
24
+ */
25
+ declare const resolveGuardResult: (result: MaybeAsync<GuardResult>) => Promise<GuardResult>;
26
+
22
27
  /**
23
28
  * Runs an authentication guard function within the injection context of TestBed.
24
29
  *
@@ -29,4 +34,4 @@ declare function runAuthGuardWithContext(authGuard: () => GuardReturnType | Prom
29
34
 
30
35
  declare function runHasFlowStateGuardWithContext(hasFlowStateGuard: () => GuardReturnType | Promise<GuardReturnType> | Observable<GuardReturnType>): Promise<GuardReturnType>;
31
36
 
32
- export { getGuardWithDummyUrl, handleObservableResult, runAuthGuardWithContext, runHasFlowStateGuardWithContext };
37
+ export { getGuardWithDummyUrl, handleObservableResult, resolveGuardResult, runAuthGuardWithContext, runHasFlowStateGuardWithContext };
@@ -45,6 +45,7 @@ declare class DashboardPage {
45
45
  appInsightsConfig: _ngrx_signals.DeepSignal<_hmcts_opal_frontend_common_services_transfer_state_service_interfaces.ITransferStateAppInsightsConfig>;
46
46
  tokenExpiry: _ngrx_signals.DeepSignal<_hmcts_opal_frontend_common_services_session_service_interfaces.ISessionTokenExpiry>;
47
47
  userStateCacheExpirationMilliseconds: _angular_core.Signal<number>;
48
+ userStateDomain: _angular_core.Signal<string | undefined>;
48
49
  setAuthenticated: (authenticated: boolean) => void;
49
50
  setBannerError: (error: _hmcts_opal_frontend_common_stores_global_interfaces.IGlobalErrorState) => void;
50
51
  resetBannerError: () => void;
@@ -55,6 +56,7 @@ declare class DashboardPage {
55
56
  setAppInsightsConfig: (config: _hmcts_opal_frontend_common_services_transfer_state_service_interfaces.ITransferStateAppInsightsConfig) => void;
56
57
  setTokenExpiry: (tokenExpiry: _hmcts_opal_frontend_common_services_session_service_interfaces.ISessionTokenExpiry) => void;
57
58
  setUserStateCacheExpirationMilliseconds: (milliseconds: number) => void;
59
+ setUserStateDomain: (domain: string) => void;
58
60
  } & _ngrx_signals.StateSource<{
59
61
  authenticated: boolean;
60
62
  bannerError: {
@@ -70,6 +72,7 @@ declare class DashboardPage {
70
72
  appInsightsConfig: _hmcts_opal_frontend_common_services_transfer_state_service_interfaces.ITransferStateAppInsightsConfig;
71
73
  tokenExpiry: _hmcts_opal_frontend_common_services_session_service_interfaces.ISessionTokenExpiry;
72
74
  userStateCacheExpirationMilliseconds: number;
75
+ userStateDomain: string | undefined;
73
76
  }>;
74
77
  dashboardConfig: IDashboardPageConfiguration;
75
78
  /**
@@ -20,6 +20,10 @@ declare class AppInitializerService {
20
20
  * Initializes the user state cache expiration milliseconds.
21
21
  */
22
22
  private initializeUserStateCacheExpirationMilliseconds;
23
+ /**
24
+ * Initializes the user-state domain used for permission lookup.
25
+ */
26
+ private initializeUserStateDomain;
23
27
  /**
24
28
  * Initializes the application.
25
29
  * This method calls the necessary initialization functions.
@@ -9,17 +9,34 @@ interface IOpalUserBusinessUnitUser {
9
9
  permissions: IOpalUserPermissions[];
10
10
  }
11
11
 
12
+ type OpalUserStateStatus = 'active' | 'created' | 'suspended' | 'deactivated';
13
+
12
14
  interface IOpalUserState {
13
15
  user_id: number;
14
16
  username: string;
15
17
  name: string;
16
- status: string | null;
18
+ status: OpalUserStateStatus | null;
17
19
  version: number | null;
18
20
  business_unit_users: IOpalUserBusinessUnitUser[];
19
21
  }
20
22
 
23
+ type OpalUserStateResponseStatus = 'ACTIVE' | 'PENDING' | 'SUSPENDED' | 'DEACTIVATED';
24
+
25
+ interface IOpalUserStateResponseDomain {
26
+ business_unit_users: IOpalUserBusinessUnitUser[];
27
+ }
28
+ interface IOpalUserStateResponse {
29
+ user_id: number;
30
+ username: string;
31
+ name: string;
32
+ status: OpalUserStateResponseStatus | null;
33
+ version: number | null;
34
+ cache_name: string | null;
35
+ domains: Record<string, IOpalUserStateResponseDomain | undefined>;
36
+ }
37
+
21
38
  interface IOpalUserPaths {
22
39
  loggedInUserState: string;
23
40
  }
24
41
 
25
- export type { IOpalUserBusinessUnitUser, IOpalUserPaths, IOpalUserPermissions, IOpalUserState };
42
+ export type { IOpalUserBusinessUnitUser, IOpalUserPaths, IOpalUserPermissions, IOpalUserState, IOpalUserStateResponse, OpalUserStateResponseStatus, OpalUserStateStatus };
@@ -12,11 +12,13 @@ interface IOpalUserBusinessUnitUser {
12
12
  permissions: IOpalUserPermissions[];
13
13
  }
14
14
 
15
+ type OpalUserStateStatus = 'active' | 'created' | 'suspended' | 'deactivated';
16
+
15
17
  interface IOpalUserState {
16
18
  user_id: number;
17
19
  username: string;
18
20
  name: string;
19
- status: string | null;
21
+ status: OpalUserStateStatus | null;
20
22
  version: number | null;
21
23
  business_unit_users: IOpalUserBusinessUnitUser[];
22
24
  }
@@ -24,40 +26,28 @@ interface IOpalUserState {
24
26
  declare class OpalUserService {
25
27
  private readonly http;
26
28
  private readonly globalStore;
27
- private readonly dateService;
28
- private userStateCache;
29
- /**
30
- * Checks if the cached user state has expired.
31
- *
32
- * @returns True if the cache has expired, false otherwise.
33
- */
34
- private isCacheExpired;
35
- /**
36
- * Clears the cached user state.
37
- */
38
- private clearCache;
29
+ private toOpalUserStatus;
30
+ private getUserStateDomain;
39
31
  /**
40
- * Returns cached user state when present, unexpired, and matching the store identity; otherwise null.
32
+ * Maps the Redis-backed user state response into the existing domain-specific user state shape.
41
33
  */
42
- private getCachedUserIfValid;
34
+ private toOpalUserState;
43
35
  /**
44
36
  * Retrieves the logged-in user's state as an observable.
45
37
  *
46
- * This method first checks if the user state is cached and the cache is still valid.
47
- * If so, it returns the cached user state. Otherwise, it fetches the user state
48
- * from the server, updates the cache, and sets the user state in the global store.
38
+ * The frontend user-state endpoint is backed by Redis, so this service does not maintain its own cache.
49
39
  *
50
40
  * @returns {Observable<IOpalUserState>} An observable that emits the logged-in user's state.
51
41
  */
52
42
  getLoggedInUserState(): Observable<IOpalUserState>;
53
43
  /**
54
- * Clears cached user state and resets the global store user to an empty object.
44
+ * Resets the global store user to an empty object.
55
45
  *
56
46
  * Useful for logout/identity switches to avoid reusing stale state.
57
47
  */
58
48
  clearUserStateCache(): void;
59
49
  /**
60
- * Forces a fresh fetch of user state, bypassing the cache.
50
+ * Fetches the latest user state from the Redis-backed frontend endpoint.
61
51
  *
62
52
  * @returns An Observable that emits the current {@link IOpalUserState}.
63
53
  */
@@ -2,10 +2,8 @@ import { IOpalUserState, IOpalUserBusinessUnitUser } from '@hmcts/opal-frontend-
2
2
  import * as i0 from '@angular/core';
3
3
 
4
4
  declare class PermissionsService {
5
- private storedUniquePermissionIds;
6
5
  /**
7
6
  * Retrieves the unique permission IDs associated with the user.
8
- * If the unique permission IDs have not been stored yet, it calculates them based on the user's roles and permissions.
9
7
  * @returns An array of unique permission IDs.
10
8
  */
11
9
  getUniquePermissions(userState: IOpalUserState | null): number[];
@@ -15,6 +15,7 @@ interface ITransferStateServerState {
15
15
  ssoEnabled: boolean;
16
16
  appInsightsConfig: ITransferStateAppInsightsConfig;
17
17
  userStateCacheExpirationMilliseconds: number;
18
+ userStateDomain: string;
18
19
  }
19
20
 
20
21
  export type { ITransferStateAppInsightsConfig, ITransferStateLaunchDarklyConfig, ITransferStateServerState };
@@ -32,6 +32,10 @@ declare class TransferStateService {
32
32
  * calling this method to avoid setting an undefined value.
33
33
  */
34
34
  initializeUserStateCacheExpirationMilliseconds(): void;
35
+ /**
36
+ * Initializes the user-state domain used to select permissions from the domain-scoped user-state response.
37
+ */
38
+ initializeUserStateDomain(): void;
35
39
  static ɵfac: i0.ɵɵFactoryDeclaration<TransferStateService, never>;
36
40
  static ɵprov: i0.ɵɵInjectableDeclaration<TransferStateService>;
37
41
  }
@@ -21,6 +21,7 @@ declare const GlobalStore: _angular_core.Type<{
21
21
  appInsightsConfig: _ngrx_signals.DeepSignal<ITransferStateAppInsightsConfig>;
22
22
  tokenExpiry: _ngrx_signals.DeepSignal<ISessionTokenExpiry>;
23
23
  userStateCacheExpirationMilliseconds: _angular_core.Signal<number>;
24
+ userStateDomain: _angular_core.Signal<string | undefined>;
24
25
  setAuthenticated: (authenticated: boolean) => void;
25
26
  setBannerError: (error: IGlobalErrorState) => void;
26
27
  resetBannerError: () => void;
@@ -31,6 +32,7 @@ declare const GlobalStore: _angular_core.Type<{
31
32
  setAppInsightsConfig: (config: ITransferStateAppInsightsConfig) => void;
32
33
  setTokenExpiry: (tokenExpiry: ISessionTokenExpiry) => void;
33
34
  setUserStateCacheExpirationMilliseconds: (milliseconds: number) => void;
35
+ setUserStateDomain: (domain: string) => void;
34
36
  } & _ngrx_signals.StateSource<{
35
37
  authenticated: boolean;
36
38
  bannerError: {
@@ -46,6 +48,7 @@ declare const GlobalStore: _angular_core.Type<{
46
48
  appInsightsConfig: ITransferStateAppInsightsConfig;
47
49
  tokenExpiry: ISessionTokenExpiry;
48
50
  userStateCacheExpirationMilliseconds: number;
51
+ userStateDomain: string | undefined;
49
52
  }>>;
50
53
 
51
54
  export { GlobalStore };