@ng-atomic/common 17.9.0 → 17.10.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,6 +1,7 @@
1
1
  import { Injectable, inject } from '@angular/core';
2
2
  import { toSignal, takeUntilDestroyed } from '@angular/core/rxjs-interop';
3
3
  import { Auth, authState, signInWithCustomToken, GoogleAuthProvider, TwitterAuthProvider, signInWithPopup, signOut, signInWithEmailAndPassword, createUserWithEmailAndPassword } from '@angular/fire/auth';
4
+ import { get } from 'lodash-es';
4
5
  import { distinctUntilChanged, map, of, shareReplay, switchMap } from 'rxjs';
5
6
  import * as i0 from "@angular/core";
6
7
  export class AuthService {
@@ -8,6 +9,7 @@ export class AuthService {
8
9
  this.#auth = inject(Auth);
9
10
  this.auth$ = authState(this.#auth);
10
11
  this.auth = toSignal(this.auth$);
12
+ this.customClaims$ = this.auth$.pipe(switchMap(auth => auth ? auth.getIdTokenResult() : of(null)), map(token => token?.claims ?? {}), distinctUntilChanged(), shareReplay(1), takeUntilDestroyed());
11
13
  }
12
14
  #auth;
13
15
  signInWithTwitter() {
@@ -55,6 +57,9 @@ export function injectTwitterId$() {
55
57
  return inject(AuthService).auth$.pipe(map(auth => auth?.providerData?.[0]?.uid ?? null), distinctUntilChanged(), shareReplay(1), takeUntilDestroyed());
56
58
  }
57
59
  export function injectClaim$(claim) {
58
- return inject(AuthService).auth$.pipe(switchMap(auth => auth ? auth?.getIdTokenResult() : of(null)), map(token => token?.claims?.[claim] ?? false), distinctUntilChanged(), shareReplay(1), takeUntilDestroyed());
60
+ return inject(AuthService).customClaims$.pipe(map(token => claim ? get(token, claim) : token), distinctUntilChanged(), shareReplay(1), takeUntilDestroyed());
59
61
  }
60
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvQG5nLWF0b21pYy9jb21tb24vc3JjL2xpYi9zZXJ2aWNlcy9hdXRoL2F1dGguc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzRCxPQUFPLEVBQUUsUUFBUSxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDMUUsT0FBTyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUscUJBQXFCLEVBQUUsa0JBQWtCLEVBQUUsbUJBQW1CLEVBQUUsZUFBZSxFQUFFLE9BQU8sRUFBa0IsMEJBQTBCLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUMzTixPQUFPLEVBQWMsb0JBQW9CLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQTJCekYsTUFBTSxPQUFPLFdBQVc7SUFIeEI7UUFLRSxVQUFLLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3JCLFVBQUssR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzlCLFNBQUksR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0tBMkI3QjtJQTdCQyxLQUFLLENBQWdCO0lBSXJCLGlCQUFpQjtRQUNmLE1BQU0sUUFBUSxHQUFHLElBQUksbUJBQW1CLEVBQUUsQ0FBQztRQUMzQyxPQUFPLGVBQWUsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBb0IsQ0FBQTtJQUNqRSxDQUFDO0lBRUQsZ0JBQWdCO1FBQ2QsTUFBTSxRQUFRLEdBQUcsSUFBSSxrQkFBa0IsRUFBRSxDQUFDO1FBQzFDLE9BQU8sZUFBZSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVELDBCQUEwQixDQUFDLEtBQWEsRUFBRSxRQUFnQjtRQUN4RCxPQUFPLDBCQUEwQixDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFRCw4QkFBOEIsQ0FBQyxLQUFhLEVBQUUsUUFBZ0I7UUFDNUQsT0FBTyw4QkFBOEIsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBRUQscUJBQXFCLENBQUMsV0FBbUI7UUFDdkMsT0FBTyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBb0IsQ0FBQztJQUMzRSxDQUFDO0lBRUQsT0FBTztRQUNMLE9BQU8sT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM3QixDQUFDOzhHQTlCVSxXQUFXO2tIQUFYLFdBQVcsY0FGVixNQUFNOzsyRkFFUCxXQUFXO2tCQUh2QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7QUFrQ0QsTUFBTSxVQUFVLGdCQUFnQjtJQUM5QixPQUFPLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxLQUFLLENBQUM7QUFDbkMsQ0FBQztBQUVELE1BQU0sVUFBVSxlQUFlO0lBQzdCLE9BQU8sUUFBUSxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FBQztBQUN0QyxDQUFDO0FBRUQsTUFBTSxVQUFVLGFBQWE7SUFDM0IsT0FBTyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FDbkMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLEdBQUcsSUFBSSxJQUFJLENBQUMsRUFDOUIsb0JBQW9CLEVBQUUsRUFDdEIsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUNkLGtCQUFrQixFQUFFLENBQ3JCLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxVQUFVLFlBQVk7SUFDMUIsT0FBTyxRQUFRLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQztBQUNuQyxDQUFDO0FBRUQsTUFBTSxVQUFVLGdCQUFnQjtJQUM5QixPQUFPLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUNuQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsWUFBWSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxJQUFJLElBQUksQ0FBQyxFQUNqRCxvQkFBb0IsRUFBRSxFQUN0QixXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQ2Qsa0JBQWtCLEVBQUUsQ0FDckIsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLFVBQVUsWUFBWSxDQUFhLEtBQWE7SUFDcEQsT0FBTyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FDbkMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQzdELEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsRUFDN0Msb0JBQW9CLEVBQUUsRUFDdEIsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUNkLGtCQUFrQixFQUFFLENBQ2QsQ0FBQztBQUNYLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBTaWduYWwsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdG9TaWduYWwsIHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IEF1dGgsIGF1dGhTdGF0ZSwgc2lnbkluV2l0aEN1c3RvbVRva2VuLCBHb29nbGVBdXRoUHJvdmlkZXIsIFR3aXR0ZXJBdXRoUHJvdmlkZXIsIHNpZ25JbldpdGhQb3B1cCwgc2lnbk91dCwgVXNlckNyZWRlbnRpYWwsIHNpZ25JbldpdGhFbWFpbEFuZFBhc3N3b3JkLCBjcmVhdGVVc2VyV2l0aEVtYWlsQW5kUGFzc3dvcmQgfSBmcm9tICdAYW5ndWxhci9maXJlL2F1dGgnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIG1hcCwgb2YsIHNoYXJlUmVwbGF5LCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzJztcblxuZXhwb3J0IGludGVyZmFjZSBUd2l0dGVyQ3JlZGVudGlhbCB7XG4gIGNvbnRleHQ6IHN0cmluZztcbiAgZGlzcGxheU5hbWU6IHN0cmluZztcbiAgZW1haWw6IHN0cmluZztcbiAgZW1haWxWZXJpZmllZDogYm9vbGVhbjtcbiAgZXhwaXJlc0luOiBzdHJpbmc7XG4gIGZlZGVyYXRlZElkOiBzdHJpbmc7XG4gIGZ1bGxOYW1lOiBzdHJpbmc7XG4gIGlkVG9rZW46IHN0cmluZztcbiAga2luZDogJ2lkZW50aXR5dG9vbGtpdCNWZXJpZnlBc3NlcnRpb25SZXNwb25zZSc7XG4gIGxvY2FsSWQ6IHN0cmluZztcbiAgb2F1dGhBY2Nlc3NUb2tlbjogc3RyaW5nO1xuICBvYXV0aFRva2VuU2VjcmV0OiBzdHJpbmc7XG4gIHBob3RvVXJsOiBzdHJpbmc7XG4gIHByb3ZpZGVySWQ6ICd0d2l0dGVyLmNvbSc7XG4gIHJhd1VzZXJJbmZvOiBzdHJpbmc7XG4gIHJlZnJlc2hUb2tlbjogc3RyaW5nO1xuICBzY3JlZW5OYW1lOiBzdHJpbmc7XG59XG5cbmV4cG9ydCB0eXBlIFJlc3VsdCA9IFVzZXJDcmVkZW50aWFsICYge190b2tlblJlc3BvbnNlOiBUd2l0dGVyQ3JlZGVudGlhbH07XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEF1dGhTZXJ2aWNlIHtcblxuICAjYXV0aCA9IGluamVjdChBdXRoKTtcbiAgYXV0aCQgPSBhdXRoU3RhdGUodGhpcy4jYXV0aCk7XG4gIGF1dGggPSB0b1NpZ25hbCh0aGlzLmF1dGgkKTtcblxuICBzaWduSW5XaXRoVHdpdHRlcigpOiBQcm9taXNlPFJlc3VsdD4ge1xuICAgIGNvbnN0IHByb3ZpZGVyID0gbmV3IFR3aXR0ZXJBdXRoUHJvdmlkZXIoKTtcbiAgICByZXR1cm4gc2lnbkluV2l0aFBvcHVwKHRoaXMuI2F1dGgsIHByb3ZpZGVyKSBhcyBQcm9taXNlPFJlc3VsdD5cbiAgfVxuXG4gIHNpZ25JbldpdGhHb29nbGUoKSB7XG4gICAgY29uc3QgcHJvdmlkZXIgPSBuZXcgR29vZ2xlQXV0aFByb3ZpZGVyKCk7XG4gICAgcmV0dXJuIHNpZ25JbldpdGhQb3B1cCh0aGlzLiNhdXRoLCBwcm92aWRlcik7XG4gIH1cblxuICBzaWduSW5XaXRoRW1haWxBbmRQYXNzd29yZChlbWFpbDogc3RyaW5nLCBwYXNzd29yZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHNpZ25JbldpdGhFbWFpbEFuZFBhc3N3b3JkKHRoaXMuI2F1dGgsIGVtYWlsLCBwYXNzd29yZCk7XG4gIH1cblxuICBjcmVhdGVVc2VyV2l0aEVtYWlsQW5kUGFzc3dvcmQoZW1haWw6IHN0cmluZywgcGFzc3dvcmQ6IHN0cmluZykge1xuICAgIHJldHVybiBjcmVhdGVVc2VyV2l0aEVtYWlsQW5kUGFzc3dvcmQodGhpcy4jYXV0aCwgZW1haWwsIHBhc3N3b3JkKTtcbiAgfVxuXG4gIHNpZ25JbldpdGhDdXN0b21Ub2tlbihjdXN0b21Ub2tlbjogc3RyaW5nKTogUHJvbWlzZTxSZXN1bHQ+IHtcbiAgICByZXR1cm4gc2lnbkluV2l0aEN1c3RvbVRva2VuKHRoaXMuI2F1dGgsIGN1c3RvbVRva2VuKSBhcyBQcm9taXNlPFJlc3VsdD47XG4gIH1cblxuICBzaWduT3V0KCkge1xuICAgIHJldHVybiBzaWduT3V0KHRoaXMuI2F1dGgpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RBdXRoU3RhdGUkKCkge1xuICByZXR1cm4gaW5qZWN0KEF1dGhTZXJ2aWNlKS5hdXRoJDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdEF1dGhTdGF0ZSgpIHtcbiAgcmV0dXJuIHRvU2lnbmFsKGluamVjdEF1dGhTdGF0ZSQoKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RVc2VySWQkKCk6IE9ic2VydmFibGU8c3RyaW5nIHwgbnVsbD4ge1xuICByZXR1cm4gaW5qZWN0KEF1dGhTZXJ2aWNlKS5hdXRoJC5waXBlKFxuICAgIG1hcChhdXRoID0+IGF1dGg/LnVpZCA/PyBudWxsKSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgIHNoYXJlUmVwbGF5KDEpLFxuICAgIHRha2VVbnRpbERlc3Ryb3llZCgpLFxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0VXNlcklkKCk6IFNpZ25hbDxzdHJpbmcgfCBudWxsPiB7XG4gIHJldHVybiB0b1NpZ25hbChpbmplY3RVc2VySWQkKCkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0VHdpdHRlcklkJCgpIHtcbiAgcmV0dXJuIGluamVjdChBdXRoU2VydmljZSkuYXV0aCQucGlwZShcbiAgICBtYXAoYXV0aCA9PiBhdXRoPy5wcm92aWRlckRhdGE/LlswXT8udWlkID8/IG51bGwpLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgc2hhcmVSZXBsYXkoMSksXG4gICAgdGFrZVVudGlsRGVzdHJveWVkKCksXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RDbGFpbSQ8VCA9IHN0cmluZz4oY2xhaW06IHN0cmluZyk6IE9ic2VydmFibGU8VD4ge1xuICByZXR1cm4gaW5qZWN0KEF1dGhTZXJ2aWNlKS5hdXRoJC5waXBlKFxuICAgIHN3aXRjaE1hcChhdXRoID0+IGF1dGggPyBhdXRoPy5nZXRJZFRva2VuUmVzdWx0KCkgOiBvZihudWxsKSksXG4gICAgbWFwKHRva2VuID0+IHRva2VuPy5jbGFpbXM/LltjbGFpbV0gPz8gZmFsc2UpLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgc2hhcmVSZXBsYXkoMSksXG4gICAgdGFrZVVudGlsRGVzdHJveWVkKCksXG4gICkgYXMgYW55O1xufSJdfQ==
62
+ export function injectClaim(claim) {
63
+ return toSignal(injectClaim$(claim));
64
+ }
65
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvQG5nLWF0b21pYy9jb21tb24vc3JjL2xpYi9zZXJ2aWNlcy9hdXRoL2F1dGguc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzRCxPQUFPLEVBQUUsUUFBUSxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDMUUsT0FBTyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUscUJBQXFCLEVBQUUsa0JBQWtCLEVBQUUsbUJBQW1CLEVBQUUsZUFBZSxFQUFFLE9BQU8sRUFBa0IsMEJBQTBCLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUMzTixPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ2hDLE9BQU8sRUFBYyxvQkFBb0IsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBMkJ6RixNQUFNLE9BQU8sV0FBVztJQUh4QjtRQUtFLFVBQUssR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDckIsVUFBSyxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDOUIsU0FBSSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFNUIsa0JBQWEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FDN0IsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQzVELEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFB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Q0FDZCxDQUFDO0FBQ1gsQ0FBQztBQUVELE1BQU0sVUFBVSxXQUFXLENBQWEsS0FBYTtJQUNuRCxPQUFPLFFBQVEsQ0FBQyxZQUFZLENBQUksS0FBSyxDQUFDLENBQUMsQ0FBQztBQUMxQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgU2lnbmFsLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRvU2lnbmFsLCB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBBdXRoLCBhdXRoU3RhdGUsIHNpZ25JbldpdGhDdXN0b21Ub2tlbiwgR29vZ2xlQXV0aFByb3ZpZGVyLCBUd2l0dGVyQXV0aFByb3ZpZGVyLCBzaWduSW5XaXRoUG9wdXAsIHNpZ25PdXQsIFVzZXJDcmVkZW50aWFsLCBzaWduSW5XaXRoRW1haWxBbmRQYXNzd29yZCwgY3JlYXRlVXNlcldpdGhFbWFpbEFuZFBhc3N3b3JkIH0gZnJvbSAnQGFuZ3VsYXIvZmlyZS9hdXRoJztcbmltcG9ydCB7IGdldCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgbWFwLCBvZiwgc2hhcmVSZXBsYXksIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFR3aXR0ZXJDcmVkZW50aWFsIHtcbiAgY29udGV4dDogc3RyaW5nO1xuICBkaXNwbGF5TmFtZTogc3RyaW5nO1xuICBlbWFpbDogc3RyaW5nO1xuICBlbWFpbFZlcmlmaWVkOiBib29sZWFuO1xuICBleHBpcmVzSW46IHN0cmluZztcbiAgZmVkZXJhdGVkSWQ6IHN0cmluZztcbiAgZnVsbE5hbWU6IHN0cmluZztcbiAgaWRUb2tlbjogc3RyaW5nO1xuICBraW5kOiAnaWRlbnRpdHl0b29sa2l0I1ZlcmlmeUFzc2VydGlvblJlc3BvbnNlJztcbiAgbG9jYWxJZDogc3RyaW5nO1xuICBvYXV0aEFjY2Vzc1Rva2VuOiBzdHJpbmc7XG4gIG9hdXRoVG9rZW5TZWNyZXQ6IHN0cmluZztcbiAgcGhvdG9Vcmw6IHN0cmluZztcbiAgcHJvdmlkZXJJZDogJ3R3aXR0ZXIuY29tJztcbiAgcmF3VXNlckluZm86IHN0cmluZztcbiAgcmVmcmVzaFRva2VuOiBzdHJpbmc7XG4gIHNjcmVlbk5hbWU6IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgUmVzdWx0ID0gVXNlckNyZWRlbnRpYWwgJiB7X3Rva2VuUmVzcG9uc2U6IFR3aXR0ZXJDcmVkZW50aWFsfTtcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQXV0aFNlcnZpY2Uge1xuXG4gICNhdXRoID0gaW5qZWN0KEF1dGgpO1xuICBhdXRoJCA9IGF1dGhTdGF0ZSh0aGlzLiNhdXRoKTtcbiAgYXV0aCA9IHRvU2lnbmFsKHRoaXMuYXV0aCQpO1xuXG4gIGN1c3RvbUNsYWltcyQgPSB0aGlzLmF1dGgkLnBpcGUoXG4gICAgc3dpdGNoTWFwKGF1dGggPT4gYXV0aCA/IGF1dGguZ2V0SWRUb2tlblJlc3VsdCgpIDogb2YobnVsbCkpLFxuICAgIG1hcCh0b2tlbiA9PiB0b2tlbj8uY2xhaW1zID8/IHt9KSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgIHNoYXJlUmVwbGF5KDEpLFxuICAgIHRha2VVbnRpbERlc3Ryb3llZCgpLFxuICApO1xuXG4gIHNpZ25JbldpdGhUd2l0dGVyKCk6IFByb21pc2U8UmVzdWx0PiB7XG4gICAgY29uc3QgcHJvdmlkZXIgPSBuZXcgVHdpdHRlckF1dGhQcm92aWRlcigpO1xuICAgIHJldHVybiBzaWduSW5XaXRoUG9wdXAodGhpcy4jYXV0aCwgcHJvdmlkZXIpIGFzIFByb21pc2U8UmVzdWx0PlxuICB9XG5cbiAgc2lnbkluV2l0aEdvb2dsZSgpIHtcbiAgICBjb25zdCBwcm92aWRlciA9IG5ldyBHb29nbGVBdXRoUHJvdmlkZXIoKTtcbiAgICByZXR1cm4gc2lnbkluV2l0aFBvcHVwKHRoaXMuI2F1dGgsIHByb3ZpZGVyKTtcbiAgfVxuXG4gIHNpZ25JbldpdGhFbWFpbEFuZFBhc3N3b3JkKGVtYWlsOiBzdHJpbmcsIHBhc3N3b3JkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gc2lnbkluV2l0aEVtYWlsQW5kUGFzc3dvcmQodGhpcy4jYXV0aCwgZW1haWwsIHBhc3N3b3JkKTtcbiAgfVxuXG4gIGNyZWF0ZVVzZXJXaXRoRW1haWxBbmRQYXNzd29yZChlbWFpbDogc3RyaW5nLCBwYXNzd29yZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGNyZWF0ZVVzZXJXaXRoRW1haWxBbmRQYXNzd29yZCh0aGlzLiNhdXRoLCBlbWFpbCwgcGFzc3dvcmQpO1xuICB9XG5cbiAgc2lnbkluV2l0aEN1c3RvbVRva2VuKGN1c3RvbVRva2VuOiBzdHJpbmcpOiBQcm9taXNlPFJlc3VsdD4ge1xuICAgIHJldHVybiBzaWduSW5XaXRoQ3VzdG9tVG9rZW4odGhpcy4jYXV0aCwgY3VzdG9tVG9rZW4pIGFzIFByb21pc2U8UmVzdWx0PjtcbiAgfVxuXG4gIHNpZ25PdXQoKSB7XG4gICAgcmV0dXJuIHNpZ25PdXQodGhpcy4jYXV0aCk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdEF1dGhTdGF0ZSQoKSB7XG4gIHJldHVybiBpbmplY3QoQXV0aFNlcnZpY2UpLmF1dGgkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0QXV0aFN0YXRlKCkge1xuICByZXR1cm4gdG9TaWduYWwoaW5qZWN0QXV0aFN0YXRlJCgpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdFVzZXJJZCQoKTogT2JzZXJ2YWJsZTxzdHJpbmcgfCBudWxsPiB7XG4gIHJldHVybiBpbmplY3QoQXV0aFNlcnZpY2UpLmF1dGgkLnBpcGUoXG4gICAgbWFwKGF1dGggPT4gYXV0aD8udWlkID8/IG51bGwpLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgc2hhcmVSZXBsYXkoMSksXG4gICAgdGFrZVVudGlsRGVzdHJveWVkKCksXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RVc2VySWQoKTogU2lnbmFsPHN0cmluZyB8IG51bGw+IHtcbiAgcmV0dXJuIHRvU2lnbmFsKGluamVjdFVzZXJJZCQoKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RUd2l0dGVySWQkKCkge1xuICByZXR1cm4gaW5qZWN0KEF1dGhTZXJ2aWNlKS5hdXRoJC5waXBlKFxuICAgIG1hcChhdXRoID0+IGF1dGg/LnByb3ZpZGVyRGF0YT8uWzBdPy51aWQgPz8gbnVsbCksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICBzaGFyZVJlcGxheSgxKSxcbiAgICB0YWtlVW50aWxEZXN0cm95ZWQoKSxcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdENsYWltJDxUID0gc3RyaW5nPihjbGFpbTogc3RyaW5nKTogT2JzZXJ2YWJsZTxUPiB7XG4gIHJldHVybiBpbmplY3QoQXV0aFNlcnZpY2UpLmN1c3RvbUNsYWltcyQucGlwZShcbiAgICBtYXAodG9rZW4gPT4gY2xhaW0gPyBnZXQodG9rZW4sIGNsYWltKSA6IHRva2VuKSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgIHNoYXJlUmVwbGF5KDEpLFxuICAgIHRha2VVbnRpbERlc3Ryb3llZCgpLFxuICApIGFzIGFueTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdENsYWltPFQgPSBzdHJpbmc+KGNsYWltOiBzdHJpbmcpOiBTaWduYWw8VD4ge1xuICByZXR1cm4gdG9TaWduYWwoaW5qZWN0Q2xhaW0kPFQ+KGNsYWltKSk7XG59XG4iXX0=
@@ -2,13 +2,15 @@ import * as i0 from '@angular/core';
2
2
  import { inject, Injectable } from '@angular/core';
3
3
  import { toSignal, takeUntilDestroyed } from '@angular/core/rxjs-interop';
4
4
  import { Auth, authState, TwitterAuthProvider, signInWithPopup, GoogleAuthProvider, signInWithEmailAndPassword, createUserWithEmailAndPassword, signInWithCustomToken, signOut } from '@angular/fire/auth';
5
- import { map, distinctUntilChanged, shareReplay, switchMap, of } from 'rxjs';
5
+ import { get } from 'lodash-es';
6
+ import { switchMap, of, map, distinctUntilChanged, shareReplay } from 'rxjs';
6
7
 
7
8
  class AuthService {
8
9
  constructor() {
9
10
  this.#auth = inject(Auth);
10
11
  this.auth$ = authState(this.#auth);
11
12
  this.auth = toSignal(this.auth$);
13
+ this.customClaims$ = this.auth$.pipe(switchMap(auth => auth ? auth.getIdTokenResult() : of(null)), map(token => token?.claims ?? {}), distinctUntilChanged(), shareReplay(1), takeUntilDestroyed());
12
14
  }
13
15
  #auth;
14
16
  signInWithTwitter() {
@@ -56,12 +58,15 @@ function injectTwitterId$() {
56
58
  return inject(AuthService).auth$.pipe(map(auth => auth?.providerData?.[0]?.uid ?? null), distinctUntilChanged(), shareReplay(1), takeUntilDestroyed());
57
59
  }
58
60
  function injectClaim$(claim) {
59
- return inject(AuthService).auth$.pipe(switchMap(auth => auth ? auth?.getIdTokenResult() : of(null)), map(token => token?.claims?.[claim] ?? false), distinctUntilChanged(), shareReplay(1), takeUntilDestroyed());
61
+ return inject(AuthService).customClaims$.pipe(map(token => claim ? get(token, claim) : token), distinctUntilChanged(), shareReplay(1), takeUntilDestroyed());
62
+ }
63
+ function injectClaim(claim) {
64
+ return toSignal(injectClaim$(claim));
60
65
  }
61
66
 
62
67
  /**
63
68
  * Generated bundle index. Do not edit.
64
69
  */
65
70
 
66
- export { AuthService, injectAuthState, injectAuthState$, injectClaim$, injectTwitterId$, injectUserId, injectUserId$ };
71
+ export { AuthService, injectAuthState, injectAuthState$, injectClaim, injectClaim$, injectTwitterId$, injectUserId, injectUserId$ };
67
72
  //# sourceMappingURL=ng-atomic-common-services-auth.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"ng-atomic-common-services-auth.mjs","sources":["../../../../../packages/@ng-atomic/common/src/lib/services/auth/auth.service.ts","../../../../../packages/@ng-atomic/common/src/lib/services/auth/ng-atomic-common-services-auth.ts"],"sourcesContent":["import { Injectable, Signal, inject } from '@angular/core';\nimport { toSignal, takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { Auth, authState, signInWithCustomToken, GoogleAuthProvider, TwitterAuthProvider, signInWithPopup, signOut, UserCredential, signInWithEmailAndPassword, createUserWithEmailAndPassword } from '@angular/fire/auth';\nimport { Observable, distinctUntilChanged, map, of, shareReplay, switchMap } from 'rxjs';\n\nexport interface TwitterCredential {\n context: string;\n displayName: string;\n email: string;\n emailVerified: boolean;\n expiresIn: string;\n federatedId: string;\n fullName: string;\n idToken: string;\n kind: 'identitytoolkit#VerifyAssertionResponse';\n localId: string;\n oauthAccessToken: string;\n oauthTokenSecret: string;\n photoUrl: string;\n providerId: 'twitter.com';\n rawUserInfo: string;\n refreshToken: string;\n screenName: string;\n}\n\nexport type Result = UserCredential & {_tokenResponse: TwitterCredential};\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AuthService {\n\n #auth = inject(Auth);\n auth$ = authState(this.#auth);\n auth = toSignal(this.auth$);\n\n signInWithTwitter(): Promise<Result> {\n const provider = new TwitterAuthProvider();\n return signInWithPopup(this.#auth, provider) as Promise<Result>\n }\n\n signInWithGoogle() {\n const provider = new GoogleAuthProvider();\n return signInWithPopup(this.#auth, provider);\n }\n\n signInWithEmailAndPassword(email: string, password: string) {\n return signInWithEmailAndPassword(this.#auth, email, password);\n }\n\n createUserWithEmailAndPassword(email: string, password: string) {\n return createUserWithEmailAndPassword(this.#auth, email, password);\n }\n\n signInWithCustomToken(customToken: string): Promise<Result> {\n return signInWithCustomToken(this.#auth, customToken) as Promise<Result>;\n }\n\n signOut() {\n return signOut(this.#auth);\n }\n}\n\nexport function injectAuthState$() {\n return inject(AuthService).auth$;\n}\n\nexport function injectAuthState() {\n return toSignal(injectAuthState$());\n}\n\nexport function injectUserId$(): Observable<string | null> {\n return inject(AuthService).auth$.pipe(\n map(auth => auth?.uid ?? null),\n distinctUntilChanged(),\n shareReplay(1),\n takeUntilDestroyed(),\n );\n}\n\nexport function injectUserId(): Signal<string | null> {\n return toSignal(injectUserId$());\n}\n\nexport function injectTwitterId$() {\n return inject(AuthService).auth$.pipe(\n map(auth => auth?.providerData?.[0]?.uid ?? null),\n distinctUntilChanged(),\n shareReplay(1),\n takeUntilDestroyed(),\n );\n}\n\nexport function injectClaim$<T = string>(claim: string): Observable<T> {\n return inject(AuthService).auth$.pipe(\n switchMap(auth => auth ? auth?.getIdTokenResult() : of(null)),\n map(token => token?.claims?.[claim] ?? false),\n distinctUntilChanged(),\n shareReplay(1),\n takeUntilDestroyed(),\n ) as any;\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ng-atomic-common-services-auth.mjs","sources":["../../../../../packages/@ng-atomic/common/src/lib/services/auth/auth.service.ts","../../../../../packages/@ng-atomic/common/src/lib/services/auth/ng-atomic-common-services-auth.ts"],"sourcesContent":["import { Injectable, Signal, inject } from '@angular/core';\nimport { toSignal, takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { Auth, authState, signInWithCustomToken, GoogleAuthProvider, TwitterAuthProvider, signInWithPopup, signOut, UserCredential, signInWithEmailAndPassword, createUserWithEmailAndPassword } from '@angular/fire/auth';\nimport { get } from 'lodash-es';\nimport { Observable, distinctUntilChanged, map, of, shareReplay, switchMap } from 'rxjs';\n\nexport interface TwitterCredential {\n context: string;\n displayName: string;\n email: string;\n emailVerified: boolean;\n expiresIn: string;\n federatedId: string;\n fullName: string;\n idToken: string;\n kind: 'identitytoolkit#VerifyAssertionResponse';\n localId: string;\n oauthAccessToken: string;\n oauthTokenSecret: string;\n photoUrl: string;\n providerId: 'twitter.com';\n rawUserInfo: string;\n refreshToken: string;\n screenName: string;\n}\n\nexport type Result = UserCredential & {_tokenResponse: TwitterCredential};\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AuthService {\n\n #auth = inject(Auth);\n auth$ = authState(this.#auth);\n auth = toSignal(this.auth$);\n\n customClaims$ = this.auth$.pipe(\n switchMap(auth => auth ? auth.getIdTokenResult() : of(null)),\n map(token => token?.claims ?? {}),\n distinctUntilChanged(),\n shareReplay(1),\n takeUntilDestroyed(),\n );\n\n signInWithTwitter(): Promise<Result> {\n const provider = new TwitterAuthProvider();\n return signInWithPopup(this.#auth, provider) as Promise<Result>\n }\n\n signInWithGoogle() {\n const provider = new GoogleAuthProvider();\n return signInWithPopup(this.#auth, provider);\n }\n\n signInWithEmailAndPassword(email: string, password: string) {\n return signInWithEmailAndPassword(this.#auth, email, password);\n }\n\n createUserWithEmailAndPassword(email: string, password: string) {\n return createUserWithEmailAndPassword(this.#auth, email, password);\n }\n\n signInWithCustomToken(customToken: string): Promise<Result> {\n return signInWithCustomToken(this.#auth, customToken) as Promise<Result>;\n }\n\n signOut() {\n return signOut(this.#auth);\n }\n}\n\nexport function injectAuthState$() {\n return inject(AuthService).auth$;\n}\n\nexport function injectAuthState() {\n return toSignal(injectAuthState$());\n}\n\nexport function injectUserId$(): Observable<string | null> {\n return inject(AuthService).auth$.pipe(\n map(auth => auth?.uid ?? null),\n distinctUntilChanged(),\n shareReplay(1),\n takeUntilDestroyed(),\n );\n}\n\nexport function injectUserId(): Signal<string | null> {\n return toSignal(injectUserId$());\n}\n\nexport function injectTwitterId$() {\n return inject(AuthService).auth$.pipe(\n map(auth => auth?.providerData?.[0]?.uid ?? null),\n distinctUntilChanged(),\n shareReplay(1),\n takeUntilDestroyed(),\n );\n}\n\nexport function injectClaim$<T = string>(claim: string): Observable<T> {\n return inject(AuthService).customClaims$.pipe(\n map(token => claim ? get(token, claim) : token),\n distinctUntilChanged(),\n shareReplay(1),\n takeUntilDestroyed(),\n ) as any;\n}\n\nexport function injectClaim<T = string>(claim: string): Signal<T> {\n return toSignal(injectClaim$<T>(claim));\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ng-atomic/common",
3
- "version": "17.9.0",
3
+ "version": "17.10.0",
4
4
  "license": "MIT",
5
5
  "peerDependencies": {
6
6
  "@angular/cdk": "^17.0.0",
@@ -12,7 +12,7 @@
12
12
  "@angular/router": "^17.0.0",
13
13
  "@ngrx/component-store": "^17.0.0",
14
14
  "@ngrx/entity": "^17.0.0",
15
- "@nx-ddd/core": "17.9.0",
15
+ "@nx-ddd/core": "17.10.0",
16
16
  "dayjs": "1.11.10",
17
17
  "flat": "^6.0.0",
18
18
  "lodash-es": "^4.17.15",
@@ -28,6 +28,7 @@ export declare class AuthService {
28
28
  #private;
29
29
  auth$: Observable<import("@firebase/auth").User>;
30
30
  auth: Signal<import("@firebase/auth").User>;
31
+ customClaims$: Observable<import("@firebase/auth").ParsedToken>;
31
32
  signInWithTwitter(): Promise<Result>;
32
33
  signInWithGoogle(): Promise<UserCredential>;
33
34
  signInWithEmailAndPassword(email: string, password: string): Promise<UserCredential>;
@@ -43,3 +44,4 @@ export declare function injectUserId$(): Observable<string | null>;
43
44
  export declare function injectUserId(): Signal<string | null>;
44
45
  export declare function injectTwitterId$(): Observable<string>;
45
46
  export declare function injectClaim$<T = string>(claim: string): Observable<T>;
47
+ export declare function injectClaim<T = string>(claim: string): Signal<T>;