@hmcts/opal-frontend-common 0.0.89 → 0.0.91
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.
- package/fesm2022/{hmcts-opal-frontend-common-access-denied.component-DNNxndx-.mjs → hmcts-opal-frontend-common-access-denied.component-BCLRLZqh.mjs} +4 -4
- package/fesm2022/{hmcts-opal-frontend-common-account-created.component-3MER1dhS.mjs → hmcts-opal-frontend-common-account-created.component-D0g9FjWl.mjs} +4 -4
- package/fesm2022/hmcts-opal-frontend-common-components-abstract-abstract-account-summary-base.mjs +3 -3
- package/fesm2022/hmcts-opal-frontend-common-components-abstract-abstract-creditor-details-base.mjs +3 -3
- package/fesm2022/hmcts-opal-frontend-common-components-abstract-abstract-form-alias-base.mjs +3 -3
- package/fesm2022/hmcts-opal-frontend-common-components-abstract-abstract-form-array-base.mjs +3 -3
- package/fesm2022/hmcts-opal-frontend-common-components-abstract-abstract-form-array-removal-base.mjs +3 -3
- package/fesm2022/hmcts-opal-frontend-common-components-abstract-abstract-form-base.mjs +3 -3
- package/fesm2022/hmcts-opal-frontend-common-components-abstract-abstract-nested-form-base.mjs +3 -3
- package/fesm2022/hmcts-opal-frontend-common-components-abstract-abstract-sortable-table-pagination.mjs +3 -3
- package/fesm2022/hmcts-opal-frontend-common-components-abstract-abstract-sortable-table.mjs +3 -3
- package/fesm2022/hmcts-opal-frontend-common-components-abstract-abstract-table-filter.mjs +3 -3
- package/fesm2022/hmcts-opal-frontend-common-components-alphagov-alphagov-accessible-autocomplete.mjs +3 -3
- package/fesm2022/hmcts-opal-frontend-common-components-custom-custom-account-information-custom-account-information-item-custom-account-information-item-label.mjs +3 -3
- package/fesm2022/hmcts-opal-frontend-common-components-custom-custom-account-information-custom-account-information-item-custom-account-information-item-value.mjs +3 -3
- package/fesm2022/hmcts-opal-frontend-common-components-custom-custom-account-information-custom-account-information-item.mjs +3 -3
- package/fesm2022/hmcts-opal-frontend-common-components-custom-custom-account-information.mjs +3 -3
- package/fesm2022/hmcts-opal-frontend-common-components-custom-custom-action-links.mjs +3 -3
- package/fesm2022/hmcts-opal-frontend-common-components-custom-custom-horizontal-scroll-pane.mjs +3 -3
- package/fesm2022/hmcts-opal-frontend-common-components-custom-custom-page-header.mjs +3 -3
- package/fesm2022/hmcts-opal-frontend-common-components-custom-custom-scrollable-panes-custom-scrollable-panes-inner-pane.mjs +3 -3
- package/fesm2022/hmcts-opal-frontend-common-components-custom-custom-scrollable-panes.mjs +3 -3
- 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
- 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
- package/fesm2022/hmcts-opal-frontend-common-components-custom-custom-summary-metric-bar-custom-summary-metric-bar-item.mjs +3 -3
- package/fesm2022/hmcts-opal-frontend-common-components-custom-custom-summary-metric-bar.mjs +3 -3
- package/fesm2022/hmcts-opal-frontend-common-components-custom-custom-vertical-scroll-pane-custom-vertical-scroll-pane-inner-pane.mjs +3 -3
- package/fesm2022/hmcts-opal-frontend-common-components-custom-custom-vertical-scroll-pane-custom-vertical-scroll-pane-outer-pane.mjs +3 -3
- package/fesm2022/hmcts-opal-frontend-common-components-custom-custom-vertical-scroll-pane.mjs +3 -3
- package/fesm2022/hmcts-opal-frontend-common-components-govuk-govuk-accordion.mjs +3 -3
- package/fesm2022/hmcts-opal-frontend-common-components-govuk-govuk-back-link.mjs +3 -3
- package/fesm2022/hmcts-opal-frontend-common-components-govuk-govuk-button.mjs +3 -3
- package/fesm2022/hmcts-opal-frontend-common-components-govuk-govuk-cancel-link.mjs +3 -3
- package/fesm2022/hmcts-opal-frontend-common-components-govuk-govuk-checkboxes.mjs +12 -12
- package/fesm2022/hmcts-opal-frontend-common-components-govuk-govuk-date-input.mjs +3 -3
- package/fesm2022/hmcts-opal-frontend-common-components-govuk-govuk-details.mjs +3 -3
- package/fesm2022/hmcts-opal-frontend-common-components-govuk-govuk-error-summary.mjs +3 -3
- package/fesm2022/hmcts-opal-frontend-common-components-govuk-govuk-footer.mjs +3 -3
- package/fesm2022/hmcts-opal-frontend-common-components-govuk-govuk-header.mjs +6 -6
- package/fesm2022/hmcts-opal-frontend-common-components-govuk-govuk-heading-with-caption.mjs +3 -3
- package/fesm2022/hmcts-opal-frontend-common-components-govuk-govuk-inset-text.mjs +3 -3
- package/fesm2022/hmcts-opal-frontend-common-components-govuk-govuk-list-govuk-list-link.mjs +3 -3
- package/fesm2022/hmcts-opal-frontend-common-components-govuk-govuk-list.mjs +3 -3
- package/fesm2022/hmcts-opal-frontend-common-components-govuk-govuk-notification-banner.mjs +3 -3
- package/fesm2022/hmcts-opal-frontend-common-components-govuk-govuk-pagination.mjs +3 -3
- package/fesm2022/hmcts-opal-frontend-common-components-govuk-govuk-panel.mjs +3 -3
- package/fesm2022/hmcts-opal-frontend-common-components-govuk-govuk-radio.mjs +12 -12
- package/fesm2022/hmcts-opal-frontend-common-components-govuk-govuk-select.mjs +3 -3
- package/fesm2022/hmcts-opal-frontend-common-components-govuk-govuk-summary-card-list.mjs +6 -6
- package/fesm2022/hmcts-opal-frontend-common-components-govuk-govuk-summary-list.mjs +12 -12
- package/fesm2022/hmcts-opal-frontend-common-components-govuk-govuk-table.mjs +12 -12
- package/fesm2022/hmcts-opal-frontend-common-components-govuk-govuk-tabs-govuk-tabs-list-item.mjs +3 -3
- package/fesm2022/hmcts-opal-frontend-common-components-govuk-govuk-tabs-govuk-tabs-panel.mjs +3 -3
- package/fesm2022/hmcts-opal-frontend-common-components-govuk-govuk-tabs.mjs +3 -3
- package/fesm2022/hmcts-opal-frontend-common-components-govuk-govuk-tag.mjs +3 -3
- package/fesm2022/hmcts-opal-frontend-common-components-govuk-govuk-task-list.mjs +6 -6
- package/fesm2022/hmcts-opal-frontend-common-components-govuk-govuk-text-area.mjs +3 -3
- package/fesm2022/hmcts-opal-frontend-common-components-govuk-govuk-text-input-prefix-suffix.mjs +3 -3
- package/fesm2022/hmcts-opal-frontend-common-components-govuk-govuk-text-input.mjs +3 -3
- package/fesm2022/hmcts-opal-frontend-common-components-hod-hod-loading-spinner.mjs +3 -3
- package/fesm2022/hmcts-opal-frontend-common-components-moj-moj-alert.mjs +21 -21
- package/fesm2022/hmcts-opal-frontend-common-components-moj-moj-badge.mjs +3 -3
- package/fesm2022/hmcts-opal-frontend-common-components-moj-moj-button-menu-moj-button-menu-item.mjs +3 -3
- package/fesm2022/hmcts-opal-frontend-common-components-moj-moj-button-menu.mjs +3 -3
- package/fesm2022/hmcts-opal-frontend-common-components-moj-moj-date-picker.mjs +3 -3
- package/fesm2022/hmcts-opal-frontend-common-components-moj-moj-filter-moj-filter-panel-moj-filter-panel-header.mjs +3 -3
- 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
- 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
- package/fesm2022/hmcts-opal-frontend-common-components-moj-moj-filter-moj-filter-panel-moj-filter-panel-option.mjs +3 -3
- 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
- package/fesm2022/hmcts-opal-frontend-common-components-moj-moj-filter-moj-filter-panel-moj-filter-panel-selected.mjs +3 -3
- package/fesm2022/hmcts-opal-frontend-common-components-moj-moj-filter-moj-filter-panel.mjs +3 -3
- package/fesm2022/hmcts-opal-frontend-common-components-moj-moj-filter.mjs +3 -3
- package/fesm2022/hmcts-opal-frontend-common-components-moj-moj-header.mjs +6 -6
- package/fesm2022/hmcts-opal-frontend-common-components-moj-moj-inset-text.mjs +3 -3
- package/fesm2022/hmcts-opal-frontend-common-components-moj-moj-notification-badge.mjs +3 -3
- package/fesm2022/hmcts-opal-frontend-common-components-moj-moj-page-header.mjs +3 -3
- package/fesm2022/hmcts-opal-frontend-common-components-moj-moj-pagination.mjs +3 -3
- package/fesm2022/hmcts-opal-frontend-common-components-moj-moj-primary-navigation.mjs +6 -6
- package/fesm2022/hmcts-opal-frontend-common-components-moj-moj-sortable-table.mjs +18 -18
- package/fesm2022/hmcts-opal-frontend-common-components-moj-moj-sub-navigation.mjs +6 -6
- package/fesm2022/hmcts-opal-frontend-common-components-moj-moj-ticket-panel.mjs +3 -3
- package/fesm2022/hmcts-opal-frontend-common-components-moj-moj-timeline.mjs +6 -6
- package/fesm2022/{hmcts-opal-frontend-common-concurrency-failure.component-UnC_Qex5.mjs → hmcts-opal-frontend-common-concurrency-failure.component-CdkYMvv-.mjs} +4 -4
- package/fesm2022/hmcts-opal-frontend-common-directives-capitalisation.mjs +3 -3
- package/fesm2022/hmcts-opal-frontend-common-directives-govuk-button.mjs +3 -3
- package/fesm2022/hmcts-opal-frontend-common-directives-moj-multi-select.mjs +6 -6
- package/fesm2022/hmcts-opal-frontend-common-interceptors-http-retry-constants.mjs +16 -0
- package/fesm2022/hmcts-opal-frontend-common-interceptors-http-retry-interfaces.mjs +4 -0
- package/fesm2022/hmcts-opal-frontend-common-interceptors-http-retry.mjs +162 -0
- package/fesm2022/{hmcts-opal-frontend-common-internal-server-error.component-Cj-ueGWj.mjs → hmcts-opal-frontend-common-internal-server-error.component-CinCBLVo.mjs} +4 -4
- package/fesm2022/{hmcts-opal-frontend-common-pages-access-denied.component-DNNxndx-.mjs → hmcts-opal-frontend-common-pages-access-denied.component-BCLRLZqh.mjs} +4 -4
- package/fesm2022/{hmcts-opal-frontend-common-pages-account-created.component-3MER1dhS.mjs → hmcts-opal-frontend-common-pages-account-created.component-D0g9FjWl.mjs} +4 -4
- package/fesm2022/{hmcts-opal-frontend-common-pages-concurrency-failure.component-UnC_Qex5.mjs → hmcts-opal-frontend-common-pages-concurrency-failure.component-CdkYMvv-.mjs} +4 -4
- package/fesm2022/hmcts-opal-frontend-common-pages-dashboard-page.mjs +3 -3
- package/fesm2022/{hmcts-opal-frontend-common-pages-internal-server-error.component-Cj-ueGWj.mjs → hmcts-opal-frontend-common-pages-internal-server-error.component-CinCBLVo.mjs} +4 -4
- package/fesm2022/{hmcts-opal-frontend-common-pages-permission-denied.component-ClXrjyA5.mjs → hmcts-opal-frontend-common-pages-permission-denied.component-BPb5CZQD.mjs} +4 -4
- package/fesm2022/{hmcts-opal-frontend-common-pages-sign-in-stub.component-Cxvc5NV2.mjs → hmcts-opal-frontend-common-pages-sign-in-stub.component-Cnlwqv_f.mjs} +4 -4
- package/fesm2022/{hmcts-opal-frontend-common-pages-sign-in.component-dBd0gJTr.mjs → hmcts-opal-frontend-common-pages-sign-in.component-DWLTU9wd.mjs} +4 -4
- package/fesm2022/hmcts-opal-frontend-common-pages.mjs +6 -6
- package/fesm2022/{hmcts-opal-frontend-common-permission-denied.component-ClXrjyA5.mjs → hmcts-opal-frontend-common-permission-denied.component-BPb5CZQD.mjs} +4 -4
- package/fesm2022/hmcts-opal-frontend-common-pipes-date-format.mjs +3 -3
- package/fesm2022/hmcts-opal-frontend-common-pipes-days-ago.mjs +3 -3
- package/fesm2022/hmcts-opal-frontend-common-pipes-monetary.mjs +3 -3
- package/fesm2022/hmcts-opal-frontend-common-pipes-national-insurance.mjs +3 -3
- package/fesm2022/hmcts-opal-frontend-common-resolvers-title.mjs +3 -3
- package/fesm2022/hmcts-opal-frontend-common-services-app-initializer-service.mjs +3 -3
- package/fesm2022/hmcts-opal-frontend-common-services-app-insights-service.mjs +3 -3
- package/fesm2022/hmcts-opal-frontend-common-services-auth-service.mjs +3 -3
- package/fesm2022/hmcts-opal-frontend-common-services-date-service.mjs +3 -3
- package/fesm2022/hmcts-opal-frontend-common-services-history-transformation-service.mjs +3 -3
- package/fesm2022/hmcts-opal-frontend-common-services-launch-darkly-service.mjs +3 -3
- package/fesm2022/hmcts-opal-frontend-common-services-opal-user-service.mjs +119 -10
- package/fesm2022/hmcts-opal-frontend-common-services-permissions-service.mjs +3 -3
- package/fesm2022/hmcts-opal-frontend-common-services-session-service.mjs +3 -3
- package/fesm2022/hmcts-opal-frontend-common-services-sort-service.mjs +3 -3
- package/fesm2022/hmcts-opal-frontend-common-services-transfer-state-service.mjs +3 -3
- package/fesm2022/hmcts-opal-frontend-common-services-transformation-service.mjs +3 -3
- package/fesm2022/hmcts-opal-frontend-common-services-utils-service.mjs +3 -3
- package/fesm2022/{hmcts-opal-frontend-common-sign-in-stub.component-Cxvc5NV2.mjs → hmcts-opal-frontend-common-sign-in-stub.component-Cnlwqv_f.mjs} +4 -4
- package/fesm2022/{hmcts-opal-frontend-common-sign-in.component-jf34_3Vv.mjs → hmcts-opal-frontend-common-sign-in.component-DIZlLA6t.mjs} +4 -4
- package/fesm2022/hmcts-opal-frontend-common.mjs +6 -6
- package/package.json +16 -1
- package/types/hmcts-opal-frontend-common-interceptors-http-retry-constants.d.ts +11 -0
- package/types/hmcts-opal-frontend-common-interceptors-http-retry-interfaces.d.ts +10 -0
- package/types/hmcts-opal-frontend-common-interceptors-http-retry.d.ts +27 -0
- package/types/hmcts-opal-frontend-common-services-opal-user-service.d.ts +56 -4
|
@@ -25,10 +25,10 @@ class SessionService {
|
|
|
25
25
|
}), shareReplay(1));
|
|
26
26
|
return this.tokenExpiryCache$;
|
|
27
27
|
}
|
|
28
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
29
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.
|
|
28
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.18", ngImport: i0, type: SessionService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
29
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.18", ngImport: i0, type: SessionService, providedIn: 'root' });
|
|
30
30
|
}
|
|
31
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
31
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.18", ngImport: i0, type: SessionService, decorators: [{
|
|
32
32
|
type: Injectable,
|
|
33
33
|
args: [{ providedIn: 'root' }]
|
|
34
34
|
}] });
|
|
@@ -79,10 +79,10 @@ class SortService {
|
|
|
79
79
|
arraySortDesc(array) {
|
|
80
80
|
return sort(array).desc();
|
|
81
81
|
}
|
|
82
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
83
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.
|
|
82
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.18", ngImport: i0, type: SortService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
83
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.18", ngImport: i0, type: SortService, providedIn: 'root' });
|
|
84
84
|
}
|
|
85
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
85
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.18", ngImport: i0, type: SortService, decorators: [{
|
|
86
86
|
type: Injectable,
|
|
87
87
|
args: [{
|
|
88
88
|
providedIn: 'root',
|
|
@@ -82,10 +82,10 @@ class TransferStateService {
|
|
|
82
82
|
this.globalStore.setFeatureFlags(featureFlagConfig.releases);
|
|
83
83
|
}
|
|
84
84
|
}
|
|
85
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
86
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.
|
|
85
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.18", ngImport: i0, type: TransferStateService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
86
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.18", ngImport: i0, type: TransferStateService, providedIn: 'root' });
|
|
87
87
|
}
|
|
88
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
88
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.18", ngImport: i0, type: TransferStateService, decorators: [{
|
|
89
89
|
type: Injectable,
|
|
90
90
|
args: [{
|
|
91
91
|
providedIn: 'root',
|
|
@@ -89,10 +89,10 @@ class TransformationService {
|
|
|
89
89
|
}
|
|
90
90
|
return result;
|
|
91
91
|
}
|
|
92
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
93
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.
|
|
92
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.18", ngImport: i0, type: TransformationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
93
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.18", ngImport: i0, type: TransformationService, providedIn: 'root' });
|
|
94
94
|
}
|
|
95
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
95
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.18", ngImport: i0, type: TransformationService, decorators: [{
|
|
96
96
|
type: Injectable,
|
|
97
97
|
args: [{
|
|
98
98
|
providedIn: 'root',
|
|
@@ -153,10 +153,10 @@ class UtilsService {
|
|
|
153
153
|
hasSetProperty(value) {
|
|
154
154
|
return Object.values(value ?? {}).some((v) => (typeof v === 'boolean' ? v === true : v !== null && v !== ''));
|
|
155
155
|
}
|
|
156
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
157
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.
|
|
156
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.18", ngImport: i0, type: UtilsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
157
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.18", ngImport: i0, type: UtilsService, providedIn: 'root' });
|
|
158
158
|
}
|
|
159
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
159
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.18", ngImport: i0, type: UtilsService, decorators: [{
|
|
160
160
|
type: Injectable,
|
|
161
161
|
args: [{
|
|
162
162
|
providedIn: 'root',
|
|
@@ -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.
|
|
32
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.
|
|
31
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.18", ngImport: i0, type: SignInStubComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
32
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.18", 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.
|
|
34
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.18", 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.17", ngImpo
|
|
|
39
39
|
}] } });
|
|
40
40
|
|
|
41
41
|
export { SignInStubComponent };
|
|
42
|
-
//# sourceMappingURL=hmcts-opal-frontend-common-sign-in-stub.component-
|
|
42
|
+
//# sourceMappingURL=hmcts-opal-frontend-common-sign-in-stub.component-Cnlwqv_f.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.
|
|
20
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.
|
|
19
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.18", ngImport: i0, type: SignInComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
20
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.18", 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-Cnlwqv_f.mjs').then(m => m.SignInStubComponent)]] });
|
|
21
21
|
}
|
|
22
|
-
i0.ɵɵngDeclareClassMetadataAsync({ minVersion: "18.0.0", version: "21.2.
|
|
22
|
+
i0.ɵɵngDeclareClassMetadataAsync({ minVersion: "18.0.0", version: "21.2.18", ngImport: i0, type: SignInComponent, resolveDeferredDeps: () => [import('./hmcts-opal-frontend-common-sign-in-stub.component-Cnlwqv_f.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-
|
|
28
|
+
//# sourceMappingURL=hmcts-opal-frontend-common-sign-in.component-DIZlLA6t.mjs.map
|
|
@@ -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-
|
|
38
|
+
loadComponent: () => import('./hmcts-opal-frontend-common-access-denied.component-BCLRLZqh.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-
|
|
45
|
+
loadComponent: () => import('./hmcts-opal-frontend-common-concurrency-failure.component-CdkYMvv-.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-
|
|
51
|
+
loadComponent: () => import('./hmcts-opal-frontend-common-permission-denied.component-BPb5CZQD.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-
|
|
57
|
+
loadComponent: () => import('./hmcts-opal-frontend-common-internal-server-error.component-CinCBLVo.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-
|
|
63
|
+
loadComponent: () => import('./hmcts-opal-frontend-common-sign-in.component-DIZlLA6t.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-
|
|
70
|
+
loadComponent: () => import('./hmcts-opal-frontend-common-account-created.component-D0g9FjWl.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.
|
|
3
|
+
"version": "0.0.91",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -671,6 +671,21 @@
|
|
|
671
671
|
"types": "./types/hmcts-opal-frontend-common-interceptors-http-error-interfaces.d.ts",
|
|
672
672
|
"default": "./fesm2022/hmcts-opal-frontend-common-interceptors-http-error-interfaces.mjs"
|
|
673
673
|
},
|
|
674
|
+
"./interceptors/http-retry": {
|
|
675
|
+
"import": "./fesm2022/hmcts-opal-frontend-common-interceptors-http-retry.mjs",
|
|
676
|
+
"types": "./types/hmcts-opal-frontend-common-interceptors-http-retry.d.ts",
|
|
677
|
+
"default": "./fesm2022/hmcts-opal-frontend-common-interceptors-http-retry.mjs"
|
|
678
|
+
},
|
|
679
|
+
"./interceptors/http-retry/constants": {
|
|
680
|
+
"import": "./fesm2022/hmcts-opal-frontend-common-interceptors-http-retry-constants.mjs",
|
|
681
|
+
"types": "./types/hmcts-opal-frontend-common-interceptors-http-retry-constants.d.ts",
|
|
682
|
+
"default": "./fesm2022/hmcts-opal-frontend-common-interceptors-http-retry-constants.mjs"
|
|
683
|
+
},
|
|
684
|
+
"./interceptors/http-retry/interfaces": {
|
|
685
|
+
"import": "./fesm2022/hmcts-opal-frontend-common-interceptors-http-retry-interfaces.mjs",
|
|
686
|
+
"types": "./types/hmcts-opal-frontend-common-interceptors-http-retry-interfaces.d.ts",
|
|
687
|
+
"default": "./fesm2022/hmcts-opal-frontend-common-interceptors-http-retry-interfaces.mjs"
|
|
688
|
+
},
|
|
674
689
|
"./pages/dashboard-page": {
|
|
675
690
|
"import": "./fesm2022/hmcts-opal-frontend-common-pages-dashboard-page.mjs",
|
|
676
691
|
"types": "./types/hmcts-opal-frontend-common-pages-dashboard-page.d.ts",
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
declare const MAX_HTTP_RETRY_BACKOFF_MULTIPLIER = 10;
|
|
2
|
+
|
|
3
|
+
declare const MAX_HTTP_RETRY_COUNT = 2;
|
|
4
|
+
|
|
5
|
+
declare const MAX_HTTP_RETRY_DELAY_MS = 30000;
|
|
6
|
+
|
|
7
|
+
declare const HTTP_NON_RETRYABLE_STATUS_CODES: readonly number[];
|
|
8
|
+
|
|
9
|
+
declare const HTTP_RETRYABLE_STATUS_CODES: readonly number[];
|
|
10
|
+
|
|
11
|
+
export { HTTP_NON_RETRYABLE_STATUS_CODES, HTTP_RETRYABLE_STATUS_CODES, MAX_HTTP_RETRY_BACKOFF_MULTIPLIER, MAX_HTTP_RETRY_COUNT, MAX_HTTP_RETRY_DELAY_MS };
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
interface IHttpRetryPolicy {
|
|
2
|
+
retryCount: number;
|
|
3
|
+
delayMs: number;
|
|
4
|
+
backoffMultiplier: number;
|
|
5
|
+
maxDelayMs: number;
|
|
6
|
+
retryableStatusCodes: readonly number[];
|
|
7
|
+
}
|
|
8
|
+
type IHttpRetryPolicyOptions = Partial<IHttpRetryPolicy>;
|
|
9
|
+
|
|
10
|
+
export type { IHttpRetryPolicy, IHttpRetryPolicyOptions };
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { HttpInterceptorFn, HttpContext } from '@angular/common/http';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Retries opted-in GET requests when they fail with configured transient HTTP errors.
|
|
5
|
+
*/
|
|
6
|
+
declare const httpRetryInterceptor: HttpInterceptorFn;
|
|
7
|
+
|
|
8
|
+
interface IHttpRetryPolicy {
|
|
9
|
+
retryCount: number;
|
|
10
|
+
delayMs: number;
|
|
11
|
+
backoffMultiplier: number;
|
|
12
|
+
maxDelayMs: number;
|
|
13
|
+
retryableStatusCodes: readonly number[];
|
|
14
|
+
}
|
|
15
|
+
type IHttpRetryPolicyOptions = Partial<IHttpRetryPolicy>;
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Enables HTTP retry for a request by adding the normalized retry policy to its context.
|
|
19
|
+
*/
|
|
20
|
+
declare function withHttpRetry(policy: IHttpRetryPolicyOptions, context?: HttpContext): HttpContext;
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Disables HTTP retry for a request by setting a zero retry count on its context.
|
|
24
|
+
*/
|
|
25
|
+
declare function withoutHttpRetry(context?: HttpContext): HttpContext;
|
|
26
|
+
|
|
27
|
+
export { httpRetryInterceptor, withHttpRetry, withoutHttpRetry };
|
|
@@ -26,28 +26,80 @@ interface IOpalUserState {
|
|
|
26
26
|
declare class OpalUserService {
|
|
27
27
|
private readonly http;
|
|
28
28
|
private readonly globalStore;
|
|
29
|
+
private inFlightUserState$?;
|
|
30
|
+
private userStateRequestGeneration;
|
|
31
|
+
private userStateCacheExpiresAtMilliseconds;
|
|
32
|
+
/**
|
|
33
|
+
* Converts the user-state API status into the service domain status.
|
|
34
|
+
*
|
|
35
|
+
* @param status - The status value returned by the user-state API.
|
|
36
|
+
* @returns The mapped domain status, or null when the API status is null.
|
|
37
|
+
*/
|
|
29
38
|
private toOpalUserStatus;
|
|
39
|
+
/**
|
|
40
|
+
* Gets the configured user-state domain from the global store.
|
|
41
|
+
*
|
|
42
|
+
* @returns The trimmed user-state domain.
|
|
43
|
+
* @throws When no non-blank user-state domain has been configured.
|
|
44
|
+
*/
|
|
30
45
|
private getUserStateDomain;
|
|
31
46
|
/**
|
|
32
47
|
* Maps the Redis-backed user state response into the existing domain-specific user state shape.
|
|
48
|
+
*
|
|
49
|
+
* @param userState - The raw user-state API response.
|
|
50
|
+
* @returns The mapped user state for the configured domain.
|
|
51
|
+
* @throws When the response does not include the configured domain.
|
|
33
52
|
*/
|
|
34
53
|
private toOpalUserState;
|
|
54
|
+
/**
|
|
55
|
+
* Extracts the body from the observed user-state HTTP response.
|
|
56
|
+
*
|
|
57
|
+
* @param response - The full HTTP response from the user-state endpoint.
|
|
58
|
+
* @returns The response body.
|
|
59
|
+
* @throws When the response body is empty.
|
|
60
|
+
*/
|
|
61
|
+
private getUserStateResponseBody;
|
|
62
|
+
/**
|
|
63
|
+
* Checks whether a user state can be used as a cached logged-in user.
|
|
64
|
+
*
|
|
65
|
+
* @param userState - The user state currently held in the global store.
|
|
66
|
+
* @returns True when the user state contains a positive numeric user ID.
|
|
67
|
+
*/
|
|
68
|
+
private isValidCachedUserState;
|
|
69
|
+
/**
|
|
70
|
+
* Gets the current cached user state when it is populated and unexpired.
|
|
71
|
+
*
|
|
72
|
+
* @returns The cached user state, or null when the cache is empty or expired.
|
|
73
|
+
*/
|
|
74
|
+
private getCachedUserState;
|
|
75
|
+
/**
|
|
76
|
+
* Calculates the local cache TTL from the response header and configured maximum TTL.
|
|
77
|
+
*
|
|
78
|
+
* @param response - The full HTTP response from the user-state endpoint.
|
|
79
|
+
* @returns The TTL in milliseconds. A zero response header expires the local cache immediately.
|
|
80
|
+
*/
|
|
81
|
+
private getUserStateCacheTtlMilliseconds;
|
|
82
|
+
/**
|
|
83
|
+
* Invalidates local cache controls and marks existing in-flight requests as stale.
|
|
84
|
+
*/
|
|
85
|
+
private clearLocalUserStateCache;
|
|
35
86
|
/**
|
|
36
87
|
* Retrieves the logged-in user's state as an observable.
|
|
37
88
|
*
|
|
38
|
-
*
|
|
89
|
+
* Uses the global store as a local cache until the effective user-state TTL expires, shares concurrent HTTP
|
|
90
|
+
* requests, and ignores stale responses after the local cache has been invalidated.
|
|
39
91
|
*
|
|
40
92
|
* @returns {Observable<IOpalUserState>} An observable that emits the logged-in user's state.
|
|
41
93
|
*/
|
|
42
94
|
getLoggedInUserState(): Observable<IOpalUserState>;
|
|
43
95
|
/**
|
|
44
|
-
*
|
|
96
|
+
* Clears the global store user state and invalidates local user-state cache controls.
|
|
45
97
|
*
|
|
46
|
-
* Useful for logout
|
|
98
|
+
* Useful for logout and identity switches to avoid reusing stale state or accepting stale in-flight responses.
|
|
47
99
|
*/
|
|
48
100
|
clearUserStateCache(): void;
|
|
49
101
|
/**
|
|
50
|
-
* Fetches the latest user state from the Redis-backed frontend endpoint.
|
|
102
|
+
* Fetches the latest user state from the Redis-backed frontend endpoint, bypassing the current local cache.
|
|
51
103
|
*
|
|
52
104
|
* @returns An Observable that emits the current {@link IOpalUserState}.
|
|
53
105
|
*/
|