@dereekb/dbx-firebase 14.1.0 → 14.3.0
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/dereekb-dbx-firebase-oidc.mjs +73 -15
- package/fesm2022/dereekb-dbx-firebase-oidc.mjs.map +1 -1
- package/fesm2022/dereekb-dbx-firebase-style-demo.mjs +1 -1
- package/fesm2022/dereekb-dbx-firebase-style-demo.mjs.map +1 -1
- package/package.json +12 -12
- package/types/dereekb-dbx-firebase-oidc.d.ts +20 -2
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
2
|
import { input, computed, output, Component, inject, Injectable, signal, Service, effect, Directive, viewChild, provideAppInitializer, makeEnvironmentProviders } from '@angular/core';
|
|
3
3
|
import * as i1 from '@dereekb/dbx-web';
|
|
4
|
-
import { DbxBasicLoadingComponent, DbxErrorComponent, DbxButtonComponent, DbxAvatarComponent, DbxButtonSpacerDirective, DbxActionSnackbarErrorDirective, AbstractDbxSelectionListWrapperDirective, DbxListWrapperComponentImportsModule, DEFAULT_LIST_WRAPPER_COMPONENT_CONFIGURATION_TEMPLATE, AbstractDbxSelectionListViewDirective, DbxSelectionValueListViewComponentImportsModule, provideDbxListView, DEFAULT_DBX_SELECTION_VALUE_LIST_COMPONENT_CONFIGURATION_TEMPLATE, AbstractDbxValueListViewItemComponent, DbxContentPitDirective, DbxLinkComponent, provideDbxListViewWrapper, DbxSpacerDirective, DbxActionConfirmDirective, DbxDetailBlockComponent, DbxClickToCopyTextComponent } from '@dereekb/dbx-web';
|
|
4
|
+
import { DbxBasicLoadingComponent, DbxErrorComponent, DbxButtonComponent, DbxTextColorDirective, DbxAvatarComponent, DbxButtonSpacerDirective, DbxActionSnackbarErrorDirective, AbstractDbxSelectionListWrapperDirective, DbxListWrapperComponentImportsModule, DEFAULT_LIST_WRAPPER_COMPONENT_CONFIGURATION_TEMPLATE, AbstractDbxSelectionListViewDirective, DbxSelectionValueListViewComponentImportsModule, provideDbxListView, DEFAULT_DBX_SELECTION_VALUE_LIST_COMPONENT_CONFIGURATION_TEMPLATE, AbstractDbxValueListViewItemComponent, DbxContentPitDirective, DbxLinkComponent, provideDbxListViewWrapper, DbxSpacerDirective, DbxActionConfirmDirective, DbxDetailBlockComponent, DbxClickToCopyTextComponent } from '@dereekb/dbx-web';
|
|
5
5
|
import { readableError, SPACE_STRING_SPLIT_JOIN, separateValues, generatePkceCodeVerifier, generatePkceCodeChallenge } from '@dereekb/util';
|
|
6
6
|
import { DbxInjectionComponent, DbxActionDirective, DbxActionHandlerDirective, DbxActionValueDirective, DbxActionButtonDirective, DBX_INJECTION_COMPONENT_DATA, DbxRouterService, clean, dbxRouteParamReaderInstance, completeOnDestroy, DbxActionEnforceModifiedDirective, DbxAppAuthRouterService } from '@dereekb/dbx-core';
|
|
7
7
|
import { of, map, first, switchMap, tap, BehaviorSubject } from 'rxjs';
|
|
8
8
|
import * as i1$1 from '@dereekb/dbx-form';
|
|
9
9
|
import { dbxForgeListSelectionField, AbstractConfigAsyncForgeFormDirective, DbxForgeFormComponentImportsModule, dbxForgeFormComponentProviders, DBX_FORGE_FORM_COMPONENT_TEMPLATE, DbxActionFormDirective, dbxForgePickableChipField, pickableValueFieldValuesConfigForStaticLabeledValues, dbxForgeValueSelectionField, dbxForgeTextField, dbxForgeSearchableStringChipField, isWebsiteUrlValidator, dbxForgeContainer, DbxFormSourceDirective, DbxFormValueChangeDirective } from '@dereekb/dbx-form';
|
|
10
10
|
import { successResult } from '@dereekb/rxjs';
|
|
11
|
+
import { HttpClient, HttpErrorResponse } from '@angular/common/http';
|
|
11
12
|
import { toSignal } from '@angular/core/rxjs-interop';
|
|
12
13
|
import { DbxFirebaseAuthService, AbstractDbxFirebaseDocumentStore, firebaseDocumentStoreCreateFunction, firebaseDocumentStoreUpdateFunction, firebaseDocumentStoreDeleteFunction, AbstractDbxFirebaseCollectionStore, DbxFirebaseCollectionStoreDirective, provideDbxFirebaseCollectionStoreDirective, DbxFirebaseCollectionListDirective, DbxFirebaseCollectionChangeDirective, DbxFirebaseDocumentStoreDirective, provideDbxFirebaseDocumentStoreDirective } from '@dereekb/dbx-firebase';
|
|
13
|
-
import { HttpClient } from '@angular/common/http';
|
|
14
14
|
import { ALL_OIDC_TOKEN_ENDPOINT_AUTH_METHOD_OPTIONS, PRIVATE_KEY_JWT_TOKEN_ENDPOINT_AUTH_METHOD, OidcModelFunctions, OidcModelFirestoreCollections, OIDC_ENTRY_CLIENT_TYPE, oidcGrantEntriesByUidQuery, PUBLIC_PKCE_TOKEN_ENDPOINT_AUTH_METHOD } from '@dereekb/firebase';
|
|
15
15
|
import { DatePipe, CommonModule } from '@angular/common';
|
|
16
16
|
|
|
@@ -33,6 +33,12 @@ class DbxFirebaseOAuthLoginViewComponent {
|
|
|
33
33
|
...(ngDevMode ? [{ debugName: "loginStateCase" }] : /* istanbul ignore next */ []));
|
|
34
34
|
error = input(/* @ts-ignore */
|
|
35
35
|
...(ngDevMode ? [undefined, { debugName: "error" }] : /* istanbul ignore next */ []));
|
|
36
|
+
/**
|
|
37
|
+
* Copy shown above the projected login UI in the `'no_user'` state — why the user is being asked to sign
|
|
38
|
+
* in when they thought they already were (e.g. the server refused their session's ID token).
|
|
39
|
+
*/
|
|
40
|
+
notice = input(/* @ts-ignore */
|
|
41
|
+
...(ngDevMode ? [undefined, { debugName: "notice" }] : /* istanbul ignore next */ []));
|
|
36
42
|
resolvedErrorSignal = computed(() => {
|
|
37
43
|
const error = this.error();
|
|
38
44
|
return typeof error === 'string' ? readableError('ERROR', error) : error;
|
|
@@ -40,13 +46,16 @@ class DbxFirebaseOAuthLoginViewComponent {
|
|
|
40
46
|
...(ngDevMode ? [{ debugName: "resolvedErrorSignal" }] : /* istanbul ignore next */ []));
|
|
41
47
|
retryClick = output();
|
|
42
48
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: DbxFirebaseOAuthLoginViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
43
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.4", type: DbxFirebaseOAuthLoginViewComponent, isStandalone: true, selector: "dbx-firebase-oauth-login-view", inputs: { loginStateCase: { classPropertyName: "loginStateCase", publicName: "loginStateCase", isSignal: true, isRequired: true, transformFunction: null }, error: { classPropertyName: "error", publicName: "error", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { retryClick: "retryClick" }, host: { classAttribute: "d-block dbx-firebase-oauth-login-view" }, ngImport: i0, template: `
|
|
49
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.4", type: DbxFirebaseOAuthLoginViewComponent, isStandalone: true, selector: "dbx-firebase-oauth-login-view", inputs: { loginStateCase: { classPropertyName: "loginStateCase", publicName: "loginStateCase", isSignal: true, isRequired: true, transformFunction: null }, error: { classPropertyName: "error", publicName: "error", isSignal: true, isRequired: false, transformFunction: null }, notice: { classPropertyName: "notice", publicName: "notice", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { retryClick: "retryClick" }, host: { classAttribute: "d-block dbx-firebase-oauth-login-view" }, ngImport: i0, template: `
|
|
44
50
|
<div class="dbx-firebase-oauth-login-view">
|
|
45
51
|
@switch (loginStateCase()) {
|
|
46
52
|
@case ('unknown') {
|
|
47
53
|
<dbx-basic-loading [loading]="true"></dbx-basic-loading>
|
|
48
54
|
}
|
|
49
55
|
@case ('no_user') {
|
|
56
|
+
@if (notice(); as notice) {
|
|
57
|
+
<p class="dbx-firebase-oauth-login-view-notice" role="alert" [dbxTextColor]="'warn'">{{ notice }}</p>
|
|
58
|
+
}
|
|
50
59
|
<ng-content></ng-content>
|
|
51
60
|
}
|
|
52
61
|
@case ('user') {
|
|
@@ -61,13 +70,13 @@ class DbxFirebaseOAuthLoginViewComponent {
|
|
|
61
70
|
}
|
|
62
71
|
}
|
|
63
72
|
</div>
|
|
64
|
-
`, isInline: true, dependencies: [{ kind: "component", type: DbxBasicLoadingComponent, selector: "dbx-basic-loading", inputs: ["diameter", "mode", "text", "linear", "show", "loading", "error"] }, { kind: "component", type: DbxErrorComponent, selector: "dbx-error", inputs: ["error", "iconOnly"], outputs: ["popoverOpened"] }, { kind: "component", type: DbxButtonComponent, selector: "dbx-button", inputs: ["bar", "type", "buttonStyle", "color", "spinnerColor", "customTextColor", "customSpinnerColor", "basic", "tonal", "raised", "stroked", "flat", "iconOnly", "fab", "customContent", "allowClickPropagation", "mode"] }] });
|
|
73
|
+
`, isInline: true, dependencies: [{ kind: "component", type: DbxBasicLoadingComponent, selector: "dbx-basic-loading", inputs: ["diameter", "mode", "text", "linear", "show", "loading", "error"] }, { kind: "component", type: DbxErrorComponent, selector: "dbx-error", inputs: ["error", "iconOnly"], outputs: ["popoverOpened"] }, { kind: "component", type: DbxButtonComponent, selector: "dbx-button", inputs: ["bar", "type", "buttonStyle", "color", "spinnerColor", "customTextColor", "customSpinnerColor", "basic", "tonal", "raised", "stroked", "flat", "iconOnly", "fab", "customContent", "allowClickPropagation", "mode"] }, { kind: "directive", type: DbxTextColorDirective, selector: "[dbxTextColor]", inputs: ["dbxTextColor"] }] });
|
|
65
74
|
}
|
|
66
75
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: DbxFirebaseOAuthLoginViewComponent, decorators: [{
|
|
67
76
|
type: Component,
|
|
68
77
|
args: [{
|
|
69
78
|
selector: 'dbx-firebase-oauth-login-view',
|
|
70
|
-
imports: [DbxBasicLoadingComponent, DbxErrorComponent, DbxButtonComponent],
|
|
79
|
+
imports: [DbxBasicLoadingComponent, DbxErrorComponent, DbxButtonComponent, DbxTextColorDirective],
|
|
71
80
|
template: `
|
|
72
81
|
<div class="dbx-firebase-oauth-login-view">
|
|
73
82
|
@switch (loginStateCase()) {
|
|
@@ -75,6 +84,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImpor
|
|
|
75
84
|
<dbx-basic-loading [loading]="true"></dbx-basic-loading>
|
|
76
85
|
}
|
|
77
86
|
@case ('no_user') {
|
|
87
|
+
@if (notice(); as notice) {
|
|
88
|
+
<p class="dbx-firebase-oauth-login-view-notice" role="alert" [dbxTextColor]="'warn'">{{ notice }}</p>
|
|
89
|
+
}
|
|
78
90
|
<ng-content></ng-content>
|
|
79
91
|
}
|
|
80
92
|
@case ('user') {
|
|
@@ -94,7 +106,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImpor
|
|
|
94
106
|
class: 'd-block dbx-firebase-oauth-login-view'
|
|
95
107
|
}
|
|
96
108
|
}]
|
|
97
|
-
}], propDecorators: { loginStateCase: [{ type: i0.Input, args: [{ isSignal: true, alias: "loginStateCase", required: true }] }], error: [{ type: i0.Input, args: [{ isSignal: true, alias: "error", required: false }] }], retryClick: [{ type: i0.Output, args: ["retryClick"] }] } });
|
|
109
|
+
}], propDecorators: { loginStateCase: [{ type: i0.Input, args: [{ isSignal: true, alias: "loginStateCase", required: true }] }], error: [{ type: i0.Input, args: [{ isSignal: true, alias: "error", required: false }] }], notice: [{ type: i0.Input, args: [{ isSignal: true, alias: "notice", required: false }] }], retryClick: [{ type: i0.Output, args: ["retryClick"] }] } });
|
|
98
110
|
|
|
99
111
|
/**
|
|
100
112
|
* Default required scopes — `openid` is mandatory for any OIDC flow, so the
|
|
@@ -798,6 +810,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImpor
|
|
|
798
810
|
type: Service
|
|
799
811
|
}] });
|
|
800
812
|
|
|
813
|
+
/**
|
|
814
|
+
* Notice shown over the login UI after the server refused the signed-in user's ID token.
|
|
815
|
+
*/
|
|
816
|
+
const OIDC_LOGIN_SESSION_REJECTED_NOTICE = 'Your previous sign-in is no longer valid. Please sign in again.';
|
|
801
817
|
/**
|
|
802
818
|
* Container component for the OIDC OAuth login interaction flow.
|
|
803
819
|
*
|
|
@@ -822,7 +838,10 @@ class DbxFirebaseOAuthLoginComponent {
|
|
|
822
838
|
...(ngDevMode ? [{ debugName: "submitting" }] : /* istanbul ignore next */ []));
|
|
823
839
|
errorMessage = signal(null, /* @ts-ignore */
|
|
824
840
|
...(ngDevMode ? [{ debugName: "errorMessage" }] : /* istanbul ignore next */ []));
|
|
841
|
+
notice = signal(null, /* @ts-ignore */
|
|
842
|
+
...(ngDevMode ? [{ debugName: "notice" }] : /* istanbul ignore next */ []));
|
|
825
843
|
loginStateCaseSignal = computed(() => {
|
|
844
|
+
const interactionUid = this.interactionUid();
|
|
826
845
|
const errorMessage = this.errorMessage();
|
|
827
846
|
const isLoggedIn = this.isLoggedIn();
|
|
828
847
|
let result;
|
|
@@ -837,7 +856,12 @@ class DbxFirebaseOAuthLoginComponent {
|
|
|
837
856
|
result = 'unknown';
|
|
838
857
|
}
|
|
839
858
|
else if (isLoggedIn) {
|
|
840
|
-
|
|
859
|
+
// Stay in the loading state until the interaction uid is known. On a warm client-side navigation
|
|
860
|
+
// `isLoggedIn` is replayed synchronously while the uid route param is still resolving; entering
|
|
861
|
+
// `'user'` then fires the auto-submit with no uid, which sets a "Missing interaction UID" error a
|
|
862
|
+
// later uid emission cannot clear. The redirect that reaches this screen always carries the uid, so
|
|
863
|
+
// this only defers `'user'` by the tick it takes the param to propagate.
|
|
864
|
+
result = interactionUid == null ? 'unknown' : 'user';
|
|
841
865
|
}
|
|
842
866
|
else {
|
|
843
867
|
result = 'no_user';
|
|
@@ -866,6 +890,7 @@ class DbxFirebaseOAuthLoginComponent {
|
|
|
866
890
|
}
|
|
867
891
|
this.submitting.set(true);
|
|
868
892
|
this.errorMessage.set(null);
|
|
893
|
+
this.notice.set(null);
|
|
869
894
|
this.interactionService.submitLogin(uid).subscribe({
|
|
870
895
|
next: (response) => {
|
|
871
896
|
if (response.redirectTo) {
|
|
@@ -877,18 +902,34 @@ class DbxFirebaseOAuthLoginComponent {
|
|
|
877
902
|
this.submitting.set(false);
|
|
878
903
|
}
|
|
879
904
|
},
|
|
880
|
-
error: () => {
|
|
881
|
-
|
|
882
|
-
|
|
905
|
+
error: (error) => {
|
|
906
|
+
if (error instanceof HttpErrorResponse && error.status === 401) {
|
|
907
|
+
// The server could not verify the ID token: the Firebase session the browser holds is one it will
|
|
908
|
+
// not accept (expired, revoked, or issued by an Auth instance the server no longer knows — an
|
|
909
|
+
// emulator restart does this). A retry resubmits the same token and can never succeed, so sign out
|
|
910
|
+
// instead: `isLoggedIn` flips to false, the login UI surfaces, and a fresh sign-in re-triggers the
|
|
911
|
+
// auto-submit with a token the server can verify.
|
|
912
|
+
//
|
|
913
|
+
// Should the sign-out itself fail the user is still logged in, and clearing `submitting` would return
|
|
914
|
+
// the state to `'user'` and re-fire the auto-submit — so that case lands in the error state instead.
|
|
915
|
+
this.dbxFirebaseAuthService
|
|
916
|
+
.logOut()
|
|
917
|
+
.then(() => this.notice.set(OIDC_LOGIN_SESSION_REJECTED_NOTICE), () => this.errorMessage.set('Failed to complete login. Please try again.'))
|
|
918
|
+
.finally(() => this.submitting.set(false));
|
|
919
|
+
}
|
|
920
|
+
else {
|
|
921
|
+
this.submitting.set(false);
|
|
922
|
+
this.errorMessage.set('Failed to complete login. Please try again.');
|
|
923
|
+
}
|
|
883
924
|
}
|
|
884
925
|
});
|
|
885
926
|
}
|
|
886
927
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: DbxFirebaseOAuthLoginComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
887
928
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.1.4", type: DbxFirebaseOAuthLoginComponent, isStandalone: true, selector: "dbx-firebase-oauth-login", host: { classAttribute: "d-block dbx-firebase-oauth-login" }, ngImport: i0, template: `
|
|
888
|
-
<dbx-firebase-oauth-login-view [loginStateCase]="loginStateCaseSignal()" [error]="errorMessage()" (retryClick)="retry()">
|
|
929
|
+
<dbx-firebase-oauth-login-view [loginStateCase]="loginStateCaseSignal()" [error]="errorMessage()" [notice]="notice()" (retryClick)="retry()">
|
|
889
930
|
<ng-content />
|
|
890
931
|
</dbx-firebase-oauth-login-view>
|
|
891
|
-
`, isInline: true, dependencies: [{ kind: "component", type: DbxFirebaseOAuthLoginViewComponent, selector: "dbx-firebase-oauth-login-view", inputs: ["loginStateCase", "error"], outputs: ["retryClick"] }] });
|
|
932
|
+
`, isInline: true, dependencies: [{ kind: "component", type: DbxFirebaseOAuthLoginViewComponent, selector: "dbx-firebase-oauth-login-view", inputs: ["loginStateCase", "error", "notice"], outputs: ["retryClick"] }] });
|
|
892
933
|
}
|
|
893
934
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: DbxFirebaseOAuthLoginComponent, decorators: [{
|
|
894
935
|
type: Component,
|
|
@@ -896,7 +937,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImpor
|
|
|
896
937
|
selector: 'dbx-firebase-oauth-login',
|
|
897
938
|
imports: [DbxFirebaseOAuthLoginViewComponent],
|
|
898
939
|
template: `
|
|
899
|
-
<dbx-firebase-oauth-login-view [loginStateCase]="loginStateCaseSignal()" [error]="errorMessage()" (retryClick)="retry()">
|
|
940
|
+
<dbx-firebase-oauth-login-view [loginStateCase]="loginStateCaseSignal()" [error]="errorMessage()" [notice]="notice()" (retryClick)="retry()">
|
|
900
941
|
<ng-content />
|
|
901
942
|
</dbx-firebase-oauth-login-view>
|
|
902
943
|
`,
|
|
@@ -986,14 +1027,31 @@ class DbxOAuthConsentComponent {
|
|
|
986
1027
|
return Array.from(new Set([...OAUTH_CONSENT_REQUIRED_SCOPES, ...serverRequiredScopes]));
|
|
987
1028
|
}, /* @ts-ignore */
|
|
988
1029
|
...(ngDevMode ? [{ debugName: "requiredScopesSignal" }] : /* istanbul ignore next */ []));
|
|
1030
|
+
/**
|
|
1031
|
+
* Whether the interaction details the consent form needs — the uid to submit against and the requested
|
|
1032
|
+
* scopes the scope list renders — have loaded from the route params.
|
|
1033
|
+
*
|
|
1034
|
+
* The scopes param is populated on the server redirect that reaches this screen alongside the uid, so
|
|
1035
|
+
* this becomes true within a tick of navigation; it exists to bridge the window where it has not yet.
|
|
1036
|
+
*/
|
|
1037
|
+
interactionReadySignal = computed(() => {
|
|
1038
|
+
const routeScopes = this.routeScopes();
|
|
1039
|
+
return this.routeUid() != null && (routeScopes ?? '').length > 0;
|
|
1040
|
+
}, /* @ts-ignore */
|
|
1041
|
+
...(ngDevMode ? [{ debugName: "interactionReadySignal" }] : /* istanbul ignore next */ []));
|
|
989
1042
|
consentStateCaseSignal = computed(() => {
|
|
1043
|
+
const interactionReady = this.interactionReadySignal();
|
|
990
1044
|
const isLoggedIn = this.isLoggedIn();
|
|
991
1045
|
let result;
|
|
992
1046
|
if (isLoggedIn === undefined) {
|
|
993
1047
|
result = 'unknown';
|
|
994
1048
|
}
|
|
995
1049
|
else if (isLoggedIn) {
|
|
996
|
-
|
|
1050
|
+
// Wait for the interaction details before leaving the loading state. On a warm client-side navigation
|
|
1051
|
+
// (the login screen redirects here while the SPA is already running) `isLoggedIn` is replayed
|
|
1052
|
+
// synchronously while the route params are still resolving; rendering `'user'` then would flash an
|
|
1053
|
+
// empty consent screen — no client name, and a content pit with no scope rows.
|
|
1054
|
+
result = interactionReady ? 'user' : 'unknown';
|
|
997
1055
|
}
|
|
998
1056
|
else {
|
|
999
1057
|
result = 'no_user';
|
|
@@ -2121,5 +2179,5 @@ function provideDbxFirebaseOidc(config) {
|
|
|
2121
2179
|
* Generated bundle index. Do not edit.
|
|
2122
2180
|
*/
|
|
2123
2181
|
|
|
2124
|
-
export { AbstractDbxFirebaseOAuthConsentScopeViewComponent, DEFAULT_OAUTH_CONSENT_SCOPES_REQUIRED_VALIDATOR_MESSAGE, DEFAULT_OIDC_AUTHORIZATION_ENDPOINT_PATH, DEFAULT_OIDC_CLIENT_ID_PARAM_KEY, DEFAULT_OIDC_CLIENT_NAME_PARAM_KEY, DEFAULT_OIDC_CLIENT_URI_PARAM_KEY, DEFAULT_OIDC_INTERACTION_ENDPOINT_PATH, DEFAULT_OIDC_INTERACTION_UID_PARAM_KEY, DEFAULT_OIDC_LOGO_URI_PARAM_KEY, DEFAULT_OIDC_REQUIRED_SCOPES_PARAM_KEY, DEFAULT_OIDC_SCOPES_PARAM_KEY, DEFAULT_OIDC_TOKEN_ENDPOINT_AUTH_METHODS, DbxFirebaseOAuthConsentScopeDefaultViewComponent, DbxFirebaseOAuthConsentScopeFormComponent, DbxFirebaseOAuthConsentScopeListComponent, DbxFirebaseOAuthConsentScopeListItemComponent, DbxFirebaseOAuthConsentScopeListViewComponent, DbxFirebaseOAuthConsentViewComponent, DbxFirebaseOAuthLoginComponent, DbxFirebaseOAuthLoginViewComponent, DbxFirebaseOidcConfig, DbxFirebaseOidcConfigService, DbxFirebaseOidcEntryClientCreateComponent, DbxFirebaseOidcEntryClientForgeFormComponent, DbxFirebaseOidcEntryClientListComponent, DbxFirebaseOidcEntryClientListViewComponent, DbxFirebaseOidcEntryClientListViewItemClientComponent, DbxFirebaseOidcEntryClientListViewItemComponent, DbxFirebaseOidcEntryClientListViewItemDefaultComponent, DbxFirebaseOidcEntryClientTestComponent, DbxFirebaseOidcEntryClientTestForgeFormComponent, DbxFirebaseOidcEntryClientUpdateComponent, DbxFirebaseOidcEntryClientViewComponent, DbxFirebaseOidcEntryGrantListComponent, DbxFirebaseOidcEntryGrantListContainerComponent, DbxFirebaseOidcEntryGrantListViewComponent, DbxFirebaseOidcEntryGrantListViewItemComponent, DbxFirebaseOidcInteractionService, DbxOAuthConsentComponent, OAUTH_CONSENT_SCOPES_REQUIRED_VALIDATOR_KIND, OidcEntryCollectionStore, OidcEntryCollectionStoreDirective, OidcEntryDocumentStore, OidcEntryDocumentStoreDirective, oauthConsentScopesFormConfig, oidcClientHomepageUriForgeField, oidcClientJwksUriForgeField, oidcClientLogoUriForgeField, oidcClientNameForgeField, oidcClientProviderProfilesForgeField, oidcClientRedirectUrisForgeField, oidcClientTestClientIdForgeField, oidcClientTestRedirectUriForgeField, oidcClientTestScopesForgeField, oidcClientTokenEndpointAuthMethodForgeField, oidcEntryClientForgeFormFields, oidcEntryClientTestForgeFormFields, oidcEntryClientUpdateForgeFormFields, provideDbxFirebaseOidc, provideOidcModelFirestoreCollections };
|
|
2182
|
+
export { AbstractDbxFirebaseOAuthConsentScopeViewComponent, DEFAULT_OAUTH_CONSENT_SCOPES_REQUIRED_VALIDATOR_MESSAGE, DEFAULT_OIDC_AUTHORIZATION_ENDPOINT_PATH, DEFAULT_OIDC_CLIENT_ID_PARAM_KEY, DEFAULT_OIDC_CLIENT_NAME_PARAM_KEY, DEFAULT_OIDC_CLIENT_URI_PARAM_KEY, DEFAULT_OIDC_INTERACTION_ENDPOINT_PATH, DEFAULT_OIDC_INTERACTION_UID_PARAM_KEY, DEFAULT_OIDC_LOGO_URI_PARAM_KEY, DEFAULT_OIDC_REQUIRED_SCOPES_PARAM_KEY, DEFAULT_OIDC_SCOPES_PARAM_KEY, DEFAULT_OIDC_TOKEN_ENDPOINT_AUTH_METHODS, DbxFirebaseOAuthConsentScopeDefaultViewComponent, DbxFirebaseOAuthConsentScopeFormComponent, DbxFirebaseOAuthConsentScopeListComponent, DbxFirebaseOAuthConsentScopeListItemComponent, DbxFirebaseOAuthConsentScopeListViewComponent, DbxFirebaseOAuthConsentViewComponent, DbxFirebaseOAuthLoginComponent, DbxFirebaseOAuthLoginViewComponent, DbxFirebaseOidcConfig, DbxFirebaseOidcConfigService, DbxFirebaseOidcEntryClientCreateComponent, DbxFirebaseOidcEntryClientForgeFormComponent, DbxFirebaseOidcEntryClientListComponent, DbxFirebaseOidcEntryClientListViewComponent, DbxFirebaseOidcEntryClientListViewItemClientComponent, DbxFirebaseOidcEntryClientListViewItemComponent, DbxFirebaseOidcEntryClientListViewItemDefaultComponent, DbxFirebaseOidcEntryClientTestComponent, DbxFirebaseOidcEntryClientTestForgeFormComponent, DbxFirebaseOidcEntryClientUpdateComponent, DbxFirebaseOidcEntryClientViewComponent, DbxFirebaseOidcEntryGrantListComponent, DbxFirebaseOidcEntryGrantListContainerComponent, DbxFirebaseOidcEntryGrantListViewComponent, DbxFirebaseOidcEntryGrantListViewItemComponent, DbxFirebaseOidcInteractionService, DbxOAuthConsentComponent, OAUTH_CONSENT_SCOPES_REQUIRED_VALIDATOR_KIND, OIDC_LOGIN_SESSION_REJECTED_NOTICE, OidcEntryCollectionStore, OidcEntryCollectionStoreDirective, OidcEntryDocumentStore, OidcEntryDocumentStoreDirective, oauthConsentScopesFormConfig, oidcClientHomepageUriForgeField, oidcClientJwksUriForgeField, oidcClientLogoUriForgeField, oidcClientNameForgeField, oidcClientProviderProfilesForgeField, oidcClientRedirectUrisForgeField, oidcClientTestClientIdForgeField, oidcClientTestRedirectUriForgeField, oidcClientTestScopesForgeField, oidcClientTokenEndpointAuthMethodForgeField, oidcEntryClientForgeFormFields, oidcEntryClientTestForgeFormFields, oidcEntryClientUpdateForgeFormFields, provideDbxFirebaseOidc, provideOidcModelFirestoreCollections };
|
|
2125
2183
|
//# sourceMappingURL=dereekb-dbx-firebase-oidc.mjs.map
|