@dereekb/dbx-firebase 5.0.1 → 5.2.1

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.
Files changed (38) hide show
  1. package/esm2020/lib/auth/appcheck/appcheck.interceptor.mjs +80 -0
  2. package/esm2020/lib/auth/appcheck/appcheck.mjs +11 -0
  3. package/esm2020/lib/auth/appcheck/index.mjs +3 -0
  4. package/esm2020/lib/auth/index.mjs +2 -1
  5. package/esm2020/lib/auth/login/login.service.mjs +1 -1
  6. package/esm2020/lib/firebase/appcheck.mjs +2 -0
  7. package/esm2020/lib/firebase/firebase.module.mjs +102 -11
  8. package/esm2020/lib/firebase/index.mjs +2 -1
  9. package/esm2020/lib/firebase/options.mjs +3 -2
  10. package/esm2020/lib/model/loader/collection.loader.instance.mjs +1 -1
  11. package/esm2020/lib/model/store/index.mjs +2 -1
  12. package/esm2020/lib/model/store/store.collection.directive.mjs +1 -1
  13. package/esm2020/lib/model/store/store.collection.mjs +1 -1
  14. package/esm2020/lib/model/store/store.subcollection.directive.mjs +30 -0
  15. package/esm2020/lib/model/store/store.subcollection.document.mjs +21 -4
  16. package/esm2020/lib/model/store/store.subcollection.mjs +51 -9
  17. package/esm2020/lib/model/store/store.subcollection.rxjs.mjs +3 -22
  18. package/fesm2015/dereekb-dbx-firebase.mjs +296 -48
  19. package/fesm2015/dereekb-dbx-firebase.mjs.map +1 -1
  20. package/fesm2020/dereekb-dbx-firebase.mjs +288 -48
  21. package/fesm2020/dereekb-dbx-firebase.mjs.map +1 -1
  22. package/lib/auth/appcheck/appcheck.d.ts +8 -0
  23. package/lib/auth/appcheck/appcheck.interceptor.d.ts +19 -0
  24. package/lib/auth/appcheck/index.d.ts +2 -0
  25. package/lib/auth/index.d.ts +1 -0
  26. package/lib/firebase/appcheck.d.ts +21 -0
  27. package/lib/firebase/firebase.module.d.ts +20 -10
  28. package/lib/firebase/index.d.ts +1 -0
  29. package/lib/firebase/options.d.ts +7 -0
  30. package/lib/model/loader/collection.loader.instance.d.ts +8 -8
  31. package/lib/model/store/index.d.ts +1 -0
  32. package/lib/model/store/store.collection.d.ts +7 -7
  33. package/lib/model/store/store.collection.directive.d.ts +1 -1
  34. package/lib/model/store/store.subcollection.d.ts +29 -9
  35. package/lib/model/store/store.subcollection.directive.d.ts +23 -0
  36. package/lib/model/store/store.subcollection.document.d.ts +9 -8
  37. package/lib/model/store/store.subcollection.rxjs.d.ts +7 -6
  38. package/package.json +8 -7
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Enables debug token generation for AppCheck by setting FIREBASE_APPCHECK_DEBUG_TOKEN in the browser's self/window.
3
+ *
4
+ * https://firebase.google.com/docs/app-check/web/debug-provider
5
+ *
6
+ * @param enable
7
+ */
8
+ export declare function enableAppCheckDebugTokenGeneration(enable?: boolean): void;
@@ -0,0 +1,19 @@
1
+ import { DbxFirebaseOptions } from '../../firebase/options';
2
+ import { HttpInterceptor, HttpRequest, HttpHandler, HttpEvent } from '@angular/common/http';
3
+ import { Observable } from 'rxjs';
4
+ import { AppCheck } from '@angular/fire/app-check';
5
+ import * as i0 from "@angular/core";
6
+ /**
7
+ * HTTP Interceptor that sets the X-Firebase-AppCheck for any requests to the routes configured in DbxFirebaseOptions.
8
+ */
9
+ export declare class DbxFirebaseAppCheckHttpInterceptor implements HttpInterceptor {
10
+ private dbxFirebaseOptions;
11
+ private appCheck;
12
+ private _isEnabled;
13
+ private _appCheckRoutes;
14
+ constructor(dbxFirebaseOptions: DbxFirebaseOptions, appCheck: AppCheck);
15
+ intercept(req: HttpRequest<unknown>, next: HttpHandler): Observable<HttpEvent<unknown>>;
16
+ private matchesAnyRoute;
17
+ static ɵfac: i0.ɵɵFactoryDeclaration<DbxFirebaseAppCheckHttpInterceptor, never>;
18
+ static ɵprov: i0.ɵɵInjectableDeclaration<DbxFirebaseAppCheckHttpInterceptor>;
19
+ }
@@ -0,0 +1,2 @@
1
+ export * from './appcheck';
2
+ export * from './appcheck.interceptor';
@@ -1,3 +1,4 @@
1
+ export * from './appcheck';
1
2
  export * from './login';
2
3
  export * from './service';
3
4
  export * from './firebase.auth.module';
@@ -0,0 +1,21 @@
1
+ import { AppCheckOptions } from '@firebase/app-check';
2
+ export interface DbxFirebaseAppCheckConfig extends Partial<Omit<AppCheckOptions, 'provider'>> {
3
+ reCaptchaV3: string;
4
+ /**
5
+ * Whether or not to enable AppCheck debug tokens. AppCheck tokens are only printed into the console, and more actions must be taken.
6
+ * See https://firebase.google.com/docs/app-check/web/debug-provider for more info.
7
+ *
8
+ * Debug tokens are only generated when emulators are disabled, and allowDebugTokens is true.
9
+ */
10
+ allowDebugTokens?: boolean;
11
+ /**
12
+ * If true, disables AppCheck initialization for this app.
13
+ */
14
+ disabled?: boolean;
15
+ /**
16
+ * List of routes that app check is authorized to hit.
17
+ *
18
+ * If not defined, /api/* allowed by default.
19
+ */
20
+ appCheckRoutes?: string[];
21
+ }
@@ -1,11 +1,12 @@
1
- import { ModuleWithProviders, InjectionToken } from '@angular/core';
1
+ import { ModuleWithProviders } from '@angular/core';
2
2
  import { FirebaseOptions } from 'firebase/app';
