@dereekb/dbx-firebase 5.2.0 → 6.0.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/esm2020/lib/auth/auth.mjs +8 -1
- package/esm2020/lib/auth/service/firebase.auth.service.delegate.mjs +22 -0
- package/esm2020/lib/auth/service/firebase.auth.service.mjs +44 -4
- package/esm2020/lib/auth/service/index.mjs +2 -1
- package/esm2020/lib/firebase/firebase.module.mjs +3 -3
- package/esm2020/lib/model/store/store.subcollection.document.mjs +1 -1
- package/esm2020/lib/model/store/store.subcollection.rxjs.mjs +1 -1
- package/fesm2015/dereekb-dbx-firebase.mjs +80 -15
- package/fesm2015/dereekb-dbx-firebase.mjs.map +1 -1
- package/fesm2020/dereekb-dbx-firebase.mjs +80 -15
- package/fesm2020/dereekb-dbx-firebase.mjs.map +1 -1
- package/lib/auth/auth.d.ts +2 -0
- package/lib/auth/service/firebase.auth.service.d.ts +19 -1
- package/lib/auth/service/firebase.auth.service.delegate.d.ts +13 -0
- package/lib/auth/service/index.d.ts +1 -0
- package/lib/model/store/store.subcollection.document.d.ts +3 -3
- package/package.json +6 -6
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { urlWithoutParameters, addToSet, removeFromSet, filterMaybeValues, mapIterable, asArray, excludeValuesFromArray, containsStringAnyCase, forEachKeyValue, readableError, isMaybeSo } from '@dereekb/util';
|
|
1
|
+
import { urlWithoutParameters, cachedGetter, addToSet, removeFromSet, filterMaybeValues, mapIterable, asArray, excludeValuesFromArray, containsStringAnyCase, addToSetCopy, forEachKeyValue, readableError, isMaybeSo } from '@dereekb/util';
|
|
2
2
|
import * as i0 from '@angular/core';
|
|
3
3
|
import { InjectionToken, Injectable, Inject, Optional, Component, Input, Directive, EventEmitter, Output, NgModule, Injector, forwardRef, Host } from '@angular/core';
|
|
4
4
|
import { getToken, initializeAppCheck, ReCaptchaV3Provider } from 'firebase/app-check';
|
|
5
|
-
import { switchMap, from, first, map, of, shareReplay, timeout, startWith, distinctUntilChanged, BehaviorSubject, combineLatest, tap,
|
|
5
|
+
import { switchMap, from, first, map, of, shareReplay, timeout, startWith, distinctUntilChanged, firstValueFrom, BehaviorSubject, combineLatest, tap, Subject, throttleTime, NEVER, filter, take, exhaustMap } from 'rxjs';
|
|
6
6
|
import * as i1 from '@angular/fire/app-check';
|
|
7
7
|
import { provideAppCheck } from '@angular/fire/app-check';
|
|
8
8
|
import * as i4 from '@angular/material/button';
|
|
@@ -118,6 +118,23 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImpor
|
|
|
118
118
|
args: [DBX_FIREBASE_OPTIONS_TOKEN]
|
|
119
119
|
}] }, { type: i1.AppCheck }]; } });
|
|
120
120
|
|
|
121
|
+
function authUserInfoFromAuthUser(user) {
|
|
122
|
+
return {
|
|
123
|
+
displayName: user?.displayName,
|
|
124
|
+
email: user.email,
|
|
125
|
+
phoneNumber: user.phoneNumber,
|
|
126
|
+
photoURL: user.photoURL,
|
|
127
|
+
uid: user.uid
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
function firebaseAuthTokenFromUser(user) {
|
|
131
|
+
return {
|
|
132
|
+
email: user.email,
|
|
133
|
+
emailVerified: user.emailVerified,
|
|
134
|
+
phoneNumber: user.phoneNumber
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
|
|
121
138
|
/**
|
|
122
139
|
* Derives a user state from the input firebase auth service.
|
|
123
140
|
*
|
|
@@ -156,16 +173,7 @@ function readValueFromIdToken(dbxFirebaseAuthService, readBooleanFromIdToken, de
|
|
|
156
173
|
}));
|
|
157
174
|
}
|
|
158
175
|
|
|
159
|
-
|
|
160
|
-
return {
|
|
161
|
-
displayName: user?.displayName,
|
|
162
|
-
email: user.email,
|
|
163
|
-
phoneNumber: user.phoneNumber,
|
|
164
|
-
photoURL: user.photoURL,
|
|
165
|
-
uid: user.uid
|
|
166
|
-
};
|
|
167
|
-
}
|
|
168
|
-
|
|
176
|
+
// MARK: Delegate
|
|
169
177
|
class DbxFirebaseAuthServiceDelegate {
|
|
170
178
|
}
|
|
171
179
|
const DEFAULT_DBX_FIREBASE_AUTH_SERVICE_DELEGATE = {
|
|
@@ -179,6 +187,7 @@ const DEFAULT_DBX_FIREBASE_AUTH_SERVICE_DELEGATE = {
|
|
|
179
187
|
return dbxFirebaseAuthService.authUserState$.pipe(map((x) => x === 'user'));
|
|
180
188
|
}
|
|
181
189
|
};
|
|
190
|
+
// MARK: Service
|
|
182
191
|
class DbxFirebaseAuthService {
|
|
183
192
|
constructor(firebaseAuth, delegate) {
|
|
184
193
|
this.firebaseAuth = firebaseAuth;
|
|
@@ -204,6 +213,21 @@ class DbxFirebaseAuthService {
|
|
|
204
213
|
this.authUserState$ = delegate.authUserStateObs(this).pipe(distinctUntilChanged(), shareReplay(1));
|
|
205
214
|
this.authRoles$ = delegate.authRolesObs(this);
|
|
206
215
|
this.isOnboarded$ = delegate.isOnboarded(this);
|
|
216
|
+
this._authRoleClaimsService = delegate.authRoleClaimsService;
|
|
217
|
+
}
|
|
218
|
+
rolesForClaims(claims) {
|
|
219
|
+
let result;
|
|
220
|
+
if (this._authRoleClaimsService) {
|
|
221
|
+
return this._authRoleClaimsService.toRoles(claims);
|
|
222
|
+
}
|
|
223
|
+
else {
|
|
224
|
+
console.warn('DbxFirebaseAuthService: rolesForClaims called with no authRoleClaimsService provided. An empty set is returned.');
|
|
225
|
+
result = new Set();
|
|
226
|
+
}
|
|
227
|
+
return result;
|
|
228
|
+
}
|
|
229
|
+
getAuthContextInfo() {
|
|
230
|
+
return firstValueFrom(this.authUser$).then((user) => (user ? new DbxFirebaseAuthContextInfo(this, user) : undefined));
|
|
207
231
|
}
|
|
208
232
|
logInWithGoogle() {
|
|
209
233
|
return this.logInWithPopup(new GoogleAuthProvider());
|
|
@@ -254,6 +278,28 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImpor
|
|
|
254
278
|
}], ctorParameters: function () { return [{ type: i1$1.Auth }, { type: DbxFirebaseAuthServiceDelegate, decorators: [{
|
|
255
279
|
type: Optional
|
|
256
280
|
}] }]; } });
|
|
281
|
+
/**
|
|
282
|
+
* FirebaseAuthContextInfo implementation from DbxFirebaseAuthService.
|
|
283
|
+
*/
|
|
284
|
+
class DbxFirebaseAuthContextInfo {
|
|
285
|
+
constructor(service, user) {
|
|
286
|
+
this.service = service;
|
|
287
|
+
this.user = user;
|
|
288
|
+
this._token = cachedGetter(() => firebaseAuthTokenFromUser(this.user));
|
|
289
|
+
}
|
|
290
|
+
get uid() {
|
|
291
|
+
return this.user.uid;
|
|
292
|
+
}
|
|
293
|
+
loadClaims() {
|
|
294
|
+
return this.user.getIdTokenResult().then((x) => x.claims);
|
|
295
|
+
}
|
|
296
|
+
loadAuthRoles() {
|
|
297
|
+
return this.loadClaims().then((x) => this.service.rolesForClaims(x));
|
|
298
|
+
}
|
|
299
|
+
get token() {
|
|
300
|
+
return this._token();
|
|
301
|
+
}
|
|
302
|
+
}
|
|
257
303
|
|
|
258
304
|
class DbxFirebaseLoginTermsConfig {
|
|
259
305
|
}
|
|
@@ -1340,6 +1386,25 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImpor
|
|
|
1340
1386
|
}]
|
|
1341
1387
|
}], ctorParameters: function () { return [{ type: DbxFirebaseLoginModuleRootConfig }, { type: DbxFirebaseAuthLoginService }]; } });
|
|
1342
1388
|
|
|
1389
|
+
function authRolesObsWithClaimsService(config) {
|
|
1390
|
+
const { addAuthUserStateToRoles: addAuthUserState, claimsService } = config;
|
|
1391
|
+
return (dbxFirebaseAuthService) => {
|
|
1392
|
+
let obs = dbxFirebaseAuthService.idTokenResult$.pipe(map((x) => claimsService.toRoles(x.claims)));
|
|
1393
|
+
if (addAuthUserState) {
|
|
1394
|
+
obs = obs.pipe(switchMap((authRoleSet) => dbxFirebaseAuthService.authUserState$.pipe(map((userState) => addToSetCopy(authRoleSet, [userState])))));
|
|
1395
|
+
}
|
|
1396
|
+
return obs;
|
|
1397
|
+
};
|
|
1398
|
+
}
|
|
1399
|
+
function defaultDbxFirebaseAuthServiceDelegateWithClaimsService(config) {
|
|
1400
|
+
return {
|
|
1401
|
+
authUserStateObs: DEFAULT_DBX_FIREBASE_AUTH_SERVICE_DELEGATE.authUserStateObs,
|
|
1402
|
+
authRolesObs: authRolesObsWithClaimsService(config),
|
|
1403
|
+
isOnboarded: DEFAULT_DBX_FIREBASE_AUTH_SERVICE_DELEGATE.isOnboarded,
|
|
1404
|
+
authRoleClaimsService: config.claimsService
|
|
1405
|
+
};
|
|
1406
|
+
}
|
|
1407
|
+
|
|
1343
1408
|
class DbxFirebaseAuthModule {
|
|
1344
1409
|
static forRoot(config) {
|
|
1345
1410
|
const providers = [
|
|
@@ -1442,7 +1507,7 @@ DbxFirebaseDefaultAppCheckProviderModule.ɵinj = i0.ɵɵngDeclareInjector({ minV
|
|
|
1442
1507
|
provider: new ReCaptchaV3Provider(appCheckOptions.reCaptchaV3),
|
|
1443
1508
|
isTokenAutoRefreshEnabled: appCheckOptions.isTokenAutoRefreshEnabled ?? true
|
|
1444
1509
|
});
|
|
1445
|
-
console.
|
|
1510
|
+
console.log('Enabled AppCheck.');
|
|
1446
1511
|
}
|
|
1447
1512
|
else {
|
|
1448
1513
|
appCheck = undefined;
|
|
@@ -1473,7 +1538,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImpor
|
|
|
1473
1538
|
provider: new ReCaptchaV3Provider(appCheckOptions.reCaptchaV3),
|
|
1474
1539
|
isTokenAutoRefreshEnabled: appCheckOptions.isTokenAutoRefreshEnabled ?? true
|
|
1475
1540
|
});
|
|
1476
|
-
console.
|
|
1541
|
+
console.log('Enabled AppCheck.');
|
|
1477
1542
|
}
|
|
1478
1543
|
else {
|
|
1479
1544
|
appCheck = undefined;
|
|
@@ -2499,5 +2564,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImpor
|
|
|
2499
2564
|
* Generated bundle index. Do not edit.
|
|
2500
2565
|
*/
|
|
2501
2566
|
|
|
2502
|
-
export { AbstractConfiguredDbxFirebaseLoginButtonDirective, AbstractDbxFirebaseCollectionStore, AbstractDbxFirebaseCollectionWithParentStore, AbstractDbxFirebaseDocumentStore, AbstractDbxFirebaseDocumentWithParentStore, DBX_FIREBASE_MODEL_DOES_NOT_EXIST_ERROR, DBX_FIREBASE_OPTIONS_TOKEN, DBX_FIREBASE_ROUTER_SYNC_DEFAULT_ID_PARAM_KEY, DBX_FIRESTORE_CONTEXT_TOKEN, DEFAULT_CONFIGURED_DBX_FIREBASE_LOGIN_BUTTON_TEMPLATE, DEFAULT_DBX_FIREBASE_AUTH_SERVICE_DELEGATE, DEFAULT_FIREBASE_AUTH_LOGIN_PASSWORD_CONFIG, DEFAULT_FIREBASE_AUTH_LOGIN_PASSWORD_CONFIG_TOKEN, DEFAULT_FIREBASE_AUTH_LOGIN_PROVIDERS_TOKEN, DEFAULT_FIREBASE_AUTH_LOGIN_TERMS_COMPONENT_CLASS_TOKEN, DEFAULT_FIREBASE_LOGIN_METHOD_CATEGORY, DbxFirebaseAppCheckHttpInterceptor, DbxFirebaseAuthLoginService, DbxFirebaseAuthModule, DbxFirebaseAuthService, DbxFirebaseAuthServiceDelegate, DbxFirebaseCollectionChangeDirective, DbxFirebaseCollectionHasChangeDirective, DbxFirebaseCollectionListDirective, DbxFirebaseCollectionLoaderInstance, DbxFirebaseCollectionStoreDirective, DbxFirebaseCollectionWithParentStoreDirective, DbxFirebaseDefaultAppCheckProviderModule, DbxFirebaseDefaultAuthProviderModule, DbxFirebaseDefaultFirebaseProvidersModule, DbxFirebaseDefaultFirestoreProviderModule, DbxFirebaseDefaultFunctionsProviderModule, DbxFirebaseDefaultStorageProviderModule, DbxFirebaseDocumentAuthIdDirective, DbxFirebaseDocumentStoreDirective, DbxFirebaseDocumentStoreRouteIdDirective, DbxFirebaseEmailFormComponent, DbxFirebaseEmailRecoveryFormComponent, DbxFirebaseEmulatorModule, DbxFirebaseFirestoreCollectionModule, DbxFirebaseFunctionsModule, DbxFirebaseLoginAnonymousComponent, DbxFirebaseLoginAppleComponent, DbxFirebaseLoginButtonComponent, DbxFirebaseLoginButtonContainerComponent, DbxFirebaseLoginComponent, DbxFirebaseLoginContext, DbxFirebaseLoginContextBackButtonComponent, DbxFirebaseLoginContextDirective, DbxFirebaseLoginEmailComponent, DbxFirebaseLoginEmailContentComponent, DbxFirebaseLoginFacebookComponent, DbxFirebaseLoginGitHubComponent, DbxFirebaseLoginGoogleComponent, DbxFirebaseLoginListComponent, DbxFirebaseLoginMicrosoftComponent, DbxFirebaseLoginModule, DbxFirebaseLoginModuleRootConfig, DbxFirebaseLoginTermsComponent, DbxFirebaseLoginTermsSimpleComponent, DbxFirebaseLoginTwitterComponent, DbxFirebaseModelModule, DbxFirebaseModelStoreModule, DbxFirebaseModule, DbxFirebaseParsedEmulatorsConfig, DbxFirebaseRegisterComponent, DbxFirebaseRegisterEmailComponent, DbxFirestoreContextService, FIREBASE_AUTH_NETWORK_REQUEST_ERROR, FIREBASE_AUTH_USER_NOT_FOUND_ERROR, OAUTH_FIREBASE_LOGIN_METHOD_CATEGORY, authUserInfoFromAuthUser, authUserStateFromFirebaseAuthService, dbxFirebaseCollectionLoaderInstance, dbxFirebaseCollectionLoaderInstanceWithCollection, defaultFirebaseAuthLoginProvidersFactory, enableAppCheckDebugTokenGeneration, firebaseAuthErrorToReadableError, modelDoesNotExistError, provideDbxFirebaseCollectionStoreDirective, provideDbxFirebaseCollectionWithParentStoreDirective, provideDbxFirebaseDocumentStoreDirective, readValueFromIdToken, setParentStoreEffect };
|
|
2567
|
+
export { AbstractConfiguredDbxFirebaseLoginButtonDirective, AbstractDbxFirebaseCollectionStore, AbstractDbxFirebaseCollectionWithParentStore, AbstractDbxFirebaseDocumentStore, AbstractDbxFirebaseDocumentWithParentStore, DBX_FIREBASE_MODEL_DOES_NOT_EXIST_ERROR, DBX_FIREBASE_OPTIONS_TOKEN, DBX_FIREBASE_ROUTER_SYNC_DEFAULT_ID_PARAM_KEY, DBX_FIRESTORE_CONTEXT_TOKEN, DEFAULT_CONFIGURED_DBX_FIREBASE_LOGIN_BUTTON_TEMPLATE, DEFAULT_DBX_FIREBASE_AUTH_SERVICE_DELEGATE, DEFAULT_FIREBASE_AUTH_LOGIN_PASSWORD_CONFIG, DEFAULT_FIREBASE_AUTH_LOGIN_PASSWORD_CONFIG_TOKEN, DEFAULT_FIREBASE_AUTH_LOGIN_PROVIDERS_TOKEN, DEFAULT_FIREBASE_AUTH_LOGIN_TERMS_COMPONENT_CLASS_TOKEN, DEFAULT_FIREBASE_LOGIN_METHOD_CATEGORY, DbxFirebaseAppCheckHttpInterceptor, DbxFirebaseAuthContextInfo, DbxFirebaseAuthLoginService, DbxFirebaseAuthModule, DbxFirebaseAuthService, DbxFirebaseAuthServiceDelegate, DbxFirebaseCollectionChangeDirective, DbxFirebaseCollectionHasChangeDirective, DbxFirebaseCollectionListDirective, DbxFirebaseCollectionLoaderInstance, DbxFirebaseCollectionStoreDirective, DbxFirebaseCollectionWithParentStoreDirective, DbxFirebaseDefaultAppCheckProviderModule, DbxFirebaseDefaultAuthProviderModule, DbxFirebaseDefaultFirebaseProvidersModule, DbxFirebaseDefaultFirestoreProviderModule, DbxFirebaseDefaultFunctionsProviderModule, DbxFirebaseDefaultStorageProviderModule, DbxFirebaseDocumentAuthIdDirective, DbxFirebaseDocumentStoreDirective, DbxFirebaseDocumentStoreRouteIdDirective, DbxFirebaseEmailFormComponent, DbxFirebaseEmailRecoveryFormComponent, DbxFirebaseEmulatorModule, DbxFirebaseFirestoreCollectionModule, DbxFirebaseFunctionsModule, DbxFirebaseLoginAnonymousComponent, DbxFirebaseLoginAppleComponent, DbxFirebaseLoginButtonComponent, DbxFirebaseLoginButtonContainerComponent, DbxFirebaseLoginComponent, DbxFirebaseLoginContext, DbxFirebaseLoginContextBackButtonComponent, DbxFirebaseLoginContextDirective, DbxFirebaseLoginEmailComponent, DbxFirebaseLoginEmailContentComponent, DbxFirebaseLoginFacebookComponent, DbxFirebaseLoginGitHubComponent, DbxFirebaseLoginGoogleComponent, DbxFirebaseLoginListComponent, DbxFirebaseLoginMicrosoftComponent, DbxFirebaseLoginModule, DbxFirebaseLoginModuleRootConfig, DbxFirebaseLoginTermsComponent, DbxFirebaseLoginTermsSimpleComponent, DbxFirebaseLoginTwitterComponent, DbxFirebaseModelModule, DbxFirebaseModelStoreModule, DbxFirebaseModule, DbxFirebaseParsedEmulatorsConfig, DbxFirebaseRegisterComponent, DbxFirebaseRegisterEmailComponent, DbxFirestoreContextService, FIREBASE_AUTH_NETWORK_REQUEST_ERROR, FIREBASE_AUTH_USER_NOT_FOUND_ERROR, OAUTH_FIREBASE_LOGIN_METHOD_CATEGORY, authRolesObsWithClaimsService, authUserInfoFromAuthUser, authUserStateFromFirebaseAuthService, dbxFirebaseCollectionLoaderInstance, dbxFirebaseCollectionLoaderInstanceWithCollection, defaultDbxFirebaseAuthServiceDelegateWithClaimsService, defaultFirebaseAuthLoginProvidersFactory, enableAppCheckDebugTokenGeneration, firebaseAuthErrorToReadableError, firebaseAuthTokenFromUser, modelDoesNotExistError, provideDbxFirebaseCollectionStoreDirective, provideDbxFirebaseCollectionWithParentStoreDirective, provideDbxFirebaseDocumentStoreDirective, readValueFromIdToken, setParentStoreEffect };
|
|
2503
2568
|
//# sourceMappingURL=dereekb-dbx-firebase.mjs.map
|