@dereekb/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 (48) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/package.json +5 -5
  3. package/src/lib/client/firestore/driver.accessor.js +1 -0
  4. package/src/lib/client/firestore/driver.accessor.js.map +1 -1
  5. package/src/lib/client/firestore/driver.query.js.map +1 -1
  6. package/src/lib/common/firestore/accessor/document.d.ts +56 -27
  7. package/src/lib/common/firestore/accessor/document.js +39 -21
  8. package/src/lib/common/firestore/accessor/document.js.map +1 -1
  9. package/src/lib/common/firestore/accessor/document.utility.d.ts +5 -5
  10. package/src/lib/common/firestore/accessor/document.utility.js.map +1 -1
  11. package/src/lib/common/firestore/collection/collection.d.ts +12 -5
  12. package/src/lib/common/firestore/collection/collection.group.d.ts +20 -0
  13. package/src/lib/common/firestore/collection/collection.group.js +31 -0
  14. package/src/lib/common/firestore/collection/collection.group.js.map +1 -0
  15. package/src/lib/common/firestore/collection/collection.js +4 -3
  16. package/src/lib/common/firestore/collection/collection.js.map +1 -1
  17. package/src/lib/common/firestore/collection/collection.query.d.ts +2 -2
  18. package/src/lib/common/firestore/collection/collection.query.js.map +1 -1
  19. package/src/lib/common/firestore/collection/index.d.ts +1 -0
  20. package/src/lib/common/firestore/collection/index.js +1 -0
  21. package/src/lib/common/firestore/collection/index.js.map +1 -1
  22. package/src/lib/common/firestore/collection/subcollection.js +1 -0
  23. package/src/lib/common/firestore/collection/subcollection.js.map +1 -1
  24. package/src/lib/common/firestore/context.d.ts +7 -3
  25. package/src/lib/common/firestore/context.js +7 -1
  26. package/src/lib/common/firestore/context.js.map +1 -1
  27. package/src/lib/common/firestore/driver/accessor.d.ts +3 -1
  28. package/src/lib/common/firestore/query/iterator.d.ts +2 -2
  29. package/src/lib/common/firestore/query/iterator.js +3 -3
  30. package/src/lib/common/firestore/query/iterator.js.map +1 -1
  31. package/src/lib/common/firestore/query/query.d.ts +2 -2
  32. package/src/lib/common/firestore/query/query.js +2 -2
  33. package/src/lib/common/firestore/query/query.js.map +1 -1
  34. package/src/lib/common/firestore/reference.d.ts +7 -1
  35. package/src/lib/common/firestore/types.d.ts +5 -0
  36. package/test/CHANGELOG.md +10 -0
  37. package/test/package.json +7 -7
  38. package/test/src/lib/common/firestore.d.ts +3 -0
  39. package/test/src/lib/common/firestore.js +14 -5
  40. package/test/src/lib/common/firestore.js.map +1 -1
  41. package/test/src/lib/common/firestore.mock.item.d.ts +5 -1
  42. package/test/src/lib/common/firestore.mock.item.fixture.d.ts +1 -0
  43. package/test/src/lib/common/firestore.mock.item.fixture.js +3 -0
  44. package/test/src/lib/common/firestore.mock.item.fixture.js.map +1 -1
  45. package/test/src/lib/common/firestore.mock.item.js +16 -2
  46. package/test/src/lib/common/firestore.mock.item.js.map +1 -1
  47. package/test/src/lib/common/test.driver.query.js +112 -9
  48. package/test/src/lib/common/test.driver.query.js.map +1 -1
@@ -1,8 +1,9 @@
1
1
  import { FirestoreDocument } from './accessor/document';
2
- import { FirestoreCollection, FirestoreCollectionConfig, FirestoreCollectionWithParent, SingleItemFirestoreCollection } from './collection';
2
+ import { FirestoreCollection, FirestoreCollectionConfig, FirestoreCollectionWithParent, SingleItemFirestoreCollection, FirestoreCollectionGroup } from './collection';
3
3
  import { FirestoreDrivers } from './driver/driver';
4
4
  import { WriteBatchFactoryReference, RunTransactionFactoryReference } from './driver';
5
- import { DocumentReference, CollectionReference, DocumentData, Firestore } from './types';
5
+ import { DocumentReference, CollectionReference, DocumentData, Firestore, CollectionGroup } from './types';
6
+ import { QueryLikeReferenceRef } from './reference';
6
7
  /**
7
8
  * A @dereekb/firestore FirestoreContext. Wraps the main Firestore context and the drivers, as well as utility/convenience functions.
8
9
  */
@@ -10,13 +11,16 @@ export interface FirestoreContext<F extends Firestore = Firestore> extends RunTr
10
11
  readonly firestore: F;
11
12
  readonly drivers: FirestoreDrivers;
12
13
  collection<T = DocumentData>(path: string, ...pathSegments: string[]): CollectionReference<T>;
14
+ collectionGroup<T = DocumentData>(collectionId: string): CollectionGroup<T>;
13
15
  subcollection<T = DocumentData>(parent: DocumentReference, path: string, ...pathSegments: string[]): CollectionReference<T>;
14
16
  firestoreCollection<T, D extends FirestoreDocument<T>>(config: FirestoreContextFirestoreCollectionConfig<T, D>): FirestoreCollection<T, D>;
17
+ firestoreCollectionGroup<T, D extends FirestoreDocument<T>>(config: FirestoreContextFirestoreCollectionGroupConfig<T, D>): FirestoreCollectionGroup<T, D>;
15
18
  firestoreCollectionWithParent<T, PT, D extends FirestoreDocument<T> = FirestoreDocument<T>, PD extends FirestoreDocument<PT> = FirestoreDocument<PT>>(config: FirestoreContextFirestoreCollectionWithParentConfig<T, PT, D, PD>): FirestoreCollectionWithParent<T, PT, D, PD>;
16
19
  singleItemFirestoreCollection<T, PT, D extends FirestoreDocument<T> = FirestoreDocument<T>, PD extends FirestoreDocument<PT> = FirestoreDocument<PT>>(config: FirestoreContextSingleItemFirestoreCollectionConfig<T, PT, D, PD>): SingleItemFirestoreCollection<T, PT, D, PD>;
17
20
  }
18
21
  export declare type FirestoreContextFirestoreCollectionConfig<T, D extends FirestoreDocument<T>> = Omit<FirestoreCollectionConfig<T, D>, 'driverIdentifier' | 'driverType' | 'firestoreQueryDriver' | 'firestoreAccessorDriver'>;