3
3
  import * as i0 from "@angular/core";
4
4
  import * as i1 from "@angular/fire/firestore";
5
- import * as i2 from "@angular/fire/auth";
6
- import * as i3 from "@angular/fire/storage";
7
- import * as i4 from "@angular/fire/functions";
8
- import * as i5 from "@angular/fire/app";
5
+ import * as i2 from "@angular/fire/app-check";
6
+ import * as i3 from "@angular/fire/auth";
7
+ import * as i4 from "@angular/fire/storage";
8
+ import * as i5 from "@angular/fire/functions";
9
+ import * as i6 from "@angular/fire/app";
9
10
  /**
10
11
  * Default firebase firestore provider module.
11
12
  */
@@ -14,12 +15,22 @@ export declare class DbxFirebaseDefaultFirestoreProviderModule {
14
15
  static ɵmod: i0.ɵɵNgModuleDeclaration<DbxFirebaseDefaultFirestoreProviderModule, never, [typeof i1.FirestoreModule], never>;
15
16
  static ɵinj: i0.ɵɵInjectorDeclaration<DbxFirebaseDefaultFirestoreProviderModule>;
16
17
  }
18
+ /**
19
+ * Default firebase app check provider module.
20
+ *
21
+ * Also configures the DbxFirebaseAppCheckHttpInterceptor with HTTP_INTERCEPTORS in order for appCheck to be appended to requests to the api.
22
+ */
23
+ export declare class DbxFirebaseDefaultAppCheckProviderModule {
24
+ static ɵfac: i0.ɵɵFactoryDeclaration<DbxFirebaseDefaultAppCheckProviderModule, never>;
25
+ static ɵmod: i0.ɵɵNgModuleDeclaration<DbxFirebaseDefaultAppCheckProviderModule, never, [typeof i2.AppCheckModule], never>;
26
+ static ɵinj: i0.ɵɵInjectorDeclaration<DbxFirebaseDefaultAppCheckProviderModule>;
27
+ }
17
28
  /**
18
29
  * Default firebase auth provider module.
19
30
  */
20
31
  export declare class DbxFirebaseDefaultAuthProviderModule {
21
32
  static ɵfac: i0.ɵɵFactoryDeclaration<DbxFirebaseDefaultAuthProviderModule, never>;
22
- static ɵmod: i0.ɵɵNgModuleDeclaration<DbxFirebaseDefaultAuthProviderModule, never, [typeof i2.AuthModule], never>;
33
+ static ɵmod: i0.ɵɵNgModuleDeclaration<DbxFirebaseDefaultAuthProviderModule, never, [typeof i3.AuthModule], never>;
23
34
  static ɵinj: i0.ɵɵInjectorDeclaration<DbxFirebaseDefaultAuthProviderModule>;
24
35
  }
25
36
  /**
@@ -27,7 +38,7 @@ export declare class DbxFirebaseDefaultAuthProviderModule {
27
38
  */
28
39
  export declare class DbxFirebaseDefaultStorageProviderModule {
29
40
  static ɵfac: i0.ɵɵFactoryDeclaration<DbxFirebaseDefaultStorageProviderModule, never>;
30
- static ɵmod: i0.ɵɵNgModuleDeclaration<DbxFirebaseDefaultStorageProviderModule, never, [typeof i3.StorageModule], never>;
41
+ static ɵmod: i0.ɵɵNgModuleDeclaration<DbxFirebaseDefaultStorageProviderModule, never, [typeof i4.StorageModule], never>;
31
42
  static ɵinj: i0.ɵɵInjectorDeclaration<DbxFirebaseDefaultStorageProviderModule>;
32
43
  }
33
44
  /**
@@ -35,16 +46,15 @@ export declare class DbxFirebaseDefaultStorageProviderModule {
35
46
  */
36
47
  export declare class DbxFirebaseDefaultFunctionsProviderModule {
37
48
  static ɵfac: i0.ɵɵFactoryDeclaration<DbxFirebaseDefaultFunctionsProviderModule, never>;
38
- static ɵmod: i0.ɵɵNgModuleDeclaration<DbxFirebaseDefaultFunctionsProviderModule, never, [typeof i4.FunctionsModule], never>;
49
+ static ɵmod: i0.ɵɵNgModuleDeclaration<DbxFirebaseDefaultFunctionsProviderModule, never, [typeof i5.FunctionsModule], never>;
39
50
  static ɵinj: i0.ɵɵInjectorDeclaration<DbxFirebaseDefaultFunctionsProviderModule>;
40
51
  }
41
- export declare const DBX_FIREBASE_OPTIONS_TOKEN: InjectionToken<unknown>;
42
52
  /**
43
53
  * Default provider module.
44
54
  */
