@dereekb/dbx-firebase 8.1.2 → 8.4.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.
@@ -42,6 +42,7 @@ export declare class DbxFirebaseAuthService implements DbxAuthService {
42
42
  private _authRoleClaimsService?;
43
43
  readonly isAdminInAuthRoleSet: (authRoleSet: AuthRoleSet) => boolean;
44
44
  constructor(firebaseAuth: Auth, delegate: DbxFirebaseAuthServiceDelegate);
45
+ refreshToken(): Promise<IdTokenResult>;
45
46
  rolesForClaims<T extends AuthClaimsObject = AuthClaimsObject>(claims: AuthClaims<T>): AuthRoleSet;
46
47
  getAuthContextInfo(): Promise<Maybe<DbxFirebaseAuthContextInfo>>;
47
48
  loadAuthContextInfoForUser(user: Maybe<User>): Promise<Maybe<DbxFirebaseAuthContextInfo>>;
@@ -1,4 +1,4 @@
1
- import { FirestoreItemPageIterationInstance, FirestoreQueryConstraint } from '@dereekb/firebase';
1
+ import { DocumentDataWithId, FirestoreItemPageIterationInstance, FirestoreQueryConstraint } from '@dereekb/firebase';
2
2
  import { PageListLoadingState } from '@dereekb/rxjs';
3
3
  import { Maybe, ArrayOrValue } from '@dereekb/util';
4
4
  import { Observable } from 'rxjs';
@@ -8,7 +8,7 @@ import { Observable } from 'rxjs';
8
8
  export interface DbxFirebaseCollectionLoader<T = unknown> {
9
9
  readonly constraints$: Observable<Maybe<ArrayOrValue<FirestoreQueryConstraint>>>;
10
10
  readonly firestoreIteration$: Observable<FirestoreItemPageIterationInstance<T>>;
11
- readonly pageLoadingState$: Observable<PageListLoadingState<T>>;
11
+ readonly pageLoadingState$: Observable<PageListLoadingState<DocumentDataWithId<T>>>;
12
12
  /**
13
13
  * Maximum number of pages to load from the interation.
14
14
  *
@@ -1,6 +1,6 @@
1
1
  import { PageListLoadingState } from '@dereekb/rxjs';
2
2
  import { BehaviorSubject, Subject, Observable } from 'rxjs';
3
- import { FirebaseQueryItemAccumulator, FirestoreCollectionLike, FirestoreDocument, FirestoreItemPageIterationInstance, FirestoreItemPageIteratorFilter, FirestoreQueryConstraint, IterationQueryDocChangeWatcher } from '@dereekb/firebase';
3
+ import { DocumentDataWithId, FirebaseQueryItemAccumulator, FirestoreCollectionLike, FirestoreDocument, FirestoreItemPageIterationInstance, FirestoreItemPageIteratorFilter, FirestoreQueryConstraint, IterationQueryDocChangeWatcher } from '@dereekb/firebase';
4
4
  import { ArrayOrValue, Destroyable, Initialized, Maybe } from '@dereekb/util';
5
5
  import { DbxFirebaseCollectionLoader } from './collection.loader';
6
6
  export interface DbxFirebaseCollectionLoaderInstanceInitConfig<T, D extends FirestoreDocument<T> = FirestoreDocument<T>> {
@@ -31,7 +31,7 @@ export declare class DbxFirebaseCollectionLoaderInstance<T = unknown, D extends
31
31
  readonly firestoreIteration$: Observable<FirestoreItemPageIterationInstance<T>>;
32
32
  readonly queryChangeWatcher$: Observable<IterationQueryDocChangeWatcher<T>>;
33
33
  readonly accumulator$: Observable<FirebaseQueryItemAccumulator<T>>;
34
- readonly pageLoadingState$: Observable<PageListLoadingState<T>>;
34
+ readonly pageLoadingState$: Observable<PageListLoadingState<DocumentDataWithId<T>>>;
35
35
  constructor(_initConfig?: DbxFirebaseCollectionLoaderInstanceInitConfig<T, D> | undefined);
36
36
  init(): void;
37
37
  destroy(): void;
@@ -0,0 +1,63 @@
1
+ import { DocumentDataWithId, FirestoreModelKey, DocumentReference, FirestoreDocument, FirestoreModelId, DocumentSnapshot } from '@dereekb/firebase';
2
+ import { ObservableOrValue, PageListLoadingState } from '@dereekb/rxjs';
3
+ import { Maybe, ArrayOrValue } from '@dereekb/util';
4
+ import { Observable } from 'rxjs';
5
+ /**
6
+ * Abstract type that loads document snapshots from keys, refs, or documents.
7
+ */
8
+ export interface DbxLimitedFirebaseDocumentLoader<T = unknown, D extends FirestoreDocument<T> = FirestoreDocument<T>> {
9
+ /**
10
+ * Keys of the documents
11
+ */
12
+ readonly keys$: Observable<FirestoreModelKey[]>;
13
+ /**
14
+ * Refs of the documents
15
+ */
16
+ readonly refs$: Observable<DocumentReference<T>[]>;
17
+ /**
18
+ * Ids of the documents
19
+ */
20
+ readonly ids$: Observable<FirestoreModelId[]>;
21
+ /**
22
+ * Documents to load.
23
+ */
24
+ readonly documents$: Observable<D[]>;
25
+ /**
26
+ * Snapshots of the documents
27
+ */
28
+ readonly snapshots$: Observable<DocumentSnapshot<T>[]>;
29
+ /**
30
+ * Data from the documents.
31
+ */
32
+ readonly data$: Observable<DocumentDataWithId<T>[]>;
33
+ /**
34
+ * Loading state for the document data.
35
+ */
36
+ readonly pageLoadingState$: Observable<PageListLoadingState<DocumentDataWithId<T>>>;
37
+ /**
38
+ * Sets the keys of the models to load.
39
+ *
40
+ * @param constraints
41
+ */
42
+ setKeys(keys: Maybe<ObservableOrValue<ArrayOrValue<FirestoreModelKey>>>): void;
43
+ /**
44
+ * Sets the document references to load.
45
+ *
46
+ * @param constraints
47
+ */
48
+ setRefs(refs: Maybe<ObservableOrValue<ArrayOrValue<DocumentReference<T>>>>): void;
49
+ /**
50
+ * Sets the documents to load from.
51
+ *
52
+ * @param constraints
53
+ */
54
+ setDocuments(docs: Maybe<ObservableOrValue<ArrayOrValue<D>>>): void;
55
+ }
56
+ export interface DbxFirebaseDocumentLoader<T = unknown, D extends FirestoreDocument<T> = FirestoreDocument<T>> extends DbxLimitedFirebaseDocumentLoader<T, D> {
57
+ /**
58
+ * Sets the ids of the models to load.
59
+ *
60
+ * @param constraints
61
+ */
62
+ setIds(ids: Maybe<ObservableOrValue<ArrayOrValue<FirestoreModelId>>>): void;
63
+ }
@@ -0,0 +1,38 @@
1
+ import { ObservableOrValue, PageListLoadingState, SubscriptionObject } from '@dereekb/rxjs';
2
+ import { BehaviorSubject, Subject, Observable } from 'rxjs';
3
+ import { DocumentDataWithId, DocumentReference, DocumentSnapshot, FirestoreDocument, FirestoreDocumentAccessor, FirestoreModelKey, LimitedFirestoreDocumentAccessor } from '@dereekb/firebase';
4
+ import { ArrayOrValue, Destroyable, Maybe } from '@dereekb/util';
5
+ import { DbxFirebaseDocumentLoader, DbxLimitedFirebaseDocumentLoader } from './document.loader';
6
+ export interface DbxFirebaseDocumentLoaderInstanceInitConfig<T, D extends FirestoreDocument<T> = FirestoreDocument<T>, A extends LimitedFirestoreDocumentAccessor<T, D> = LimitedFirestoreDocumentAccessor<T, D>> {
7
+ readonly accessor: A;
8
+ }
9
+ /**
10
+ * DbxLimitedFirebaseDocumentLoader implementation within an instance.
11
+ */
12
+ export declare class DbxLimitedFirebaseDocumentLoaderInstance<T = unknown, D extends FirestoreDocument<T> = FirestoreDocument<T>, A extends LimitedFirestoreDocumentAccessor<T, D> = LimitedFirestoreDocumentAccessor<T, D>> implements DbxLimitedFirebaseDocumentLoader<T>, Destroyable {
13
+ private readonly _initConfig;
14
+ readonly accessor: A;
15
+ protected readonly _documents: BehaviorSubject<Maybe<D[]>>;
16
+ protected readonly _restart: Subject<void>;
17
+ protected readonly _sub: SubscriptionObject;
18
+ readonly documents$: Observable<D[]>;
19
+ readonly keys$: Observable<string[]>;
20
+ readonly ids$: Observable<string[]>;
21
+ readonly refs$: Observable<DocumentReference<unknown>[]>;
22
+ readonly snapshots$: Observable<DocumentSnapshot<T>[]>;
23
+ readonly data$: Observable<DocumentDataWithId<T>[]>;
24
+ readonly pageLoadingState$: Observable<PageListLoadingState<DocumentDataWithId<T>>>;
25
+ constructor(_initConfig: DbxFirebaseDocumentLoaderInstanceInitConfig<T, D, A>);
26
+ destroy(): void;
27
+ restart(): void;
28
+ setKeys(keys: Maybe<ObservableOrValue<ArrayOrValue<FirestoreModelKey>>>): void;
29
+ setRefs(refs: Maybe<ObservableOrValue<ArrayOrValue<DocumentReference<T>>>>): void;
30
+ setDocuments(docs: Maybe<ObservableOrValue<ArrayOrValue<D>>>): void;
31
+ }
32
+ export declare function dbxLimitedFirebaseDocumentLoaderInstance<T, D extends FirestoreDocument<T> = FirestoreDocument<T>, A extends LimitedFirestoreDocumentAccessor<T, D> = LimitedFirestoreDocumentAccessor<T, D>>(config: DbxFirebaseDocumentLoaderInstanceInitConfig<T, D, A>): DbxLimitedFirebaseDocumentLoaderInstance<T, D, A>;
33
+ export declare function dbxLimitedFirebaseDocumentLoaderInstanceWithAccessor<T, D extends FirestoreDocument<T> = FirestoreDocument<T>, A extends LimitedFirestoreDocumentAccessor<T, D> = LimitedFirestoreDocumentAccessor<T, D>>(accessor: A): DbxLimitedFirebaseDocumentLoaderInstance<T, D, A>;
34
+ export declare class DbxFirebaseDocumentLoaderInstance<T = unknown, D extends FirestoreDocument<T> = FirestoreDocument<T>, A extends FirestoreDocumentAccessor<T, D> = FirestoreDocumentAccessor<T, D>> extends DbxLimitedFirebaseDocumentLoaderInstance<T, D, A> implements DbxFirebaseDocumentLoader<T>, Destroyable {
35
+ setIds(ids: Maybe<ObservableOrValue<ArrayOrValue<FirestoreModelKey>>>): void;
36
+ }
37
+ export declare function dbxFirebaseDocumentLoaderInstance<T, D extends FirestoreDocument<T> = FirestoreDocument<T>, A extends FirestoreDocumentAccessor<T, D> = FirestoreDocumentAccessor<T, D>>(config: DbxFirebaseDocumentLoaderInstanceInitConfig<T, D, A>): DbxFirebaseDocumentLoaderInstance<T, D, A>;
38
+ export declare function dbxFirebaseDocumentLoaderInstanceWithAccessor<T, D extends FirestoreDocument<T> = FirestoreDocument<T>, A extends FirestoreDocumentAccessor<T, D> = FirestoreDocumentAccessor<T, D>>(accessor: A): DbxFirebaseDocumentLoaderInstance<T, D, A>;
@@ -1,2 +1,4 @@
1
1
  export * from './collection.loader.instance';
2
2
  export * from './collection.loader';
3
+ export * from './document.loader.instance';
4
+ export * from './document.loader';
@@ -1,5 +1,5 @@
1
1
  import { Observable, Subscription } from 'rxjs';
2
- import { FirebaseQueryItemAccumulator, FirestoreCollectionLike, FirestoreDocument, FirestoreItemPageIterationInstance, FirestoreQueryConstraint, IterationQueryDocChangeWatcher } from '@dereekb/firebase';
2
+ import { FirebaseQueryItemAccumulator, FirestoreCollectionLike, FirestoreDocument, FirestoreItemPageIterationInstance, FirestoreQueryConstraint, IterationQueryDocChangeWatcher, DocumentDataWithId } from '@dereekb/firebase';
3
3
  import { ObservableOrValue, PageListLoadingState } from '@dereekb/rxjs';
4
4
  import { ArrayOrValue, Maybe } from '@dereekb/util';
5
5
  import { LockSetComponentStore } from '@dereekb/dbx-core';
@@ -11,7 +11,7 @@ export interface DbxFirebaseCollectionStore<T, D extends FirestoreDocument<T> =
11
11
  readonly firestoreIteration$: Observable<FirestoreItemPageIterationInstance<T>>;
12
12
  readonly queryChangeWatcher$: Observable<IterationQueryDocChangeWatcher<T>>;
13
13
  readonly accumulator$: Observable<FirebaseQueryItemAccumulator<T>>;
14
- readonly pageLoadingState$: Observable<PageListLoadingState<T>>;
14
+ readonly pageLoadingState$: Observable<PageListLoadingState<DocumentDataWithId<T>>>;
15
15
  setMaxPages(observableOrValue: ObservableOrValue<Maybe<number>>): Subscription;
16
16
  setItemsPerPage(observableOrValue: ObservableOrValue<Maybe<number>>): Subscription;
17
17
  setConstraints(observableOrValue: ObservableOrValue<Maybe<ArrayOrValue<FirestoreQueryConstraint>>>): Subscription;
@@ -40,7 +40,7 @@ export declare class AbstractDbxFirebaseCollectionStore<T, D extends FirestoreDo
40
40
  readonly firestoreIteration$: Observable<FirestoreItemPageIterationInstance<T>>;
41
41
  readonly queryChangeWatcher$: Observable<IterationQueryDocChangeWatcher<T>>;
42
42
  readonly accumulator$: Observable<FirebaseQueryItemAccumulator<T>>;
43
- readonly pageLoadingState$: Observable<PageListLoadingState<T>>;
43
+ readonly pageLoadingState$: Observable<PageListLoadingState<DocumentDataWithId<T>>>;
44
44
  readonly setFirestoreCollection: (() => void) | ((observableOrValue: FirestoreCollectionLike<T, D, import("@dereekb/firebase").LimitedFirestoreDocumentAccessor<T, D>> | Observable<FirestoreCollectionLike<T, D, import("@dereekb/firebase").LimitedFirestoreDocumentAccessor<T, D>> | null | undefined> | null | undefined) => Subscription);
45
45
  static ɵfac: i0.ɵɵFactoryDeclaration<AbstractDbxFirebaseCollectionStore<any, any, any>, never>;
46
46
  static ɵprov: i0.ɵɵInjectableDeclaration<AbstractDbxFirebaseCollectionStore<any, any, any>>;
@@ -9,7 +9,7 @@ import * as i0 from "@angular/core";
9
9
  export declare abstract class DbxFirebaseCollectionStoreDirective<T = unknown, D extends FirestoreDocument<T> = FirestoreDocument<T>, S extends DbxFirebaseCollectionStore<T, D> = DbxFirebaseCollectionStore<T, D>> {
10
10
  readonly store: S;
11
11
  constructor(store: S);
12
- readonly pageLoadingState$: import("rxjs").Observable<import("../../../../../../dist/packages/rxjs/src").PageListLoadingState<T>>;
12
+ readonly pageLoadingState$: import("rxjs").Observable<import("../../../../../../dist/packages/rxjs/src").PageListLoadingState<import("@dereekb/firebase").DocumentDataWithId<T>>>;
13
13
  set maxPages(maxPages: Maybe<number>);
14
14
  set itemsPerPage(itemsPerPage: Maybe<number>);
15
15
  set constraints(constraints: Maybe<ArrayOrValue<FirestoreQueryConstraint>>);
@@ -3,22 +3,34 @@ import { OnDestroy, OnInit } from '@angular/core';
3
3
  import { DbxRouterService, AbstractSubscriptionDirective } from '@dereekb/dbx-core';
4
4
  import { DbxFirebaseDocumentStoreDirective } from './store.document.directive';
5
5
  import { Maybe, ModelKey } from '@dereekb/util';
6
+ import { MaybeObservableOrValueGetter, SwitchMapToDefaultFilterFunction } from '@dereekb/rxjs';
6
7
  import * as i0 from "@angular/core";
7
8
  export declare const DBX_FIREBASE_ROUTER_SYNC_DEFAULT_ID_PARAM_KEY = "id";
9
+ export declare const DBX_FIREBASE_ROUTER_SYNC_USE_DEFAULT_PARAM_VALUE = "0";
8
10
  /**
9
11
  * Used for synchronizing the document store id to the param of the route.
10
12
  */
11
13
  export declare class DbxFirebaseDocumentStoreRouteIdDirective<T = unknown> extends AbstractSubscriptionDirective implements OnInit, OnDestroy {
12
14
  readonly dbxFirebaseDocumentStoreDirective: DbxFirebaseDocumentStoreDirective<T>;
13
15
  readonly dbxRouterService: DbxRouterService;
14
- private _idParamKey;
16
+ private _paramReader;
17
+ private _paramRedirect;
18
+ private _useDefaultParam;
19
+ private _useDefaultParam$;
15
20
  readonly idParamKey$: Observable<string>;
16
21
  readonly idFromParams$: Observable<Maybe<ModelKey>>;
22
+ readonly id$: Observable<Maybe<ModelKey>>;
17
23
  constructor(dbxFirebaseDocumentStoreDirective: DbxFirebaseDocumentStoreDirective<T>, dbxRouterService: DbxRouterService);
18
24
  ngOnInit(): void;
19
25
  ngOnDestroy(): void;
20
26
  get idParam(): string;
21
27
  set idParam(idParam: string);
28
+ set dbxFirebaseDocumentStoreRouteIdDefault(defaultValue: MaybeObservableOrValueGetter<ModelKey>);
29
+ /**
30
+ * Whether or not to enable the redirection. Is enabled by default.
31
+ */
32
+ set dbxFirebaseDocumentStoreRouteIdDefaultRedirect(redirect: Maybe<boolean> | '');
33
+ set dbxFirebaseDocumentStoreRouteIdDefaultDecision(decider: string | SwitchMapToDefaultFilterFunction<ModelKey>);
22
34
  static ɵfac: i0.ɵɵFactoryDeclaration<DbxFirebaseDocumentStoreRouteIdDirective<any>, [{ host: true; }, null]>;
23
- static ɵdir: i0.ɵɵDirectiveDeclaration<DbxFirebaseDocumentStoreRouteIdDirective<any>, "[dbxFirebaseDocumentStoreRouteId]", never, { "idParam": "dbxFirebaseDocumentStoreRouteId"; }, {}, never>;
35
+ static ɵdir: i0.ɵɵDirectiveDeclaration<DbxFirebaseDocumentStoreRouteIdDirective<any>, "[dbxFirebaseDocumentStoreRouteId]", never, { "idParam": "dbxFirebaseDocumentStoreRouteId"; "dbxFirebaseDocumentStoreRouteIdDefault": "dbxFirebaseDocumentStoreRouteIdDefault"; "dbxFirebaseDocumentStoreRouteIdDefaultRedirect": "dbxFirebaseDocumentStoreRouteIdDefaultRedirect"; "dbxFirebaseDocumentStoreRouteIdDefaultDecision": "dbxFirebaseDocumentStoreRouteIdDefaultDecision"; }, {}, never>;
24
36
  }
package/package.json CHANGED
@@ -1,18 +1,18 @@
1
1
  {
2
2
  "name": "@dereekb/dbx-firebase",
3
- "version": "8.1.2",
3
+ "version": "8.4.0",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0",
7
- "@dereekb/util": "8.1.2",
7
+ "@dereekb/util": "8.4.0",
8
8
  "firebase": "^9.8.0",
9
9
  "rxjs": "^7.0.0",
10
10
  "@angular/fire": "^7.4.1",
11
- "@dereekb/firebase": "8.1.2",
12
- "@dereekb/dbx-core": "8.1.2",
11
+ "@dereekb/firebase": "8.4.0",
12
+ "@dereekb/dbx-core": "8.4.0",
13
13
  "@angular/material": "^13.0.0",
14
- "@dereekb/dbx-web": "8.1.2",
15
- "@dereekb/dbx-form": "8.1.2"
14
+ "@dereekb/dbx-web": "8.4.0",
15
+ "@dereekb/dbx-form": "8.4.0"
16
16
  },
17
17
  "dependencies": {
18
18
  "tslib": "^2.3.0"