@dereekb/dbx-firebase 5.1.0 → 5.2.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.
Files changed (26) hide show
  1. package/esm2020/lib/auth/appcheck/appcheck.interceptor.mjs +5 -5
  2. package/esm2020/lib/auth/appcheck/appcheck.mjs +1 -1
  3. package/esm2020/lib/auth/login/login.service.mjs +1 -1
  4. package/esm2020/lib/firebase/appcheck.mjs +1 -1
  5. package/esm2020/lib/firebase/firebase.module.mjs +1 -1
  6. package/esm2020/lib/model/loader/collection.loader.instance.mjs +1 -1
  7. package/esm2020/lib/model/store/index.mjs +2 -1
  8. package/esm2020/lib/model/store/store.collection.directive.mjs +1 -1
  9. package/esm2020/lib/model/store/store.collection.mjs +1 -1
  10. package/esm2020/lib/model/store/store.subcollection.directive.mjs +30 -0
  11. package/esm2020/lib/model/store/store.subcollection.document.mjs +21 -4
  12. package/esm2020/lib/model/store/store.subcollection.mjs +51 -9
  13. package/esm2020/lib/model/store/store.subcollection.rxjs.mjs +3 -22
  14. package/fesm2015/dereekb-dbx-firebase.mjs +100 -30
  15. package/fesm2015/dereekb-dbx-firebase.mjs.map +1 -1
  16. package/fesm2020/dereekb-dbx-firebase.mjs +97 -30
  17. package/fesm2020/dereekb-dbx-firebase.mjs.map +1 -1
  18. package/lib/model/loader/collection.loader.instance.d.ts +8 -8
  19. package/lib/model/store/index.d.ts +1 -0
  20. package/lib/model/store/store.collection.d.ts +7 -7
  21. package/lib/model/store/store.collection.directive.d.ts +1 -1
  22. package/lib/model/store/store.subcollection.d.ts +29 -9
  23. package/lib/model/store/store.subcollection.directive.d.ts +23 -0
  24. package/lib/model/store/store.subcollection.document.d.ts +9 -8
  25. package/lib/model/store/store.subcollection.rxjs.d.ts +7 -6
  26. package/package.json +6 -6
@@ -57,8 +57,8 @@ class DbxFirebaseAppCheckHttpInterceptor {
57
57
  if (appCheck != null) {
58
58
  routes = (this.dbxFirebaseOptions.appCheck?.appCheckRoutes ?? ['/api/*']).map((route) => {
59
59
  const wildcardIndex = route.indexOf('*');
60
- const isWildcard = (wildcardIndex === route.length - 1);
61
- const match = (isWildcard) ? route.substring(0, wildcardIndex) : route;
60
+ const isWildcard = wildcardIndex === route.length - 1;
61
+ const match = isWildcard ? route.substring(0, wildcardIndex) : route;
62
62
  return {
63
63
  isWildcard,
64
64
  match
@@ -106,7 +106,7 @@ class DbxFirebaseAppCheckHttpInterceptor {
106
106
  return url === enabledRoute.match;
107
107
  }
108
108
  }
109
- return from(this._appCheckRoutes).pipe(first((route) => isEnabledRouteMatch(route), false), map(x => Boolean(x)));
109
+ return from(this._appCheckRoutes).pipe(first((route) => isEnabledRouteMatch(route), false), map((x) => Boolean(x)));
110
110
  }
111
111
  }
112
112
  DbxFirebaseAppCheckHttpInterceptor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: DbxFirebaseAppCheckHttpInterceptor, deps: [{ token: DBX_FIREBASE_OPTIONS_TOKEN }, { token: i1.AppCheck }], target: i0.ɵɵFactoryTarget.Injectable });
@@ -2307,7 +2307,7 @@ function setParentStoreEffect(store) {
2307
2307
  return input.pipe(map((parentStore) => {
2308
2308
  let result;
2309
2309
  if (parentStore) {
2310
- result = store.setParent(parentStore.currentDocument$);
2310
+ result = store._setParent(parentStore.currentDocument$);
2311
2311
  }
2312
2312
  else {
2313
2313
  result = undefined;
@@ -2322,56 +2322,79 @@ function setParentStoreEffect(store) {
2322
2322
  }));
2323
2323
  });
2324
2324
  }