45
55
  export declare class DbxFirebaseDefaultFirebaseProvidersModule {
46
56
  static forRoot(firebaseOptions: FirebaseOptions): ModuleWithProviders<DbxFirebaseDefaultFirebaseProvidersModule>;
47
57
  static ɵfac: i0.ɵɵFactoryDeclaration<DbxFirebaseDefaultFirebaseProvidersModule, never>;
48
- static ɵmod: i0.ɵɵNgModuleDeclaration<DbxFirebaseDefaultFirebaseProvidersModule, never, [typeof i5.FirebaseAppModule, typeof DbxFirebaseDefaultFirestoreProviderModule, typeof DbxFirebaseDefaultAuthProviderModule, typeof DbxFirebaseDefaultStorageProviderModule, typeof DbxFirebaseDefaultFunctionsProviderModule], never>;
58
+ static ɵmod: i0.ɵɵNgModuleDeclaration<DbxFirebaseDefaultFirebaseProvidersModule, never, [typeof i6.FirebaseAppModule, typeof DbxFirebaseDefaultAppCheckProviderModule, typeof DbxFirebaseDefaultFirestoreProviderModule, typeof DbxFirebaseDefaultAuthProviderModule, typeof DbxFirebaseDefaultStorageProviderModule, typeof DbxFirebaseDefaultFunctionsProviderModule], never>;
49
59
  static ɵinj: i0.ɵɵInjectorDeclaration<DbxFirebaseDefaultFirebaseProvidersModule>;
50
60
  }
@@ -1,3 +1,4 @@
1
+ export * from './appcheck';
1
2
  export * from './emulators';
2
3
  export * from './firebase.module';
3
4
  export * from './firebase.emulator.module';
@@ -1,8 +1,15 @@
1
+ import { InjectionToken } from '@angular/core';
1
2
  import { FirebaseOptions } from 'firebase/app';
2
3
  import { DbxFirebaseLoginModuleRootConfig } from '../auth/login/firebase.login.module';
4
+ import { DbxFirebaseAppCheckConfig } from './appcheck';
3
5
  import { DbxFirebaseEmulatorsConfig } from './emulators';
