@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.
@@ -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
- result = 'user';
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
- this.submitting.set(false);
882
- this.errorMessage.set('Failed to complete login. Please try again.');
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
- result = 'user';
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