2325
- function setParentEffect(store) {
2326
- return store.effect((input) => {
2327
- return input.pipe(switchMap((parent) => {
2328
- store._setParentDocument(parent);
2329
- if (parent) {
2330
- return store.collectionFactory$.pipe(tap((collectionFactory) => {
2331
- const collection = collectionFactory(parent);
2332
- store.setFirestoreCollection(collection);
2333
- }));
2334
- }
2335
- else {
2336
- // clear the current collection
2337
- store.setFirestoreCollection(undefined);
2338
- // do nothing until a parent is returned.
2339
- return NEVER;
2340
- }
2341
- }));
2342
- });
2343
- }
2344
2325
 
2345
2326
  /**
2346
2327
  * Abstract DbxFirebaseCollectionStore that has a parent document from which is derives it's FiresbaseCollection from.
2347
2328
  */
2348
2329
  class AbstractDbxFirebaseCollectionWithParentStore extends AbstractDbxFirebaseCollectionStore {
2349
- constructor() {
2350
- super(...arguments);
2330
+ constructor(state, defaultSourceMode) {
2331
+ super(state);
2351
2332
  // MARK: Effects
2352
- this.setParent = setParentEffect(this);
2353
2333
  this.setParentStore = setParentStoreEffect(this);
2334
+ this.setSourceMode = this.effect((input) => {
2335
+ return input.pipe(distinctUntilChanged(), switchMap((inputMode) => {
2336
+ const mode = inputMode?.toLowerCase() ?? 'parent'; // default to parent mode
2337
+ if (mode === 'group') {
2338
+ return this.currentCollectionGroup$.pipe(tap((collectionGroup) => {
2339
+ this.setFirestoreCollection(collectionGroup);
2340
+ }));
2341
+ }
2342
+ else {
2343
+ // parent document collection
2344
+ return this.currentParent$.pipe(switchMap((parent) => {
2345
+ if (parent) {
2346
+ return this.collectionFactory$.pipe(tap((collectionFactory) => {
2347
+ const collection = collectionFactory(parent);
2348
+ this.setFirestoreCollection(collection);
2349
+ }));
2350
+ }
2351
+ else {
2352
+ this.setFirestoreCollection(undefined);
2353
+ return NEVER;
2354
+ }
2355
+ }));
2356
+ }
2357
+ }));
2358
+ });
2354
2359
  // MARK: Accessors
2355
2360
  this.currentParent$ = this.state$.pipe(map((x) => x.parent), distinctUntilChanged(), shareReplay(1));
2356
2361
  this.parent$ = this.currentParent$.pipe(filterMaybe());
2357
2362
  this.currentCollectionFactory$ = this.state$.pipe(map((x) => x.collectionFactory), distinctUntilChanged(), shareReplay(1));
2358
2363
  this.collectionFactory$ = this.currentCollectionFactory$.pipe(filterMaybe());
2364
+ this.currentCollectionGroup$ = this.state$.pipe(map((x) => x.collectionGroup), distinctUntilChanged(), shareReplay(1));
2365
+ this.collectionGroup$ = this.currentCollectionGroup$.pipe(filterMaybe());
2359
2366
  // MARK: State Changes
2360
2367
  /**
2361
2368
  * Sets the collection factory function to use.
2362
2369
  */
2363
2370
  this.setCollectionFactory = this.updater((state, collectionFactory) => ({ ...state, collectionFactory }));
2371
+ /**
2372
+ * Sets the collection group to use.
2373
+ */
2374
+ this.setCollectionGroup = this.updater((state, collectionGroup) => ({ ...state, collectionGroup }));
2364
2375
  /**
2365
2376
  * Sets the parent on the current state.
2366
2377
  */
2367
2378
  this._setParentDocument = this.updater((state, parent) => ({ ...state, parent }));
2379
+ this._setParent = this._setParentDocument;
2380
+ this.setSourceMode(defaultSourceMode || 'parent');
2368
2381
  }
2369
2382
  }
2370
- AbstractDbxFirebaseCollectionWithParentStore.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: AbstractDbxFirebaseCollectionWithParentStore, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
2383
+ AbstractDbxFirebaseCollectionWithParentStore.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: AbstractDbxFirebaseCollectionWithParentStore, deps: [{ token: null, optional: true }, { token: null, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
2371
2384
  AbstractDbxFirebaseCollectionWithParentStore.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: AbstractDbxFirebaseCollectionWithParentStore });
2372
2385
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: AbstractDbxFirebaseCollectionWithParentStore, decorators: [{
2373
2386
  type: Injectable
2374
- }] });
2387
+ }], ctorParameters: function () { return [{ type: undefined, decorators: [{
2388
+ type: Inject,
2389
+ args: [null]
2390
+ }, {
2391
+ type: Optional
2392
+ }] }, { type: undefined, decorators: [{
2393
+ type: Inject,
2394
+ args: [null]
2395
+ }, {
2396
+ type: Optional
2397
+ }] }]; } });
2375
2398
 