19
- export interface FirestoreContextFirestoreCollectionWithParentConfig<T, PT, D extends FirestoreDocument<T> = FirestoreDocument<T>, PD extends FirestoreDocument<PT> = FirestoreDocument<PT>> extends FirestoreContextFirestoreCollectionConfig<T, D> {
22
+ export declare type FirestoreContextFirestoreCollectionGroupConfig<T, D extends FirestoreDocument<T>> = Omit<FirestoreContextFirestoreCollectionConfig<T, D>, 'collection'> & QueryLikeReferenceRef<T>;
23
+ export interface FirestoreContextFirestoreCollectionWithParentConfig<T, PT, D extends FirestoreDocument<T> = FirestoreDocument<T>, PD extends FirestoreDocument<PT> = FirestoreDocument<PT>> extends Omit<FirestoreContextFirestoreCollectionConfig<T, D>, 'queryLike'> {
20
24
  readonly parent: PD;
21
25
  }
22
26
  export interface FirestoreContextSingleItemFirestoreCollectionConfig<T, PT, D extends FirestoreDocument<T> = FirestoreDocument<T>, PD extends FirestoreDocument<PT> = FirestoreDocument<PT>> extends FirestoreContextFirestoreCollectionWithParentConfig<T, PT, D, PD> {
@@ -10,16 +10,22 @@ const collection_1 = require("./collection");
10
10
  */
11
11
  function firestoreContextFactory(drivers) {
12
12
  return (firestore) => {
13
- const makeFirestoreCollectionConfig = (config) => (Object.assign(Object.assign({}, config), { firestoreContext: context, driverIdentifier: drivers.driverIdentifier, driverType: drivers.driverType, firestoreQueryDriver: drivers.firestoreQueryDriver, firestoreAccessorDriver: drivers.firestoreAccessorDriver }));
13
+ const makeFirestoreCollectionConfig = (config) => {
14
+ var _a;
15
+ return (Object.assign(Object.assign({}, config), { queryLike: (_a = config.collection) !== null && _a !== void 0 ? _a : config.queryLike, firestoreContext: context, driverIdentifier: drivers.driverIdentifier, driverType: drivers.driverType, firestoreQueryDriver: drivers.firestoreQueryDriver, firestoreAccessorDriver: drivers.firestoreAccessorDriver }));
16
+ };
14
17
  const firestoreCollection = (config) => (0, collection_1.makeFirestoreCollection)(makeFirestoreCollectionConfig(config));
18
+ const firestoreCollectionGroup = (config) => (0, collection_1.makeFirestoreCollectionGroup)(makeFirestoreCollectionConfig(config));
15
19
  const context = {
16
20
  firestore,
17
21
  drivers,
22
+ collectionGroup: (collectionId) => drivers.firestoreAccessorDriver.collectionGroup(firestore, collectionId),
18
23
  collection: (path, ...pathSegments) => drivers.firestoreAccessorDriver.collection(firestore, path, ...pathSegments),
19
24
  subcollection: drivers.firestoreAccessorDriver.subcollection,
20
25
  runTransaction: drivers.firestoreAccessorDriver.transactionFactoryForFirestore(firestore),
21
26
  batch: drivers.firestoreAccessorDriver.writeBatchFactoryForFirestore(firestore),
22
27
  firestoreCollection,
28
+ firestoreCollectionGroup,
23
29
  firestoreCollectionWithParent(inputConfig) {
24
30
  const config = makeFirestoreCollectionConfig(inputConfig);
25
31
  return (0, collection_1.makeFirestoreCollectionWithParent)(config);
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","sourceRoot":"","sources":["../../../../../../../packages/firebase/src/lib/common/firestore/context.ts"],"names":[],"mappings":";;;AACA,6CAAqT;AA+BrT;;;;;GAKG;AACH,SAAgB,uBAAuB,CAAkC,OAAyB;IAChG,OAAO,CAAC,SAAY,EAAE,EAAE;QACtB,MAAM,6BAA6B,GAAG,CAAyH,MAA+L,EAAE,EAAE,CAAC,iCAC9V,MAAM,KACT,gBAAgB,EAAE,OAAO,EACzB,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,EAC1C,UAAU,EAAE,OAAO,CAAC,UAAU,EAC9B,oBAAoB,EAAE,OAAO,CAAC,oBAAoB,EAClD,uBAAuB,EAAE,OAAO,CAAC,uBAAuB,IACxD,CAAC;QAEH,MAAM,mBAAmB,GAAG,CAAoC,MAAuD,EAAE,EAAE,CAAC,IAAA,oCAAuB,EAAC,6BAA6B,CAAC,MAAM,CAAC,CAAC,CAAC;QAE3L,MAAM,OAAO,GAAwB;YACnC,SAAS;YACT,OAAO;YACP,UAAU,EAAE,CAAC,IAAY,EAAE,GAAG,YAAsB,EAAE,EAAE,CAAC,OAAO,CAAC,uBAAuB,CAAC,UAAU,CAAC,SAAS,EAAE,IAAI,EAAE,GAAG,YAAY,CAAC;YACrI,aAAa,EAAE,OAAO,CAAC,uBAAuB,CAAC,aAAa;YAC5D,cAAc,EAAE,OAAO,CAAC,uBAAuB,CAAC,8BAA8B,CAAC,SAAS,CAAC;YACzF,KAAK,EAAE,OAAO,CAAC,uBAAuB,CAAC,6BAA6B,CAAC,SAAS,CAAC;YAC/E,mBAAmB;YACnB,6BAA6B,CAAyH,WAA8D;gBAClN,MAAM,MAAM,GAAsD,6BAA6B,CAAC,WAAW,CAAsD,CAAC;gBAClK,OAAO,IAAA,8CAAiC,EAAC,MAAM,CAAC,CAAC;YACnD,CAAC;YACD,6BAA6B,CAAyH,WAA8E;gBAClO,MAAM,MAAM,GAAsD,6BAA6B,CAAC,WAAW,CAAsD,CAAC;gBAClK,OAAO,IAAA,8CAAiC,EAAC,MAAM,CAAC,CAAC;YACnD,CAAC;SACF,CAAC;QAEF,OAAO,OAAO,CAAC;IACjB,CAAC,CAAC;AACJ,CAAC;AAjCD,0DAiCC"}
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../../../../../../packages/firebase/src/lib/common/firestore/context.ts"],"names":[],"mappings":";;;AACA,6CAA6W;AAqC7W;;;;;GAKG;AACH,SAAgB,uBAAuB,CAAkC,OAAyB;IAChG,OAAO,CAAC,SAAY,EAAE,EAAE;QACtB,MAAM,6BAA6B,GAAG,CAAyH,MAAsP,EAAE,EAAE;;YAAC,OAAA,iCACrZ,MAAM,KACT,SAAS,EAAE,MAAC,MAA0D,CAAC,UAAU,mCAAK,MAA+D,CAAC,SAAS,EAC/J,gBAAgB,EAAE,OAAO,EACzB,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,EAC1C,UAAU,EAAE,OAAO,CAAC,UAAU,EAC9B,oBAAoB,EAAE,OAAO,CAAC,oBAAoB,EAClD,uBAAuB,EAAE,OAAO,CAAC,uBAAuB,IACxD,CAAA;SAAA,CAAC;QAEH,MAAM,mBAAmB,GAAG,CAAoC,MAAuD,EAAE,EAAE,CAAC,IAAA,oCAAuB,EAAC,6BAA6B,CAAC,MAAM,CAAoC,CAAC,CAAC;QAC9N,MAAM,wBAAwB,GAAG,CAAoC,MAA4D,EAAE,EAAE,CAAC,IAAA,yCAA4B,EAAC,6BAA6B,CAAC,MAAM,CAAC,CAAC,CAAC;QAE1M,MAAM,OAAO,GAAwB;YACnC,SAAS;YACT,OAAO;YACP,eAAe,EAAE,CAAC,YAAoB,EAAE,EAAE,CAAC,OAAO,CAAC,uBAAuB,CAAC,eAAe,CAAC,SAAS,EAAE,YAAY,CAAC;YACnH,UAAU,EAAE,CAAC,IAAY,EAAE,GAAG,YAAsB,EAAE,EAAE,CAAC,OAAO,CAAC,uBAAuB,CAAC,UAAU,CAAC,SAAS,EAAE,IAAI,EAAE,GAAG,YAAY,CAAC;YACrI,aAAa,EAAE,OAAO,CAAC,uBAAuB,CAAC,aAAa;YAC5D,cAAc,EAAE,OAAO,CAAC,uBAAuB,CAAC,8BAA8B,CAAC,SAAS,CAAC;YACzF,KAAK,EAAE,OAAO,CAAC,uBAAuB,CAAC,6BAA6B,CAAC,SAAS,CAAC;YAC/E,mBAAmB;YACnB,wBAAwB;YACxB,6BAA6B,CAAyH,WAA8D;gBAClN,MAAM,MAAM,GAAsD,6BAA6B,CAAC,WAAW,CAAsD,CAAC;gBAClK,OAAO,IAAA,8CAAiC,EAAC,MAAM,CAAC,CAAC;YACnD,CAAC;YACD,6BAA6B,CAAyH,WAA8E;gBAClO,MAAM,MAAM,GAAsD,6BAA6B,CAAC,WAAW,CAAsD,CAAC;gBAClK,OAAO,IAAA,8CAAiC,EAAC,MAAM,CAAC,CAAC;YACnD,CAAC;SACF,CAAC;QAEF,OAAO,OAAO,CAAC;IACjB,CAAC,CAAC;AACJ,CAAC;AArCD,0DAqCC"}
@@ -1,9 +1,10 @@
1
- import { DocumentData, CollectionReference, DocumentReference, Firestore } from '../types';
1
+ import { DocumentData, CollectionReference, CollectionGroup, DocumentReference, Firestore } from '../types';
2
2
  import { DefaultFirestoreDocumentContextFactory } from '../accessor/context.default';
3
3
  import { WriteBatchFirestoreDocumentContextFactory } from '../accessor/context.batch';
4
4
  import { TransactionFirestoreDocumentContextFactory } from '../accessor/context.transaction';
5
5
  import { FirestoreWriteBatchFactoryDriver } from './batch';
6
6
  import { FirestoreTransactionFactoryDriver } from './transaction';
7
+ export declare type FirestoreAccessorDriverCollectionGroupFunction = <T = DocumentData>(firestore: Firestore, collectionId: string) => CollectionGroup<T>;
7
8
  export declare type FirestoreAccessorDriverCollectionRefFunction = <T = DocumentData>(firestore: Firestore, path: string, ...pathSegments: string[]) => CollectionReference<T>;
8
9
  export declare type FirestoreAccessorDriverSubcollectionRefFunction = <T = DocumentData>(document: DocumentReference, path: string, ...pathSegments: string[]) => CollectionReference<T>;
9
10
  export declare type FirestoreAccessorDriverDocumentRefFunction = <T = DocumentData>(collection: CollectionReference<T>, path?: string, ...pathSegments: string[]) => DocumentReference<T>;
@@ -12,6 +13,7 @@ export declare type FirestoreAccessorDriverDocumentRefFunction = <T = DocumentDa
12
13
  */
13
14
  export interface FirestoreAccessorDriver extends FirestoreTransactionFactoryDriver, FirestoreWriteBatchFactoryDriver {
14
15
  readonly doc: FirestoreAccessorDriverDocumentRefFunction;
16
+ readonly collectionGroup: FirestoreAccessorDriverCollectionGroupFunction;
15
17
  readonly collection: FirestoreAccessorDriverCollectionRefFunction;
16
18
  readonly subcollection: FirestoreAccessorDriverSubcollectionRefFunction;
17
19
  readonly defaultContextFactory: DefaultFirestoreDocumentContextFactory;
@@ -2,9 +2,9 @@ import { PageLoadingState, ItemPageIterator, ItemPageIterationInstance, ItemPage
2
2
  import { QueryDocumentSnapshotArray, QuerySnapshot, SnapshotListenOptions } from '../types';
3
3
  import { Maybe, ArrayOrValue } from '@dereekb/util';
4
4
  import { Observable } from 'rxjs';
5
- import { CollectionReferenceRef } from '../reference';
6
5
  import { FirestoreQueryDriverRef } from '../driver/query';
7
6
  import { FirestoreQueryConstraint } from './constraint';
7
+ import { QueryLikeReferenceRef } from '../reference';
8
8
  export interface FirestoreItemPageIteratorFilter extends ItemPageLimit {
9
9
  /**
10
10
  * Overrides the default limit, if applicable.
@@ -15,7 +15,7 @@ export interface FirestoreItemPageIteratorFilter extends ItemPageLimit {
15
15
  */
16
16
  constraints?: Maybe<ArrayOrValue<FirestoreQueryConstraint>>;
17
17
  }
18
- export interface FirestoreItemPageIterationBaseConfig<T> extends CollectionReferenceRef<T>, FirestoreQueryDriverRef, ItemPageLimit {
18
+ export interface FirestoreItemPageIterationBaseConfig<T> extends QueryLikeReferenceRef<T>, FirestoreQueryDriverRef, ItemPageLimit {
19
19
  itemsPerPage: number;
20
20
  }
21
21
  export interface FirestoreItemPageIterationConfig<T> extends FirestoreItemPageIterationBaseConfig<T>, ItemPageIterationConfig<FirestoreItemPageIteratorFilter> {
@@ -15,7 +15,7 @@ function makeFirestoreItemPageIteratorDelegate() {
15
15
  loadItemsForPage: (request) => {
16
16
  const { page, iteratorConfig } = request;
17
17
  const prevQueryResult$ = page > 0 ? request.lastItem$ : (0, rxjs_2.of)(undefined);
18
- const { collection, itemsPerPage, filter, firestoreQueryDriver: driver } = iteratorConfig;
18
+ const { queryLike, itemsPerPage, filter, firestoreQueryDriver: driver } = iteratorConfig;
19
19
  const { limit: filterLimit, constraints: filterConstraints } = filter !== null && filter !== void 0 ? filter : {};
20
20
  return prevQueryResult$.pipe((0, rxjs_2.exhaustMap)((prevResult) => {
21
21
  if ((prevResult === null || prevResult === void 0 ? void 0 : prevResult.snapshot.empty) === true) {
@@ -39,7 +39,7 @@ function makeFirestoreItemPageIteratorDelegate() {
39
39
  const limitConstraint = (0, constraint_1.limit)(limitCount);
40
40
  const constraintsWithLimit = [...constraints, limitConstraint];
41
41
  // make query
42
- const batchQuery = driver.query(collection, ...constraintsWithLimit);
42
+ const batchQuery = driver.query(queryLike, ...constraintsWithLimit);
43
43
  const resultPromise = driver.getDocs(batchQuery).then((snapshot) => {
44
44
  const time = new Date();
45
45
  const docs = snapshot.docs;
@@ -89,7 +89,7 @@ function firestoreItemPageIterationFactory(baseConfig) {
89
89
  return (filter) => {
90
90
  var _a;
91
91
  const result = firestoreItemPageIteration({
92
- collection: baseConfig.collection,
92
+ queryLike: baseConfig.queryLike,
93
93
  itemsPerPage: baseConfig.itemsPerPage,
94
94
  firestoreQueryDriver: baseConfig.firestoreQueryDriver,
95
95
  maxPageLoadLimit: (_a = filter === null || filter === void 0 ? void 0 : filter.maxPageLoadLimit) !== null && _a !== void 0 ? _a : baseConfig.maxPageLoadLimit,
@@ -1 +1 @@
1
- {"version":3,"file":"iterator.js","sourceRoot":"","sources":["../../../../../../../../packages/firebase/src/lib/common/firestore/query/iterator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"iterator.js","sourceRoot":"","sources":["../../../../../../../../packages/firebase/src/lib/common/firestore/query/iterator.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { Observable } from 'rxjs';
2
2
  import { ArrayOrValue, Maybe } from '@dereekb/util';
3
- import { CollectionReferenceRef } from '../reference';
3
+ import { QueryLikeReferenceRef } from '../reference';
4
4
  import { Query, QueryDocumentSnapshot, QuerySnapshot, Transaction } from '../types';
5
5
  import { FirestoreQueryConstraint } from './constraint';
6
6
  import { FirestoreQueryDriverRef } from '../driver/query';
@@ -38,7 +38,7 @@ export interface FirestoreQueryFactory<T> {
38
38
  */
39
39
  readonly query: FirestoreQueryFactoryFunction<T>;
40
40
  }
41
- export interface FirestoreQueryConfig<T> extends FirestoreQueryDriverRef, CollectionReferenceRef<T> {
41
+ export interface FirestoreQueryConfig<T> extends FirestoreQueryDriverRef, QueryLikeReferenceRef<T> {
42
42
  }
43
43
  /**
44
44
  * Creates a FirestoreCollectionQuery.
@@ -11,7 +11,7 @@ const constraint_1 = require("./constraint");
11
11
  * @returns
12
12
  */
13
13
  function firestoreQueryFactory(config) {
14
- const { collection, firestoreQueryDriver: driver } = config;
14
+ const { queryLike, firestoreQueryDriver: driver } = config;
15
15
  const { getDocs, streamDocs, query: makeQuery } = driver;
16
16
  const extendQuery = (inputQuery, queryConstraints) => {
17
17
  const allConstraints = (0, util_1.flattenArrayOrValueArray)(queryConstraints);
@@ -30,7 +30,7 @@ function firestoreQueryFactory(config) {
30
30
  };
31
31
  };
32
32
  return {
33
- query: (...queryConstraints) => extendQuery(collection, queryConstraints)
33
+ query: (...queryConstraints) => extendQuery(queryLike, queryConstraints)
34
34
  };
35
35
  }
36
36
  exports.firestoreQueryFactory = firestoreQueryFactory;
@@ -1 +1 @@
1
- {"version":3,"file":"query.js","sourceRoot":"","sources":["../../../../../../../../packages/firebase/src/lib/common/firestore/query/query.ts"],"names":[],"mappings":";;;;AACA,wCAA8E;AAG9E,6CAAwF;AA2CxF;;;;;GAKG;AACH,SAAgB,qBAAqB,CAAI,MAA+B;IACtE,MAAM,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;IAC5D,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC;IAEzD,MAAM,WAAW,GAAG,CAAC,UAAoB,EAAE,gBAA0D,EAAE,EAAE;QACvG,MAAM,cAAc,GAAG,IAAA,+BAAwB,EAAC,gBAAgB,CAAC,CAAC;QAClE,MAAM,KAAK,GAAG,SAAS,CAAC,UAAU,EAAE,GAAG,cAAc,CAAC,CAAC;QAEvD,OAAO;YACL,KAAK;YACL,WAAW,EAAE,CAAO,WAAyB,EAAE,EAAE;gBAC/C,MAAM,mBAAmB,GAAG,IAAA,2CAA8B,EAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC;gBAC9E,MAAM,KAAK,GAAG,SAAS,CAAC,UAAU,EAAE,GAAG,mBAAmB,CAAC,CAAC;gBAC5D,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;gBACjD,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACxB,CAAC,CAAA;YACD,OAAO,EAAE,CAAC,WAAyB,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,WAAW,CAAC;YACnE,UAAU,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC;YACnC,MAAM,EAAE,CAAC,GAAG,gBAA0D,EAAE,EAAE,CAAC,WAAW,CAAC,KAAK,EAAE,gBAAgB,CAAC;SAChH,CAAC;IACJ,CAAC,CAAC;IAEF,OAAO;QACL,KAAK,EAAE,CAAC,GAAG,gBAA0D,EAAE,EAAE,CAAC,WAAW,CAAC,UAAU,EAAE,gBAAgB,CAAC;KACpH,CAAC;AACJ,CAAC;AAzBD,sDAyBC"}
1
+ {"version":3,"file":"query.js","sourceRoot":"","sources":["../../../../../../../../packages/firebase/src/lib/common/firestore/query/query.ts"],"names":[],"mappings":";;;;AACA,wCAA8E;AAG9E,6CAAwF;AA2CxF;;;;;GAKG;AACH,SAAgB,qBAAqB,CAAI,MAA+B;IACtE,MAAM,EAAE,SAAS,EAAE,oBAAoB,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;IAC3D,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC;IAEzD,MAAM,WAAW,GAAG,CAAC,UAAoB,EAAE,gBAA0D,EAAE,EAAE;QACvG,MAAM,cAAc,GAAG,IAAA,+BAAwB,EAAC,gBAAgB,CAAC,CAAC;QAClE,MAAM,KAAK,GAAG,SAAS,CAAC,UAAU,EAAE,GAAG,cAAc,CAAC,CAAC;QAEvD,OAAO;YACL,KAAK;YACL,WAAW,EAAE,CAAO,WAAyB,EAAE,EAAE;gBAC/C,MAAM,mBAAmB,GAAG,IAAA,2CAA8B,EAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC;gBAC9E,MAAM,KAAK,GAAG,SAAS,CAAC,UAAU,EAAE,GAAG,mBAAmB,CAAC,CAAC;gBAC5D,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;gBACjD,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACxB,CAAC,CAAA;YACD,OAAO,EAAE,CAAC,WAAyB,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,WAAW,CAAC;YACnE,UAAU,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC;YACnC,MAAM,EAAE,CAAC,GAAG,gBAA0D,EAAE,EAAE,CAAC,WAAW,CAAC,KAAK,EAAE,gBAAgB,CAAC;SAChH,CAAC;IACJ,CAAC,CAAC;IAEF,OAAO;QACL,KAAK,EAAE,CAAC,GAAG,gBAA0D,EAAE,EAAE,CAAC,WAAW,CAAC,SAAS,EAAE,gBAAgB,CAAC;KACnH,CAAC;AACJ,CAAC;AAzBD,sDAyBC"}
@@ -1,5 +1,11 @@
1
1
  import { FirestoreContext } from './context';
2
- import { CollectionReference, DocumentReference, Firestore } from './types';
2
+ import { CollectionReference, DocumentReference, Firestore, Query } from './types';
3
+ /**
4
+ * Contains a reference to a Query.
5
+ */
6
+ export interface QueryLikeReferenceRef<T> {
7
+ readonly queryLike: Query<T>;
8
+ }
3
9
  /**
4
10
  * Contains a reference to a CollectionReference.
5
11
  */
@@ -96,6 +96,11 @@ export interface CollectionReference<T = DocumentData> extends Query<T> {
96
96
  withConverter<U>(converter: FirestoreDataConverter<U>): CollectionReference<U>;
97
97
  withConverter(converter: null): CollectionReference<DocumentData>;
98
98
  }
99
+ export interface CollectionGroup<T = DocumentData> extends Query<T> {
100
+ readonly type?: 'query';
101
+ withConverter<U>(converter: FirestoreDataConverter<U>): CollectionGroup<U>;
102
+ withConverter(converter: null): CollectionGroup<DocumentData>;
103
+ }
99
104
  export interface WriteBatch {
100
105
  /**
101
106
  * Commits the changes.
package/test/CHANGELOG.md CHANGED
@@ -2,6 +2,16 @@
2
2
 
3
3
  This file was generated using [@jscutlery/semver](https://github.com/jscutlery/semver).
4
4
 
5
+ # [5.2.0](https://github.com/dereekb/dbx-components/compare/v5.1.0-dev...v5.2.0) (2022-05-29)
6
+
7
+
8
+ ### Features
9
+
10
+ * added collection group support to dbx-firebase components ([9f746c1](https://github.com/dereekb/dbx-components/commit/9f746c12a0e219970dcde12d920f1ef540514ce9))
11
+ * added firestore collection group support ([3b4c4cf](https://github.com/dereekb/dbx-components/commit/3b4c4cfa1dd860604c347ade69acdc2fea1063f8))
12
+
13
+
14
+
5
15
  # [5.1.0](https://github.com/dereekb/dbx-components/compare/v5.0.1-dev...v5.1.0) (2022-05-27)
6
16
 
7
17
 
package/test/package.json CHANGED
@@ -1,27 +1,27 @@
1
1
  {
2
2
  "name": "@dereekb/firebase/test",
3
- "version": "5.1.0",
3
+ "version": "5.2.0",
4
4
  "main": "./src/index.js",
5
5
  "typings": "./src/index.d.ts",
6
6
  "dependencies": {},
7
7
  "peerDependencies": {
8
- "@dereekb/util/test": "5.1.0",
9
- "@dereekb/util": "5.1.0",
8
+ "@dereekb/util/test": "5.2.0",
9
+ "@dereekb/util": "5.2.0",
10
10
  "make-error": "^1.3.0",
11
11
  "extra-set": "^2.2.11",
12
- "@dereekb/firebase": "5.1.0",
12
+ "@dereekb/firebase": "5.2.0",
13
13
  "rxjs": "^7.0.0",
14
14
  "rxfire": "^6.0.3",
15
15
  "firebase": "^9.8.0",
16
- "@dereekb/rxjs": "5.1.0",
16
+ "@dereekb/rxjs": "5.2.0",
17
17
  "ms": "^3.0.0-canary.1",
18
- "@dereekb/date": "5.1.0",
18
+ "@dereekb/date": "5.2.0",
19
19
  "class-transformer": "^0.5.1",
20
20
  "date-fns": "^2.28.0",
21
21
  "class-validator": "^0.13.2",
22
22
  "date-fns-tz": "^1.3.0",
23
23
  "rrule": "git+https://git@github.com/dereekb/rrule.git#17adf5708d6567b4d01a3a8afd106261421ea492",
24
- "@dereekb/model": "5.1.0",
24
+ "@dereekb/model": "5.2.0",
25
25
  "tslib": "^2.0.0"
26
26
  }
27
27
  }
@@ -1,4 +1,7 @@
1
1
  import { FirestoreAccessorDriver, FirestoreContext, FirestoreDrivers } from '@dereekb/firebase';
2
+ /**
3
+ * Used to override/extend a FirestoreAccessorDriver to provide better isolation between tests.
4
+ */
2
5
  export interface TestingFirestoreAccessorDriver extends FirestoreAccessorDriver {
3
6
  /**
4
7
  * Gets the fuzzed path names map.
@@ -7,8 +7,8 @@ function makeTestingFirestoreAccesorDriver(driver) {
7
7
  let fuzzerKey = 0;
8
8
  const time = new Date().getTime();
9
9
  const fuzzedMap = new Map();
10
- const collection = driver.collection;
11
- const fuzzedCollectionName = (path) => {
10
+ const { collection, subcollection, collectionGroup } = driver;
11
+ const fuzzedPathForPath = (path) => {
12
12
  let fuzzedPath = fuzzedMap.get(path);
13
13
  if (!fuzzedPath) {
14
14
  const random = Math.ceil(Math.random() * 9999) % 9999;
@@ -18,14 +18,23 @@ function makeTestingFirestoreAccesorDriver(driver) {
18
18
  return fuzzedPath;
19
19
  };
20
20
  const fuzzedCollection = (f, path) => {
21
- const fuzzedPath = fuzzedCollectionName(path);
21
+ const fuzzedPath = fuzzedPathForPath(path);
22
22
  return collection(f, fuzzedPath);
23
23
  };
24
+ const fuzzedSubcollection = (document, path, ...pathSegments) => {
25
+ const fuzzedPath = fuzzedPathForPath(path);
26
+ const fuzzedPathSegments = pathSegments.map((x) => fuzzedPathForPath(x));
27
+ return subcollection(document, fuzzedPath, ...fuzzedPathSegments);
28
+ };
29
+ const fuzzedCollectionGroup = (f, collectionId) => {
30
+ const fuzzedPath = fuzzedPathForPath(collectionId);
31
+ return collectionGroup(f, fuzzedPath);
32
+ };
24
33
  const initWithCollectionNames = (collectionPaths) => {
25
- collectionPaths.forEach((x) => fuzzedCollectionName(x));
34
+ collectionPaths.forEach((x) => fuzzedPathForPath(x));
26
35
  return fuzzedMap;
27
36
  };
28
- const injectedDriver = Object.assign(Object.assign({}, driver), { collection: fuzzedCollection, getFuzzedCollectionsNameMap: () => fuzzedMap, initWithCollectionNames });
37
+ const injectedDriver = Object.assign(Object.assign({}, driver), { collection: fuzzedCollection, collectionGroup: fuzzedCollectionGroup, subcollection: fuzzedSubcollection, getFuzzedCollectionsNameMap: () => fuzzedMap, initWithCollectionNames });
29
38
  return injectedDriver;
30
39
  }
31
40
  exports.makeTestingFirestoreAccesorDriver = makeTestingFirestoreAccesorDriver;
@@ -1 +1 @@
1
- {"version":3,"file":"firestore.js","sourceRoot":"","sources":["../../../../../../../packages/firebase/test/src/lib/common/firestore.ts"],"names":[],"mappings":";;;;AAAA,wCAA+C;AAkB/C,SAAgB,iCAAiC,CAAC,MAA+B;IAC/E,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;IAClC,MAAM,SAAS,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC5C,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;IAErC,MAAM,oBAAoB,GAAG,CAAC,IAAY,EAAE,EAAE;QAC5C,IAAI,UAAU,GAAW,SAAS,CAAC,GAAG,CAAC,IAAI,CAAE,CAAC;QAE9C,IAAI,CAAC,UAAU,EAAE;YACf,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;YACtD,UAAU,GAAG,GAAG,IAAI,IAAI,MAAM,IAAI,IAAI,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC,EAAE,CAAC;YAC7D,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;SACjC;QAED,OAAO,UAAU,CAAC;IACpB,CAAC,CAAC;IAEF,MAAM,gBAAgB,GAAG,CAAI,CAAY,EAAE,IAAY,EAAE,EAAE;QACzD,MAAM,UAAU,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC;QAC9C,OAAO,UAAU,CAAI,CAAC,EAAE,UAAU,CAAC,CAAC;IACtC,CAAC,CAAC;IAEF,MAAM,uBAAuB,GAAG,CAAC,eAAyB,EAAE,EAAE;QAC5D,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC;QACxD,OAAO,SAAS,CAAC;IACnB,CAAC,CAAC;IAEF,MAAM,cAAc,GAAG,gCAClB,MAAM,KACT,UAAU,EAAE,gBAAgB,EAC5B,2BAA2B,EAAE,GAAG,EAAE,CAAC,SAAS,EAC5C,uBAAuB,GACjB,CAAC;IAET,OAAO,cAAc,CAAC;AACxB,CAAC;AApCD,8EAoCC;AAUD;;;;;GAKG;AACH,SAAgB,2BAA2B,CAAC,OAAyB;IACnE,uCACK,OAAO,KACV,UAAU,EAAE,SAAS,EACrB,uBAAuB,EAAE,iCAAiC,CAAC,OAAO,CAAC,uBAAuB,CAAC,IAC3F;AACJ,CAAC;AAND,kEAMC;AAYD,SAAsB,oCAAoC,CAAC,OAA6B,EAAE,eAAqD;;QAC7I,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,uBAAuB,CAAC,2BAA2B,EAAE,CAAC;QACpF,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAC3C,MAAM,qBAAc,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;IACrG,CAAC;CAAA;AAJD,oFAIC"}
1
+ {"version":3,"file":"firestore.js","sourceRoot":"","sources":["../../../../../../../packages/firebase/test/src/lib/common/firestore.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { Maybe } from '@dereekb/util';
2
- import { CollectionReference, FirestoreCollection, FirestoreContext, AbstractFirestoreDocument, SingleItemFirestoreCollection, FirestoreCollectionWithParent, AbstractFirestoreDocumentWithParent, ExpectedFirestoreModelData, FirestoreModelData } from '@dereekb/firebase';
2
+ import { CollectionReference, FirestoreCollection, FirestoreContext, AbstractFirestoreDocument, SingleItemFirestoreCollection, FirestoreCollectionWithParent, AbstractFirestoreDocumentWithParent, ExpectedFirestoreModelData, FirestoreModelData, CollectionGroup, FirestoreCollectionGroup } from '@dereekb/firebase';
3
3
  /**
4
4
  * Converted data for a test item in our firestore collection.
5
5
  */
@@ -111,9 +111,13 @@ export declare function mockItemSubItemCollectionReferenceFactory(context: Fires
111
111
  export declare type MockItemSubItemFirestoreCollection = FirestoreCollectionWithParent<MockItemSubItem, MockItem, MockItemSubItemDocument, MockItemDocument>;
112
112
  export declare type MockItemSubItemFirestoreCollectionFactory = (parent: MockItemDocument) => MockItemSubItemFirestoreCollection;
113
113
  export declare function mockItemSubItemFirestoreCollection(firestoreContext: FirestoreContext): MockItemSubItemFirestoreCollectionFactory;
114
+ export declare function mockItemSubItemCollectionReference(context: FirestoreContext): CollectionGroup<MockItemSubItem>;
115
+ export declare type MockItemSubItemFirestoreCollectionGroup = FirestoreCollectionGroup<MockItemSubItem, MockItemSubItemDocument>;
116
+ export declare function mockItemSubItemFirestoreCollectionGroup(firestoreContext: FirestoreContext): MockItemSubItemFirestoreCollectionGroup;
114
117
  export declare abstract class MockItemCollections {
115
118
  abstract readonly mockItem: MockItemFirestoreCollection;
116
119
  abstract readonly mockItemPrivate: MockItemPrivateFirestoreCollectionFactory;
117
120
  abstract readonly mockItemSubItem: MockItemSubItemFirestoreCollectionFactory;
121
+ abstract readonly mockItemSubItemGroup: MockItemSubItemFirestoreCollectionGroup;
118
122
  }
119
123
  export declare function makeMockItemCollections(firestoreContext: FirestoreContext): MockItemCollections;
@@ -9,6 +9,7 @@ export declare class MockItemCollectionFixtureInstance {
9
9
  get firestoreCollection(): MockItemFirestoreCollection;
10
10
  get mockItemPrivateCollection(): import("./firestore.mock.item").MockItemPrivateFirestoreCollectionFactory;
11
11
  get mockItemSubItemCollection(): import("./firestore.mock.item").MockItemSubItemFirestoreCollectionFactory;
12
+ get mockItemSubItemCollectionGroup(): import("./firestore.mock.item").MockItemSubItemFirestoreCollectionGroup;
12
13
  constructor(fixture: MockItemCollectionFixture);
13
14
  }
14
15
  /**
@@ -21,6 +21,9 @@ class MockItemCollectionFixtureInstance {
21
21
  get mockItemSubItemCollection() {
22
22
  return this.collections.mockItemSubItem;
23
23
  }
24
+ get mockItemSubItemCollectionGroup() {
25
+ return this.collections.mockItemSubItemGroup;
26
+ }
24
27
  }
25
28
  exports.MockItemCollectionFixtureInstance = MockItemCollectionFixtureInstance;
26
29
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"firestore.mock.item.fixture.js","sourceRoot":"","sources":["../../../../../../../packages/firebase/test/src/lib/common/firestore.mock.item.fixture.ts"],"names":[],"mappings":";;;AACA,6CAAkJ;AAClJ,+DAAuG;AAGvG,kCAAkC;AAClC,MAAa,iCAAiC;IAkB5C,YAAqB,OAAkC;QAAlC,YAAO,GAAP,OAAO,CAA2B;QAjB9C,gBAAW,GAAG,IAAA,6CAAuB,EAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAiBlB,CAAC;IAf3D,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC;IAC7C,CAAC;IACD,IAAI,mBAAmB;QACrB,OAAO,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;IACnC,CAAC;IAED,IAAI,yBAAyB;QAC3B,OAAO,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC;IAC1C,CAAC;IAED,IAAI,yBAAyB;QAC3B,OAAO,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC;IAC1C,CAAC;CAGF;AAnBD,8EAmBC;AAED;;GAEG;AACH,MAAa,yBAA0B,SAAQ,yCAAkG;CAAG;AAApJ,8DAAoJ;AAIpJ,SAAgB,uBAAuB,CAAC,MAAgD;IACtF,OAAO,IAAA,yCAAkC,EAAC;QACxC,WAAW,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,yBAAyB,CAAC,OAAO,CAAC;QAChE,YAAY,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,iCAAiC,CAAC,IAAI,CAAC;QACnE,gBAAgB,EAAE,CAAC,QAA2C,EAAE,EAAE;YAChE,qDAAqD;QACvD,CAAC;QACD,sEAAsE;KACvE,CAAC,CAAC;AACL,CAAC;AATD,0DASC"}
1
+ {"version":3,"file":"firestore.mock.item.fixture.js","sourceRoot":"","sources":["../../../../../../../packages/firebase/test/src/lib/common/firestore.mock.item.fixture.ts"],"names":[],"mappings":";;;AACA,6CAAkJ;AAClJ,+DAAuG;AAGvG,kCAAkC;AAClC,MAAa,iCAAiC;IAsB5C,YAAqB,OAAkC;QAAlC,YAAO,GAAP,OAAO,CAA2B;QArB9C,gBAAW,GAAG,IAAA,6CAAuB,EAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAqBlB,CAAC;IAnB3D,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC;IAC7C,CAAC;IACD,IAAI,mBAAmB;QACrB,OAAO,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;IACnC,CAAC;IAED,IAAI,yBAAyB;QAC3B,OAAO,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC;IAC1C,CAAC;IAED,IAAI,yBAAyB;QAC3B,OAAO,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC;IAC1C,CAAC;IAED,IAAI,8BAA8B;QAChC,OAAO,IAAI,CAAC,WAAW,CAAC,oBAAoB,CAAC;IAC/C,CAAC;CAGF;AAvBD,8EAuBC;AAED;;GAEG;AACH,MAAa,yBAA0B,SAAQ,yCAAkG;CAAG;AAApJ,8DAAoJ;AAIpJ,SAAgB,uBAAuB,CAAC,MAAgD;IACtF,OAAO,IAAA,yCAAkC,EAAC;QACxC,WAAW,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,yBAAyB,CAAC,OAAO,CAAC;QAChE,YAAY,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,iCAAiC,CAAC,IAAI,CAAC;QACnE,gBAAgB,EAAE,CAAC,QAA2C,EAAE,EAAE;YAChE,qDAAqD;QACvD,CAAC;QACD,sEAAsE;KACvE,CAAC,CAAC;AACL,CAAC;AATD,0DASC"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.makeMockItemCollections = exports.MockItemCollections = exports.mockItemSubItemFirestoreCollection = exports.mockItemSubItemCollectionReferenceFactory = exports.mockItemSubItemConverter = exports.mockItemSubItemCollectionPath = exports.MockItemSubItemDocument = exports.mockItemPrivateFirestoreCollection = exports.mockItemPrivateCollectionReferenceFactory = exports.mockItemPrivateConverter = exports.mockItemPrivateIdentifier = exports.mockItemPrivateCollectionPath = exports.MockItemPrivateDocument = exports.mockItemFirestoreCollection = exports.mockItemCollectionReference = exports.mockItemConverter = exports.mockItemCollectionPath = exports.MockItemDocument = void 0;
3
+ exports.makeMockItemCollections = exports.MockItemCollections = exports.mockItemSubItemFirestoreCollectionGroup = exports.mockItemSubItemCollectionReference = exports.mockItemSubItemFirestoreCollection = exports.mockItemSubItemCollectionReferenceFactory = exports.mockItemSubItemConverter = exports.mockItemSubItemCollectionPath = exports.MockItemSubItemDocument = exports.mockItemPrivateFirestoreCollection = exports.mockItemPrivateCollectionReferenceFactory = exports.mockItemPrivateConverter = exports.mockItemPrivateIdentifier = exports.mockItemPrivateCollectionPath = exports.MockItemPrivateDocument = exports.mockItemFirestoreCollection = exports.mockItemCollectionReference = exports.mockItemConverter = exports.mockItemCollectionPath = exports.MockItemDocument = void 0;
4
4
  const util_1 = require("@dereekb/util");
5
5
  const firebase_1 = require("@dereekb/firebase");
6
6
  class MockItemDocument extends firebase_1.AbstractFirestoreDocument {
@@ -121,6 +121,19 @@ function mockItemSubItemFirestoreCollection(firestoreContext) {
121
121
  };
122
122
  }
123
123
  exports.mockItemSubItemFirestoreCollection = mockItemSubItemFirestoreCollection;
124
+ function mockItemSubItemCollectionReference(context) {
125
+ return context.collectionGroup(exports.mockItemSubItemCollectionPath).withConverter(exports.mockItemSubItemConverter);
126
+ }
127
+ exports.mockItemSubItemCollectionReference = mockItemSubItemCollectionReference;
128
+ function mockItemSubItemFirestoreCollectionGroup(firestoreContext) {
129
+ return firestoreContext.firestoreCollectionGroup({
130
+ itemsPerPage: 50,
131
+ queryLike: mockItemSubItemCollectionReference(firestoreContext),
132
+ makeDocument: (accessor, documentAccessor) => new MockItemSubItemDocument(undefined, accessor, documentAccessor),
133
+ firestoreContext
134
+ });
135
+ }
136
+ exports.mockItemSubItemFirestoreCollectionGroup = mockItemSubItemFirestoreCollectionGroup;
124
137
  // MARK: Collection
125
138
  class MockItemCollections {
126
139
  }
@@ -129,7 +142,8 @@ function makeMockItemCollections(firestoreContext) {
129
142
  return {
130
143
  mockItem: mockItemFirestoreCollection(firestoreContext),
131
144
  mockItemPrivate: mockItemPrivateFirestoreCollection(firestoreContext),
132
- mockItemSubItem: mockItemSubItemFirestoreCollection(firestoreContext)
145
+ mockItemSubItem: mockItemSubItemFirestoreCollection(firestoreContext),
146
+ mockItemSubItemGroup: mockItemSubItemFirestoreCollectionGroup(firestoreContext)
133
147
  };
134
148
  }
135
149
  exports.makeMockItemCollections = makeMockItemCollections;
@@ -1 +1 @@
1
- {"version":3,"file":"firestore.mock.item.js","sourceRoot":"","sources":["../../../../../../../packages/firebase/test/src/lib/common/firestore.mock.item.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"firestore.mock.item.js","sourceRoot":"","sources":["../../../../../../../packages/firebase/test/src/lib/common/firestore.mock.item.ts"],"names":[],"mappings":"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"}
@@ -12,21 +12,124 @@ const firebase_1 = require("@dereekb/firebase");
12
12
  */
13
13
  function describeQueryDriverTests(f) {
14
14
  describe('FirestoreQueryDriver', () => {
15
- describe('query', () => {
16
- const testDocumentCount = 5;
17
- let query;
18
- let items;
15
+ const testDocumentCount = 5;
16
+ let items;
17
+ beforeEach(() => tslib_1.__awaiter(this, void 0, void 0, function* () {
18
+ items = yield (0, firebase_1.makeDocuments)(f.instance.firestoreCollection.documentAccessor(), {
19
+ count: testDocumentCount,
20
+ init: (i) => {
21
+ return {
22
+ value: `${i}`,
23
+ test: true
24
+ };
25
+ }
26
+ });
27
+ }));
28
+ describe('collection group', () => {
29
+ const subItemCountPerItem = 2;
30
+ const totalSubItemsCount = subItemCountPerItem * testDocumentCount;
31
+ let parentA;
32
+ let querySubItems;
33
+ let allSubItems;
19
34
  beforeEach(() => tslib_1.__awaiter(this, void 0, void 0, function* () {
20
- query = f.instance.firestoreCollection.query;
21
- items = yield (0, firebase_1.makeDocuments)(f.instance.firestoreCollection.documentAccessor(), {
22
- count: testDocumentCount,
35
+ querySubItems = f.instance.mockItemSubItemCollectionGroup.query;
36
+ parentA = items[0];
37
+ const results = yield Promise.all(items.map((parent) => (0, firebase_1.makeDocuments)(f.instance.mockItemSubItemCollection(parent).documentAccessor(), {
38
+ count: subItemCountPerItem,
23
39
  init: (i) => {
24
40
  return {
25
- value: `${i}`,
26
- test: true
41
+ value: i
27
42
  };
28
43
  }
44
+ })));
45
+ allSubItems = results.flat();
46
+ }));
47
+ describe('query', () => {
48
+ it('should return sub items', () => tslib_1.__awaiter(this, void 0, void 0, function* () {
49
+ const result = yield querySubItems().getDocs();
50
+ expect(result.docs.length).toBe(totalSubItemsCount);
51
+ }));
52
+ describe('constraints', () => {
53
+ describe('where', () => {
54
+ it('should return the documents matching the query.', () => tslib_1.__awaiter(this, void 0, void 0, function* () {
55
+ const value = 0;
56
+ const result = yield querySubItems((0, firebase_1.where)('value', '==', value)).getDocs();
57
+ expect(result.docs.length).toBe(testDocumentCount);
58
+ expect(result.docs[0].data().value).toBe(value);
59
+ }));
60
+ });
61
+ });
62
+ describe('streamDocs()', () => {
63
+ let sub;
64
+ beforeEach(() => {
65
+ sub = new rxjs_1.SubscriptionObject();
66
+ });
67
+ afterEach(() => {
68
+ sub.destroy();
69
+ });
70
+ it('should emit when the query results update (an item is added).', (done) => {
71
+ const itemsToAdd = 1;
72
+ let addCompleted = false;
73
+ let addSeen = false;
74
+ function tryComplete() {
75
+ if (addSeen && addCompleted) {
76
+ done();
77
+ }
78
+ }
79
+ sub.subscription = querySubItems()
80
+ .streamDocs()
81
+ .pipe((0, rxjs_2.filter)((x) => x.docs.length > allSubItems.length))
82
+ .subscribe((results) => {
83
+ addSeen = true;
84
+ expect(results.docs.length).toBe(allSubItems.length + itemsToAdd);
85
+ tryComplete();
86
+ });
87
+ // add one item
88
+ (0, firebase_1.makeDocuments)(f.instance.mockItemSubItemCollection(parentA).documentAccessor(), {
89
+ count: itemsToAdd,
90
+ init: (i) => {
91
+ return {
92
+ value: i
93
+ };
94
+ }
95
+ }).then(() => {
96
+ addCompleted = true;
97
+ tryComplete();
98
+ });
99
+ });
100
+ it('should emit when the query results update (an item is removed).', (done) => {
101
+ const itemsToRemove = 1;
102
+ let deleteCompleted = false;
103
+ let deleteSeen = false;
104
+ function tryComplete() {
105
+ if (deleteSeen && deleteCompleted) {
106
+ done();
107
+ }
108
+ }
109
+ sub.subscription = querySubItems()
110
+ .streamDocs()
111
+ .pipe((0, rxjs_2.filter)((x) => x.docs.length < allSubItems.length))
112
+ .subscribe((results) => {
113
+ deleteSeen = true;
114
+ expect(results.docs.length).toBe(allSubItems.length - itemsToRemove);
115
+ tryComplete();
116
+ });
117
+ allSubItems[0].accessor.exists().then((exists) => {
118
+ expect(exists).toBe(true);
119
+ // remove one item
120
+ return allSubItems[0].accessor.delete().then(() => {
121
+ deleteCompleted = true;
122
+ tryComplete();
123
+ });
124
+ });
125
+ });
29
126
  });
127
+ });
128
+ });
129
+ describe('query', () => {
130
+ let query;
131
+ beforeEach(() => tslib_1.__awaiter(this, void 0, void 0, function* () {
132
+ query = f.instance.firestoreCollection.query;
30
133
  }));
31
134
  describe('streamDocs()', () => {
32
135
  let sub;