6
+ export declare const DBX_FIREBASE_OPTIONS_TOKEN: InjectionToken<unknown>;
4
7
  export interface DbxFirebaseOptions extends FirebaseOptions, Pick<DbxFirebaseLoginModuleRootConfig, 'enabledLoginMethods'> {
5
8
  emulators: DbxFirebaseEmulatorsConfig;
9
+ /**
10
+ * Firebase AppCheck handling
11
+ */
12
+ appCheck?: DbxFirebaseAppCheckConfig;
6
13
  /**
7
14
  * Passed to the Functions initialization to set the domain to use when sending requests.
8
15
  */
@@ -1,10 +1,10 @@
1
1
  import { PageListLoadingState } from '@dereekb/rxjs';
2
2
  import { BehaviorSubject, Subject, Observable } from 'rxjs';
3
- import { FirebaseQueryItemAccumulator, FirestoreCollection, FirestoreDocument, FirestoreItemPageIterationInstance, FirestoreItemPageIteratorFilter, FirestoreQueryConstraint, IterationQueryDocChangeWatcher } from '@dereekb/firebase';
3
+ import { 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>> {
7
- collection?: Maybe<FirestoreCollection<T, D>>;
7
+ collection?: Maybe<FirestoreCollectionLike<T, D>>;
8
8
  maxPages?: Maybe<number>;
9
9
  itemsPerPage?: Maybe<number>;
10
10
  constraints?: Maybe<ArrayOrValue<FirestoreQueryConstraint>>;
@@ -19,13 +19,13 @@ export interface DbxFirebaseCollectionLoaderInstanceData<T, D extends FirestoreD
19
19
  */
20
20
  export declare class DbxFirebaseCollectionLoaderInstance<T = unknown, D extends FirestoreDocument<T> = FirestoreDocument<T>> implements DbxFirebaseCollectionLoader<T>, DbxFirebaseCollectionLoaderInstanceData<T, D>, Initialized, Destroyable {
21
21
  private readonly _initConfig?;
22
- protected readonly _collection: BehaviorSubject<Maybe<FirestoreCollection<T, D>>>;
22
+ protected readonly _collection: BehaviorSubject<Maybe<FirestoreCollectionLike<T, D, import("@dereekb/firebase").LimitedFirestoreDocumentAccessor<T, D>>>>;
23
23
  protected readonly _maxPages: BehaviorSubject<Maybe<number>>;
24
24
  protected readonly _itemsPerPage: BehaviorSubject<Maybe<number>>;
25
25
  protected readonly _constraints: BehaviorSubject<Maybe<ArrayOrValue<FirestoreQueryConstraint<unknown>>>>;
26
26
  protected readonly _restart: Subject<void>;
27
27
  private readonly _maxPagesSub;
28
- readonly collection$: Observable<Maybe<FirestoreCollection<T, D>>>;
28
+ readonly collection$: Observable<Maybe<FirestoreCollectionLike<T, D, import("@dereekb/firebase").LimitedFirestoreDocumentAccessor<T, D>>>>;
29
29
  readonly constraints$: Observable<Maybe<ArrayOrValue<FirestoreQueryConstraint<unknown>>>>;
30
30
  readonly iteratorFilter$: Observable<FirestoreItemPageIteratorFilter>;
31
31
  readonly firestoreIteration$: Observable<FirestoreItemPageIterationInstance<T>>;
@@ -41,12 +41,12 @@ export declare class DbxFirebaseCollectionLoaderInstance<T = unknown, D extends
41
41
  set itemsPerPage(itemsPerPage: Maybe<number>);
42
42
  get constraints(): Maybe<ArrayOrValue<FirestoreQueryConstraint>>;
43
43
  set constraints(constraints: Maybe<ArrayOrValue<FirestoreQueryConstraint>>);
44
- get collection(): Maybe<FirestoreCollection<T, D>>;
45
- set collection(collection: Maybe<FirestoreCollection<T, D>>);
44
+ get collection(): Maybe<FirestoreCollectionLike<T, D>>;
45
+ set collection(collection: Maybe<FirestoreCollectionLike<T, D>>);
46
46
  next(): void;
47
47
  restart(): void;
48
48
  setConstraints(constraints: Maybe<ArrayOrValue<FirestoreQueryConstraint>>): void;
49
- setCollection(firestoreCollection: Maybe<FirestoreCollection<T, D>>): void;
49
+ setCollection(firestoreCollection: Maybe<FirestoreCollectionLike<T, D>>): void;
50
50
  }
51
51
  export declare function dbxFirebaseCollectionLoaderInstance<T, D extends FirestoreDocument<T> = FirestoreDocument<T>>(config: DbxFirebaseCollectionLoaderInstanceInitConfig<T, D>): DbxFirebaseCollectionLoaderInstance<T, D>;
52
- export declare function dbxFirebaseCollectionLoaderInstanceWithCollection<T, D extends FirestoreDocument<T> = FirestoreDocument<T>>(collection: Maybe<FirestoreCollection<T, D>>): DbxFirebaseCollectionLoaderInstance<T, D>;
52
+ export declare function dbxFirebaseCollectionLoaderInstanceWithCollection<T, D extends FirestoreDocument<T> = FirestoreDocument<T>>(collection: Maybe<FirestoreCollectionLike<T, D>>): DbxFirebaseCollectionLoaderInstance<T, D>;
@@ -10,4 +10,5 @@ export * from './store.document.directive';
10
10
  export * from './store.document.router.directive';
11
11
  export * from './store.subcollection';
12
12
  export * from './store.subcollection.document';
13
+ export * from './store.subcollection.directive';
13
14
  export * from './store.subcollection.rxjs';
@@ -1,12 +1,12 @@
1
1
  import { Observable, Subscription } from 'rxjs';
2
- import { FirebaseQueryItemAccumulator, FirestoreCollection, FirestoreDocument, FirestoreItemPageIterationInstance, FirestoreQueryConstraint, IterationQueryDocChangeWatcher } from '@dereekb/firebase';
2
+ import { FirebaseQueryItemAccumulator, FirestoreCollectionLike, FirestoreDocument, FirestoreItemPageIterationInstance, FirestoreQueryConstraint, IterationQueryDocChangeWatcher } 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';
6
6
  import { DbxFirebaseCollectionLoaderInstance, DbxFirebaseCollectionLoaderInstanceData } from '../loader/collection.loader.instance';
7
7
  import * as i0 from "@angular/core";
8
8
  export interface DbxFirebaseCollectionStore<T, D extends FirestoreDocument<T> = FirestoreDocument<T>> extends DbxFirebaseCollectionLoaderInstanceData<T, D> {
9
- readonly firestoreCollection$: Observable<Maybe<FirestoreCollection<T, D>>>;
9
+ readonly firestoreCollection$: Observable<Maybe<FirestoreCollectionLike<T, D>>>;
10
10
  readonly loader$: Observable<DbxFirebaseCollectionLoaderInstance<T, D>>;
11
11
  readonly firestoreIteration$: Observable<FirestoreItemPageIterationInstance<T>>;
12
12
  readonly queryChangeWatcher$: Observable<IterationQueryDocChangeWatcher<T>>;
@@ -17,10 +17,10 @@ export interface DbxFirebaseCollectionStore<T, D extends FirestoreDocument<T> =
17
17
  setConstraints(observableOrValue: ObservableOrValue<Maybe<ArrayOrValue<FirestoreQueryConstraint>>>): Subscription;
18
18
  next(observableOrValue: ObservableOrValue<void>): void;
19
19
  restart(observableOrValue: ObservableOrValue<void>): void;
20
- readonly setFirestoreCollection: (() => void) | ((observableOrValue: ObservableOrValue<Maybe<FirestoreCollection<T, D>>>) => Subscription);
20
+ readonly setFirestoreCollection: (() => void) | ((observableOrValue: ObservableOrValue<Maybe<FirestoreCollectionLike<T, D>>>) => Subscription);
21
21
  }
22
22
  export interface DbxFirebaseCollectionStoreContextState<T, D extends FirestoreDocument<T> = FirestoreDocument<T>> {
23
- readonly firestoreCollection?: Maybe<FirestoreCollection<T, D>>;
23
+ readonly firestoreCollection?: Maybe<FirestoreCollectionLike<T, D>>;
24
24
  readonly maxPages?: Maybe<number>;
25
25
  readonly itemsPerPage?: Maybe<number>;
26
26
  readonly constraints?: Maybe<ArrayOrValue<FirestoreQueryConstraint>>;
@@ -34,14 +34,14 @@ export declare class AbstractDbxFirebaseCollectionStore<T, D extends FirestoreDo
34
34
  readonly setConstraints: (observableOrValue: Maybe<ArrayOrValue<FirestoreQueryConstraint<unknown>>> | Observable<Maybe<ArrayOrValue<FirestoreQueryConstraint<unknown>>>>) => Subscription;
35
35
  readonly next: () => void;
36
36
  readonly restart: () => void;
37
- readonly currentFirestoreCollection$: Observable<Maybe<FirestoreCollection<T, D>>>;
38
- readonly firestoreCollection$: Observable<FirestoreCollection<T, D>>;
37
+ readonly currentFirestoreCollection$: Observable<Maybe<FirestoreCollectionLike<T, D>>>;
38
+ readonly firestoreCollection$: Observable<FirestoreCollectionLike<T, D>>;
39
39
  readonly loader$: Observable<DbxFirebaseCollectionLoaderInstance<T, D>>;
40
40
  readonly firestoreIteration$: Observable<FirestoreItemPageIterationInstance<T>>;
41
41
  readonly queryChangeWatcher$: Observable<IterationQueryDocChangeWatcher<T>>;
42
42
  readonly accumulator$: Observable<FirebaseQueryItemAccumulator<T>>;
43
43
  readonly pageLoadingState$: Observable<PageListLoadingState<T>>;
44
- readonly setFirestoreCollection: (() => void) | ((observableOrValue: FirestoreCollection<T, D> | Observable<FirestoreCollection<T, D> | null | undefined> | null | undefined) => Subscription);
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>>;
47
47
  }
@@ -27,4 +27,4 @@ export declare abstract class DbxFirebaseCollectionStoreDirective<T = unknown, D
27
27
  * @param sourceType
28
28
  */
29
29
  export declare function provideDbxFirebaseCollectionStoreDirective<S extends DbxFirebaseCollectionStoreDirective<any, any, any>>(sourceType: Type<S>): Provider[];
30
- export declare function provideDbxFirebaseCollectionStoreDirective<S extends DbxFirebaseCollectionStore<any, any>, C extends DbxFirebaseCollectionStoreDirective<any, any, S> = DbxFirebaseCollectionStoreDirective<any, any, S>>(sourceType: Type<C>, storeType: Type<S>): Provider[];
30
+ export declare function provideDbxFirebaseCollectionStoreDirective<S extends DbxFirebaseCollectionStore<any, any>, C extends DbxFirebaseCollectionStoreDirective<any, any, S> = DbxFirebaseCollectionStoreDirective<any, any, S>>(sourceType: Type<C>, storeType?: Type<S>): Provider[];
@@ -1,31 +1,51 @@
1
- import { Observable } from 'rxjs';
2
- import { FirestoreCollectionWithParentFactory, FirestoreDocument } from '@dereekb/firebase';
3
1
  import { Maybe } from '@dereekb/util';
2
+ import { ObservableOrValue } from '@dereekb/rxjs';
3
+ import { Observable, Subscription } from 'rxjs';
4
+ import { FirestoreCollectionGroup, FirestoreCollectionWithParentFactory, FirestoreDocument } from '@dereekb/firebase';
4
5
  import { AbstractDbxFirebaseCollectionStore, DbxFirebaseCollectionStore, DbxFirebaseCollectionStoreContextState } from './store.collection';
5
- import { DbxFirebaseComponentStoreWithParent, DbxFirebaseComponentStoreWithParentContextState, DbxFirebaseComponentStoreWithParentSetParentEffectFunction, DbxFirebaseComponentStoreWithParentSetParentStoreEffectFunction } from './store.subcollection.rxjs';
6
+ import { DbxFirebaseComponentStoreSetParentEffectFunction, DbxFirebaseComponentStoreWithParent, DbxFirebaseComponentStoreWithParentContextState, DbxFirebaseComponentStoreWithParentSetParentStoreEffectFunction } from './store.subcollection.rxjs';
6
7
  import * as i0 from "@angular/core";
7
- export interface DbxFirebaseCollectionWithParentStore<T, PT, D extends FirestoreDocument<T> = FirestoreDocument<T>, PD extends FirestoreDocument<PT> = FirestoreDocument<PT>> extends DbxFirebaseCollectionStore<T, D>, DbxFirebaseComponentStoreWithParent<T, PT, D, PD> {
8
- }
8
+ /**
9
+ * Whether or not to load values from a parent or a group.
10
+ */
11
+ export declare type DbxFirebaseComponentStoreWithParentSourceMode = 'parent' | 'group';
9
12
  export interface DbxFirebaseCollectionWithParentStoreContextState<T, PT, D extends FirestoreDocument<T> = FirestoreDocument<T>, PD extends FirestoreDocument<PT> = FirestoreDocument<PT>> extends DbxFirebaseCollectionStoreContextState<T, D>, DbxFirebaseComponentStoreWithParentContextState<T, PT, D, PD> {
13
+ readonly mode?: Maybe<DbxFirebaseComponentStoreWithParentSourceMode>;
14
+ readonly collectionGroup?: Maybe<FirestoreCollectionGroup<T, D>>;
15
+ }
16
+ export declare type DbxFirebaseComponentStoreWithParentSetParentSourceModeFunction = (observableOrValue: ObservableOrValue<Maybe<DbxFirebaseComponentStoreWithParentSourceMode>>) => Subscription;
17
+ export interface DbxFirebaseCollectionWithParentStore<T, PT, D extends FirestoreDocument<T> = FirestoreDocument<T>, PD extends FirestoreDocument<PT> = FirestoreDocument<PT>> extends DbxFirebaseCollectionStore<T, D>, DbxFirebaseComponentStoreWithParent<T, PT, D, PD> {
18
+ readonly setSourceMode: DbxFirebaseComponentStoreWithParentSetParentSourceModeFunction;
19
+ readonly setCollectionGroup: (observableOrValue: FirestoreCollectionGroup<T, D> | Observable<FirestoreCollectionGroup<T, D>>) => Subscription;
20
+ readonly currentCollectionGroup$: Observable<Maybe<FirestoreCollectionGroup<T, D>>>;
21
+ readonly collectionGroup$: Observable<FirestoreCollectionGroup<T, D>>;
10
22
  }
11
23
  /**
12
24
  * Abstract DbxFirebaseCollectionStore that has a parent document from which is derives it's FiresbaseCollection from.
13
25
  */
14
26
  export declare class AbstractDbxFirebaseCollectionWithParentStore<T, PT, D extends FirestoreDocument<T> = FirestoreDocument<T>, PD extends FirestoreDocument<PT> = FirestoreDocument<PT>, C extends DbxFirebaseCollectionWithParentStoreContextState<T, PT, D, PD> = DbxFirebaseCollectionWithParentStoreContextState<T, PT, D, PD>> extends AbstractDbxFirebaseCollectionStore<T, D, C> implements DbxFirebaseCollectionWithParentStore<T, PT, D, PD> {
15
- readonly setParent: DbxFirebaseComponentStoreWithParentSetParentEffectFunction<PD>;
27
+ constructor(state: C, defaultSourceMode?: DbxFirebaseComponentStoreWithParentSourceMode);
16
28
  readonly setParentStore: DbxFirebaseComponentStoreWithParentSetParentStoreEffectFunction<PT, PD>;
29
+ readonly setSourceMode: DbxFirebaseComponentStoreWithParentSetParentSourceModeFunction;
17
30
  readonly currentParent$: Observable<Maybe<PD>>;
18
31
  readonly parent$: Observable<PD>;
19
32
  readonly currentCollectionFactory$: Observable<Maybe<FirestoreCollectionWithParentFactory<T, PT, D, PD>>>;
20
33
  readonly collectionFactory$: Observable<FirestoreCollectionWithParentFactory<T, PT, D, PD>>;
34
+ readonly currentCollectionGroup$: Observable<Maybe<FirestoreCollectionGroup<T, D>>>;
35
+ readonly collectionGroup$: Observable<FirestoreCollectionGroup<T, D>>;
21
36
  /**
22
37
  * Sets the collection factory function to use.
23
38
  */
24
- readonly setCollectionFactory: (observableOrValue: FirestoreCollectionWithParentFactory<T, PT, D, PD, import("@dereekb/firebase").FirestoreCollectionWithParent<T, PT, D, PD>> | Observable<FirestoreCollectionWithParentFactory<T, PT, D, PD, import("@dereekb/firebase").FirestoreCollectionWithParent<T, PT, D, PD>>>) => import("rxjs").Subscription;
39
+ readonly setCollectionFactory: (observableOrValue: FirestoreCollectionWithParentFactory<T, PT, D, PD, import("@dereekb/firebase").FirestoreCollectionWithParent<T, PT, D, PD>> | Observable<FirestoreCollectionWithParentFactory<T, PT, D, PD, import("@dereekb/firebase").FirestoreCollectionWithParent<T, PT, D, PD>>>) => Subscription;
40
+ /**
41
+ * Sets the collection group to use.
42
+ */
43
+ readonly setCollectionGroup: (observableOrValue: Maybe<FirestoreCollectionGroup<T, D>> | Observable<Maybe<FirestoreCollectionGroup<T, D>>>) => Subscription;
25
44
  /**
26
45
  * Sets the parent on the current state.
27
46
  */
28
- readonly _setParentDocument: (() => void) | ((observableOrValue: Maybe<PD> | Observable<Maybe<PD>>) => import("rxjs").Subscription) | (PD extends void ? () => void : (observableOrValue: Maybe<PD> | Observable<Maybe<PD>>) => import("rxjs").Subscription);
29
- static ɵfac: i0.ɵɵFactoryDeclaration<AbstractDbxFirebaseCollectionWithParentStore<any, any, any, any, any>, never>;
47
+ readonly _setParentDocument: (() => void) | ((observableOrValue: Maybe<PD> | Observable<Maybe<PD>>) => Subscription) | (PD extends void ? () => void : (observableOrValue: Maybe<PD> | Observable<Maybe<PD>>) => Subscription);
48
+ readonly _setParent: DbxFirebaseComponentStoreSetParentEffectFunction<PD>;
49
+ static ɵfac: i0.ɵɵFactoryDeclaration<AbstractDbxFirebaseCollectionWithParentStore<any, any, any, any, any>, [{ optional: true; }, { optional: true; }]>;
30
50
  static ɵprov: i0.ɵɵInjectableDeclaration<AbstractDbxFirebaseCollectionWithParentStore<any, any, any, any, any>>;
31
51
  }
@@ -0,0 +1,23 @@
1
+ import { Provider, Type } from '@angular/core';
2
+ import { FirestoreDocument } from '@dereekb/firebase';
3
+ import { Maybe } from '@dereekb/util';
4
+ import { DbxFirebaseCollectionStoreDirective } from './store.collection.directive';
5
+ import { DbxFirebaseCollectionWithParentStore, DbxFirebaseComponentStoreWithParentSourceMode } from './store.subcollection';
6
+ import * as i0 from "@angular/core";
7
+ /**
8
+ * Abstract directive that contains a DbxFirebaseCollectionWithParentStore and provides an interface for communicating with other directives.
9
+ */
10
+ export declare abstract class DbxFirebaseCollectionWithParentStoreDirective<T, PT, D extends FirestoreDocument<T> = FirestoreDocument<T>, PD extends FirestoreDocument<PT> = FirestoreDocument<PT>, S extends DbxFirebaseCollectionWithParentStore<T, PT, D, PD> = DbxFirebaseCollectionWithParentStore<T, PT, D, PD>> extends DbxFirebaseCollectionStoreDirective<T, D, S> {
11
+ set sourceMode(sourceMode: Maybe<DbxFirebaseComponentStoreWithParentSourceMode>);
12
+ static ɵfac: i0.ɵɵFactoryDeclaration<DbxFirebaseCollectionWithParentStoreDirective<any, any, any, any, any>, never>;
13
+ static ɵdir: i0.ɵɵDirectiveDeclaration<DbxFirebaseCollectionWithParentStoreDirective<any, any, any, any, any>, never, never, { "sourceMode": "sourceMode"; }, {}, never>;
14
+ }
15
+ /**
16
+ * Configures providers for a DbxFirebaseCollectionWithParentStoreDirective.
17
+ *
18
+ * Can optionally also provide the actual store type to include in the providers array so it is instantiated by Angular.
19
+ *
20
+ * @param sourceType
21
+ */
22
+ export declare function provideDbxFirebaseCollectionWithParentStoreDirective<S extends DbxFirebaseCollectionWithParentStoreDirective<any, any, any, any, any>>(sourceType: Type<S>): Provider[];
23
+ export declare function provideDbxFirebaseCollectionWithParentStoreDirective<S extends DbxFirebaseCollectionWithParentStore<any, any, any, any>, C extends DbxFirebaseCollectionWithParentStoreDirective<any, any, any, any, S> = DbxFirebaseCollectionWithParentStoreDirective<any, any, any, any, S>>(sourceType: Type<C>, storeType?: Type<S>): Provider[];
@@ -1,19 +1,20 @@
1
- import { Observable } from 'rxjs';
2
- import { FirestoreDocument, FirestoreCollectionWithParentFactory } from '@dereekb/firebase';
1
+ import { Observable, Subscription } from 'rxjs';
2
+ import { FirestoreDocument, FirestoreCollectionWithParentFactory, FirestoreCollection } from '@dereekb/firebase';
3
3
  import { Maybe } from '@dereekb/util';
4
4
  import { AbstractDbxFirebaseDocumentStore, DbxFirebaseDocumentStore, DbxFirebaseDocumentStoreContextState } from './store.document';
5
- import { DbxFirebaseComponentStoreWithParentSetParentEffectFunction, DbxFirebaseComponentStoreWithParentSetParentStoreEffectFunction, DbxFirebaseComponentStoreWithParent, DbxFirebaseComponentStoreWithParentContextState } from './store.subcollection.rxjs';
5
+ import { DbxFirebaseComponentStoreWithParentSetParentStoreEffectFunction, DbxFirebaseComponentStoreWithParent, DbxFirebaseComponentStoreWithParentContextState, DbxFirebaseComponentStoreWithParentSetParentEffectFunction } from './store.subcollection.rxjs';
6
6
  import * as i0 from "@angular/core";
7
- export interface DbxFirebaseDocumentWithParentStore<T, PT, D extends FirestoreDocument<T> = FirestoreDocument<T>, PD extends FirestoreDocument<PT> = FirestoreDocument<PT>> extends DbxFirebaseDocumentStore<T, D>, DbxFirebaseComponentStoreWithParent<T, PT, D, PD> {
8
- }
9
7
  export interface DbxFirebaseDocumentWithParentStoreContextState<T, PT, D extends FirestoreDocument<T> = FirestoreDocument<T>, PD extends FirestoreDocument<PT> = FirestoreDocument<PT>> extends DbxFirebaseDocumentStoreContextState<T, D>, DbxFirebaseComponentStoreWithParentContextState<T, PT, D, PD> {
10
8
  }
9
+ export interface DbxFirebaseDocumentWithParentStore<T, PT, D extends FirestoreDocument<T> = FirestoreDocument<T>, PD extends FirestoreDocument<PT> = FirestoreDocument<PT>> extends DbxFirebaseDocumentStore<T, D>, DbxFirebaseComponentStoreWithParent<T, PT, D, PD, FirestoreCollection<T, D>> {
10
+ }
11
11
  /**
12
12
  * Abstract DbxFirebaseDocumentStore that has a parent document from which is derives it's FiresbaseCollection from.
13
13
  */
14
14
  export declare class AbstractDbxFirebaseDocumentWithParentStore<T, PT, D extends FirestoreDocument<T> = FirestoreDocument<T>, PD extends FirestoreDocument<PT> = FirestoreDocument<PT>, C extends DbxFirebaseDocumentWithParentStoreContextState<T, PT, D, PD> = DbxFirebaseDocumentWithParentStoreContextState<T, PT, D, PD>> extends AbstractDbxFirebaseDocumentStore<T, D, C> implements DbxFirebaseDocumentWithParentStore<T, PT, D, PD> {
15
- readonly setParent: DbxFirebaseComponentStoreWithParentSetParentEffectFunction<PD>;
16
15
  readonly setParentStore: DbxFirebaseComponentStoreWithParentSetParentStoreEffectFunction<PT, PD>;
16
+ readonly setParent: DbxFirebaseComponentStoreWithParentSetParentEffectFunction<PD>;
17
+ readonly _setParent: DbxFirebaseComponentStoreWithParentSetParentEffectFunction<PD>;
17
18
  readonly currentParent$: Observable<Maybe<PD>>;
18
19
  readonly parent$: Observable<PD>;
19
20
  readonly currentCollectionFactory$: Observable<Maybe<FirestoreCollectionWithParentFactory<T, PT, D, PD>>>;
@@ -21,11 +22,11 @@ export declare class AbstractDbxFirebaseDocumentWithParentStore<T, PT, D extends
21
22
  /**
22
23
  * Sets the collection factory function to use.
23
24
  */
24
- readonly setCollectionFactory: (observableOrValue: FirestoreCollectionWithParentFactory<T, PT, D, PD, import("@dereekb/firebase").FirestoreCollectionWithParent<T, PT, D, PD>> | Observable<FirestoreCollectionWithParentFactory<T, PT, D, PD, import("@dereekb/firebase").FirestoreCollectionWithParent<T, PT, D, PD>>>) => import("rxjs").Subscription;
25
+ readonly setCollectionFactory: (observableOrValue: FirestoreCollectionWithParentFactory<T, PT, D, PD, import("@dereekb/firebase").FirestoreCollectionWithParent<T, PT, D, PD>> | Observable<FirestoreCollectionWithParentFactory<T, PT, D, PD, import("@dereekb/firebase").FirestoreCollectionWithParent<T, PT, D, PD>>>) => Subscription;
25
26
  /**
26
27
  * Sets the parent on the current state.
27
28
  */
28
- readonly _setParentDocument: (() => void) | ((observableOrValue: Maybe<PD> | Observable<Maybe<PD>>) => import("rxjs").Subscription) | (PD extends void ? () => void : (observableOrValue: Maybe<PD> | Observable<Maybe<PD>>) => import("rxjs").Subscription);
29
+ readonly _setParentDocument: (() => void) | ((observableOrValue: Maybe<PD> | Observable<Maybe<PD>>) => Subscription) | (PD extends void ? () => void : (observableOrValue: Maybe<PD> | Observable<Maybe<PD>>) => Subscription);
29
30
  static ɵfac: i0.ɵɵFactoryDeclaration<AbstractDbxFirebaseDocumentWithParentStore<any, any, any, any, any>, never>;
30
31
  static ɵprov: i0.ɵɵInjectableDeclaration<AbstractDbxFirebaseDocumentWithParentStore<any, any, any, any, any>>;
31
32
  }
@@ -1,5 +1,5 @@
1
1
  import { LockSetComponentStore } from '@dereekb/dbx-core';
2
- import { FirestoreCollection, FirestoreCollectionWithParentFactory, FirestoreDocument } from '@dereekb/firebase';
2
+ import { FirestoreCollectionLike, FirestoreCollectionWithParentFactory, FirestoreDocument } from '@dereekb/firebase';
3
3
  import { ObservableOrValue } from '@dereekb/rxjs';
4
4
  import { Maybe } from '@dereekb/util';
5
5
  import { ComponentStore } from '@ngrx/component-store';
@@ -9,15 +9,16 @@ export interface DbxFirebaseComponentStoreWithParentContextState<T, PT, D extend
9
9
  readonly parent?: Maybe<PD>;
10
10
  readonly collectionFactory?: Maybe<FirestoreCollectionWithParentFactory<T, PT, D, PD>>;
11
11
  }
12
+ export declare type DbxFirebaseComponentStoreSetParentEffectFunction<PD> = (parent: Observable<Maybe<PD>>) => Subscription;
12
13
  export declare type DbxFirebaseComponentStoreWithParentSetParentEffectFunction<PD> = (observableOrValue: ObservableOrValue<Maybe<PD>>) => Subscription;
13
14
  export declare type DbxFirebaseComponentStoreWithParentSetParentStoreEffectFunction<PT, PD extends FirestoreDocument<PT> = FirestoreDocument<PT>> = (observableOrValue: ObservableOrValue<DbxFirebaseDocumentStore<PT, PD>>) => Subscription;
14
- export interface DbxFirebaseComponentStoreWithParent<T, PT, D extends FirestoreDocument<T> = FirestoreDocument<T>, PD extends FirestoreDocument<PT> = FirestoreDocument<PT>> extends LockSetComponentStore<object>, Pick<ComponentStore<DbxFirebaseComponentStoreWithParentContextState<T, PT, D, PD>>, 'effect'> {
15
+ export interface DbxFirebaseComponentStoreWithParent<T, PT, D extends FirestoreDocument<T> = FirestoreDocument<T>, PD extends FirestoreDocument<PT> = FirestoreDocument<PT>, A extends FirestoreCollectionLike<T, D> = FirestoreCollectionLike<T, D>> extends LockSetComponentStore<object>, Pick<ComponentStore<DbxFirebaseComponentStoreWithParentContextState<T, PT, D, PD>>, 'effect'> {
15
16
  readonly currentParent$: Observable<Maybe<PD>>;
16
17
  readonly parent$: Observable<PD>;
18
+ readonly currentCollectionFactory$: Observable<Maybe<FirestoreCollectionWithParentFactory<T, PT, D, PD>>>;
17
19
  readonly collectionFactory$: Observable<FirestoreCollectionWithParentFactory<T, PT, D, PD>>;
18
- readonly setParent: DbxFirebaseComponentStoreWithParentSetParentEffectFunction<PD>;
20
+ readonly _setParent: DbxFirebaseComponentStoreSetParentEffectFunction<PD>;
19
21
  readonly _setParentDocument: (() => void) | ((observableOrValue: ObservableOrValue<Maybe<PD>>) => Subscription);
20
- readonly setFirestoreCollection: (() => void) | ((observableOrValue: ObservableOrValue<Maybe<FirestoreCollection<T, D>>>) => Subscription);
22
+ readonly setFirestoreCollection: (() => void) | ((observableOrValue: ObservableOrValue<Maybe<A>>) => Subscription);
21
23
  }
22
- export declare function setParentStoreEffect<T, PT, D extends FirestoreDocument<T> = FirestoreDocument<T>, PD extends FirestoreDocument<PT> = FirestoreDocument<PT>>(store: DbxFirebaseComponentStoreWithParent<T, PT, D, PD>): DbxFirebaseComponentStoreWithParentSetParentStoreEffectFunction<PT, PD>;
23
- export declare function setParentEffect<T, PT, D extends FirestoreDocument<T> = FirestoreDocument<T>, PD extends FirestoreDocument<PT> = FirestoreDocument<PT>>(store: DbxFirebaseComponentStoreWithParent<T, PT, D, PD>): DbxFirebaseComponentStoreWithParentSetParentEffectFunction<PD>;
24
+ export declare function setParentStoreEffect<T, PT, D extends FirestoreDocument<T> = FirestoreDocument<T>, PD extends FirestoreDocument<PT> = FirestoreDocument<PT>, A extends FirestoreCollectionLike<T, D> = FirestoreCollectionLike<T, D>>(store: DbxFirebaseComponentStoreWithParent<T, PT, D, PD, A>): DbxFirebaseComponentStoreWithParentSetParentStoreEffectFunction<PT, PD>;
package/package.json CHANGED
@@ -1,17 +1,18 @@
1
1
  {
2
2
  "name": "@dereekb/dbx-firebase",
3
- "version": "5.0.1",
3
+ "version": "5.2.1",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0",
7
+ "@dereekb/util": "5.2.1",
7
8
  "firebase": "^9.8.0",
8
- "@dereekb/util": "5.0.1",
9
- "@dereekb/dbx-core": "5.0.1",
10
- "@angular/material": "^13.0.0",
11
- "@dereekb/dbx-web": "5.0.1",
12
- "@dereekb/dbx-form": "5.0.1",
9
+ "rxjs": "^7.0.0",
13
10
  "@angular/fire": "^7.3.0-canary.8d5bc12",
14
- "@dereekb/firebase": "5.0.1"
11
+ "@dereekb/dbx-core": "5.2.1",
12
+ "@angular/material": "^13.0.0",
13
+ "@dereekb/dbx-web": "5.2.1",
14
+ "@dereekb/dbx-form": "5.2.1",
15
+ "@dereekb/firebase": "5.2.1"
15
16
  },
16
17
  "dependencies": {
17
18
  "tslib": "^2.3.0"