2376
2399
  /**
2377
2400
  * Abstract DbxFirebaseDocumentStore that has a parent document from which is derives it's FiresbaseCollection from.
@@ -2380,8 +2403,25 @@ class AbstractDbxFirebaseDocumentWithParentStore extends AbstractDbxFirebaseDocu
2380
2403
  constructor() {
2381
2404
  super(...arguments);
2382
2405
  // MARK: Effects
2383
- this.setParent = setParentEffect(this);
2384
2406
  this.setParentStore = setParentStoreEffect(this);
2407
+ this.setParent = this.effect((input) => {
2408
+ return input.pipe(switchMap((parent) => {
2409
+ this._setParentDocument(parent);
2410
+ if (parent) {
2411
+ return this.collectionFactory$.pipe(tap((collectionFactory) => {
2412
+ const collection = collectionFactory(parent);
2413
+ this.setFirestoreCollection(collection);
2414
+ }));
2415
+ }
2416
+ else {
2417
+ // clear the current collection
2418
+ this.setFirestoreCollection(undefined);
2419
+ // do nothing until a parent is returned.
2420
+ return NEVER;
2421
+ }
2422
+ }));
2423
+ });
2424
+ this._setParent = this.setParent;
2385
2425
  // MARK: Accessors
2386
2426
  this.currentParent$ = this.state$.pipe(map((x) => x.parent), distinctUntilChanged(), shareReplay(1));
2387
2427
  this.parent$ = this.currentParent$.pipe(filterMaybe());
@@ -2404,6 +2444,33 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImpor
2404
2444
  type: Injectable
2405
2445
  }] });
2406
2446
 
2447
+ /**
2448
+ * Abstract directive that contains a DbxFirebaseCollectionWithParentStore and provides an interface for communicating with other directives.
2449
+ */
2450
+ class DbxFirebaseCollectionWithParentStoreDirective extends DbxFirebaseCollectionStoreDirective {
2451
+ // MARK: Inputs
2452
+ set sourceMode(sourceMode) {
2453
+ this.store.setSourceMode(sourceMode);
2454
+ }
2455
+ }
2456
+ DbxFirebaseCollectionWithParentStoreDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: DbxFirebaseCollectionWithParentStoreDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
2457
+ DbxFirebaseCollectionWithParentStoreDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.2", type: DbxFirebaseCollectionWithParentStoreDirective, inputs: { sourceMode: "sourceMode" }, usesInheritance: true, ngImport: i0 });
2458
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: DbxFirebaseCollectionWithParentStoreDirective, decorators: [{
2459
+ type: Directive
2460
+ }], propDecorators: { sourceMode: [{
2461
+ type: Input
2462
+ }] } });
2463
+ function provideDbxFirebaseCollectionWithParentStoreDirective(sourceType, storeType) {
2464
+ const providers = [
2465
+ ...provideDbxFirebaseCollectionStoreDirective(sourceType, storeType),
2466
+ {
2467
+ provide: DbxFirebaseCollectionWithParentStoreDirective,
2468
+ useExisting: forwardRef(() => sourceType)
2469
+ }
2470
+ ];
2471
+ return providers;
2472
+ }
2473
+
2407
2474
  class DbxFirebaseModelModule {
2408
2475
  }
2409
2476
  DbxFirebaseModelModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: DbxFirebaseModelModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
@@ -2432,5 +2499,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImpor
2432
2499
  * Generated bundle index. Do not edit.
2433
2500
  */
2434
2501
 
2435
- 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, 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, provideDbxFirebaseDocumentStoreDirective, readValueFromIdToken, setParentEffect, setParentStoreEffect };
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 };
2436
2503
  //# sourceMappingURL=dereekb-dbx-firebase.mjs.map