@dereekb/firebase 5.1.0 → 5.3.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 (50) hide show
  1. package/CHANGELOG.md +18 -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 +18 -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
  49. package/test/src/lib/common/test.iterator.js +1 -0
  50. package/test/src/lib/common/test.iterator.js.map +1 -1
package/CHANGELOG.md CHANGED
@@ -2,6 +2,24 @@
2
2
 
3
3
  This file was generated using [@jscutlery/semver](https://github.com/jscutlery/semver).
4
4
 
5
+ # [5.3.0](https://github.com/dereekb/dbx-components/compare/v5.2.1-dev...v5.3.0) (2022-05-30)
6
+
7
+
8
+
9
+ ## [5.2.1](https://github.com/dereekb/dbx-components/compare/v5.2.0-dev...v5.2.1) (2022-05-29)
10
+
11
+
12
+
13
+ # [5.2.0](https://github.com/dereekb/dbx-components/compare/v5.1.0-dev...v5.2.0) (2022-05-29)
14
+
15
+
16
+ ### Features
17
+
18
+ * added collection group support to dbx-firebase components ([9f746c1](https://github.com/dereekb/dbx-components/commit/9f746c12a0e219970dcde12d920f1ef540514ce9))
19
+ * added firestore collection group support ([3b4c4cf](https://github.com/dereekb/dbx-components/commit/3b4c4cfa1dd860604c347ade69acdc2fea1063f8))
20
+
21
+
22
+
5
23
  # [5.1.0](https://github.com/dereekb/dbx-components/compare/v5.0.1-dev...v5.1.0) (2022-05-27)
6
24
 
7
25
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dereekb/firebase",
3
- "version": "5.1.0",
3
+ "version": "5.3.0",
4
4
  "devDependencies": {
5
5
  "@firebase/rules-unit-testing": "^2.0.0"
6
6
  },
@@ -22,18 +22,18 @@
22
22
  "rxjs": "^7.0.0",
23
23
  "rxfire": "^6.0.3",
24
24
  "firebase": "^9.8.0",
25
- "@dereekb/util": "5.1.0",
25
+ "@dereekb/util": "5.3.0",
26
26
  "make-error": "^1.3.0",
27
27
  "extra-set": "^2.2.11",
28
- "@dereekb/rxjs": "5.1.0",
28
+ "@dereekb/rxjs": "5.3.0",
29
29
  "ms": "^3.0.0-canary.1",
30
- "@dereekb/date": "5.1.0",
30
+ "@dereekb/date": "5.3.0",
31
31
  "class-transformer": "^0.5.1",
32
32
  "date-fns": "^2.28.0",
33
33
  "class-validator": "^0.13.2",
34
34
  "date-fns-tz": "^1.3.0",
35
35
  "rrule": "git+https://git@github.com/dereekb/rrule.git#17adf5708d6567b4d01a3a8afd106261421ea492",
36
- "@dereekb/model": "5.1.0",
36
+ "@dereekb/model": "5.3.0",
37
37
  "tslib": "^2.0.0"
38
38
  }
39
39
  }
@@ -10,6 +10,7 @@ const driver_accessor_transaction_1 = require("./driver.accessor.transaction");
10
10
  function firestoreClientAccessorDriver() {
11
11
  return {
12
12
  doc: firestore_2.doc,
13
+ collectionGroup: firestore_2.collectionGroup,
13
14
  collection: firestore_2.collection,
14
15
  subcollection: firestore_2.collection,
15
16
  transactionFactoryForFirestore: (firestore) => (fn) => tslib_1.__awaiter(this, void 0, void 0, function* () { return yield (0, firestore_1.runTransaction)(firestore, fn); }),
@@ -1 +1 @@
1
- {"version":3,"file":"driver.accessor.js","sourceRoot":"","sources":["../../../../../../../packages/firebase/src/lib/client/firestore/driver.accessor.ts"],"names":[],"mappings":";;;;AAAA,mDAAgE;AAChE,kDAA8E;AAG9E,mEAAoE;AACpE,uEAA4E;AAC5E,+EAA2E;AAI3E,SAAgB,6BAA6B;IAC3C,OAAO;QACL,GAAG,EAAE,eAA4D;QACjE,UAAU,EAAE,sBAAqE;QACjF,aAAa,EAAE,sBAAwE;QACvF,8BAA8B,EAC5B,CAAC,SAAS,EAAE,EAAE,CACd,CAAU,EAA0B,EAAE,EAAE,wDACtC,OAAA,MAAM,IAAA,0BAAc,EAAC,SAAsB,EAAE,EAA8C,CAAC,CAAA,GAAA;QAChG,6BAA6B,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,IAAA,sBAAU,EAAC,SAAsB,CAAC;QACtF,qBAAqB,EAAE,yDAA+B;QACtD,yBAAyB,EAAE,wDAAwE;QACnG,wBAAwB,EAAE,iDAAiF;KAC5G,CAAC;AACJ,CAAC;AAdD,sEAcC"}
1
+ {"version":3,"file":"driver.accessor.js","sourceRoot":"","sources":["../../../../../../../packages/firebase/src/lib/client/firestore/driver.accessor.ts"],"names":[],"mappings":";;;;AAAA,mDAAgE;AAChE,kDAA+F;AAG/F,mEAAoE;AACpE,uEAA4E;AAC5E,+EAA2E;AAI3E,SAAgB,6BAA6B;IAC3C,OAAO;QACL,GAAG,EAAE,eAA4D;QACjE,eAAe,EAAE,2BAA4E;QAC7F,UAAU,EAAE,sBAAqE;QACjF,aAAa,EAAE,sBAAwE;QACvF,8BAA8B,EAC5B,CAAC,SAAS,EAAE,EAAE,CACd,CAAU,EAA0B,EAAE,EAAE,wDACtC,OAAA,MAAM,IAAA,0BAAc,EAAC,SAAsB,EAAE,EAA8C,CAAC,CAAA,GAAA;QAChG,6BAA6B,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,IAAA,sBAAU,EAAC,SAAsB,CAAC;QACtF,qBAAqB,EAAE,yDAA+B;QACtD,yBAAyB,EAAE,wDAAwE;QACnG,wBAAwB,EAAE,iDAAiF;KAC5G,CAAC;AACJ,CAAC;AAfD,sEAeC"}
@@ -1 +1 @@
1
- {"version":3,"file":"driver.query.js","sourceRoot":"","sources":["../../../../../../../packages/firebase/src/lib/client/firestore/driver.query.ts"],"names":[],"mappings":";;;AAEA,kDAA+M;AAC/M,0EAWmD;AACnD,+EAA0G;AAG1G,wEAA+E;AAO/E,SAAgB,sBAAsB,CAAC,OAAsC,EAAE,UAAyC;IACtH,OAAO;QACL,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,WAAW,EAAE,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,UAAU,CAAC;KACpD,CAAC;AACJ,CAAC;AALD,wDAKC;AAEY,QAAA,iDAAiD,GAA+E;IAC3I,CAAC,kDAAqC,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,sBAAsB,CAAC,OAAO,EAAE,IAAA,iBAAK,EAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC9G,CAAC,0DAA6C,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,sBAAsB,CAAC,OAAO,EAAE,IAAA,uBAAW,EAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5H,CAAC,qDAAwC,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,sBAAsB,CAAC,OAAO,EAAE,IAAA,mBAAO,EAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;IAC1I,CAAC,kDAAqC,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,sBAAsB,CAAC,OAAO,EAAE,IAAA,iBAAK,EAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAC1I,CAAC,mDAAsC,CAAC,EAAE,SAAS;IACnD,CAAC,qDAAwC,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,sBAAsB,CAAC,OAAO,EAAE,IAAA,mBAAO,EAAC,IAAI,CAAC,QAA4B,CAAC,CAAC;IAC1I,CAAC,wDAA2C,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,sBAAsB,CAAC,OAAO,EAAE,IAAA,sBAAU,EAAC,IAAI,CAAC,QAA4B,CAAC,CAAC;IAChJ,CAAC,mDAAsC,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,sBAAsB,CAAC,OAAO,EAAE,IAAA,iBAAK,EAAC,IAAI,CAAC,QAA4B,CAAC,CAAC;IACtI,CAAC,uDAA0C,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,sBAAsB,CAAC,OAAO,EAAE,IAAA,qBAAS,EAAC,IAAI,CAAC,QAA4B,CAAC,CAAC;CAC/I,CAAC;AAEF,SAAgB,+CAA+C;IAC7D,OAAO,IAAA,2DAA2C,EAAC;QACjD,OAAO,EAAE,yDAAiD;QAC1D,IAAI,EAAE,CAAI,KAAe,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC;QAC1D,KAAK,EAAE,CAAI,EAAE,KAAK,EAAE,YAAY,EAAE,WAAW,EAAiC,EAAE,EAAE,CAAC,IAAA,iBAAK,EAAC,YAAyC,EAAE,GAAG,WAAW,CAAC;KACpJ,CAAC,CAAC;AACL,CAAC;AAND,0GAMC;AAED,SAAgB,4BAA4B;IAC1C,uCACK,+CAA+C,EAAE,KACpD,OAAO,CAAI,KAAe,EAAE,WAAyB;YACnD,IAAI,WAAW,EAAE;gBACf,qFAAqF;gBACrF,MAAM,IAAI,KAAK,CAAC,8EAA8E,CAAC,CAAC;aACjG;YAED,OAAO,IAAA,mBAAO,EAAC,KAAkC,CAAC,CAAC;QACrD,CAAC;QACD,UAAU,CAAI,KAAe,EAAE,OAAsC;YACnE,OAAO,IAAA,iCAAoB,EAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAA,sBAAU,EAAC,KAAkC,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,IAAA,sBAAU,EAAC,KAAkC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;QACvK,CAAC,IACD;AACJ,CAAC;AAfD,oEAeC"}
1
+ {"version":3,"file":"driver.query.js","sourceRoot":"","sources":["../../../../../../../packages/firebase/src/lib/client/firestore/driver.query.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@ import { DocumentReference, CollectionReference, Transaction, WriteBatch, Docume
4
4
  import { FirestoreDocumentDataAccessor } from './accessor';
5
5
  import { CollectionReferenceRef, DocumentReferenceRef } from '../reference';
6
6
  import { FirestoreDocumentContext } from './context';
7
+ import { Maybe } from '@dereekb/util';
7
8
  export interface FirestoreDocument<T, A extends FirestoreDocumentDataAccessor<T> = FirestoreDocumentDataAccessor<T>> extends DocumentReferenceRef<T>, CollectionReferenceRef<T> {
8
9
  readonly accessor: A;
9
10
  readonly id: string;
@@ -11,12 +12,12 @@ export interface FirestoreDocument<T, A extends FirestoreDocumentDataAccessor<T>
11
12
  /**
12
13
  * Abstract FirestoreDocument implementation that extends a FirestoreDocumentDataAccessor.
13
14
  */
14
- export declare abstract class AbstractFirestoreDocument<T, D extends AbstractFirestoreDocument<T, any, any>, A extends FirestoreDocumentDataAccessor<T> = FirestoreDocumentDataAccessor<T>> implements FirestoreDocument<T, A>, FirestoreDocumentAccessorRef<T, D>, CollectionReferenceRef<T> {
15
+ export declare abstract class AbstractFirestoreDocument<T, D extends AbstractFirestoreDocument<T, any, any>, A extends FirestoreDocumentDataAccessor<T> = FirestoreDocumentDataAccessor<T>> implements FirestoreDocument<T, A>, LimitedFirestoreDocumentAccessorRef<T, D>, CollectionReferenceRef<T> {
15
16
  readonly accessor: A;
16
- readonly documentAccessor: FirestoreDocumentAccessor<T, D>;
17
+ readonly documentAccessor: LimitedFirestoreDocumentAccessor<T, D>;
17
18
  readonly stream$: Observable<DocumentSnapshot<T>>;
18
19
  readonly data$: Observable<T>;
19
- constructor(accessor: A, documentAccessor: FirestoreDocumentAccessor<T, D>);
20
+ constructor(accessor: A, documentAccessor: LimitedFirestoreDocumentAccessor<T, D>);
20
21
  get id(): string;
21
22
  get documentRef(): DocumentReference<T>;
22
23
  get collection(): CollectionReference<T>;
@@ -24,21 +25,12 @@ export declare abstract class AbstractFirestoreDocument<T, D extends AbstractFir
24
25
  snapshotData(options?: SnapshotOptions): Promise<T | undefined>;
25
26
  createOrUpdate(data: Partial<T>): Promise<WriteResult | void>;
26
27
  }
27
- export interface FirestoreDocumentAccessorRef<T, D extends FirestoreDocument<T> = FirestoreDocument<T>> {
28
- readonly documentAccessor: FirestoreDocumentAccessor<T, D>;
28
+ export interface LimitedFirestoreDocumentAccessorRef<T, D extends FirestoreDocument<T> = FirestoreDocument<T>, A extends LimitedFirestoreDocumentAccessor<T, D> = LimitedFirestoreDocumentAccessor<T, D>> {
29
+ readonly documentAccessor: A;
29
30
  }
30
- export interface FirestoreDocumentAccessor<T, D extends FirestoreDocument<T> = FirestoreDocument<T>> extends CollectionReferenceRef<T>, FirestoreAccessorDriverRef {
31
+ export declare type FirestoreDocumentAccessorRef<T, D extends FirestoreDocument<T> = FirestoreDocument<T>> = LimitedFirestoreDocumentAccessorRef<T, D, FirestoreDocumentAccessor<T, D>>;
32
+ export interface LimitedFirestoreDocumentAccessor<T, D extends FirestoreDocument<T> = FirestoreDocument<T>> extends FirestoreAccessorDriverRef {
31
33
  readonly databaseContext: FirestoreDocumentContext<T>;
32
- /**
33
- * Creates a new document.
34
- */
35
- newDocument(): D;
36
- /**
37
- * Loads a document from the datastore with the given id/path.
38
- *
39
- * @param ref
40
- */
41
- loadDocumentForPath(path: string, ...pathSegments: string[]): D;
42
34
  /**
43
35
  * Loads a document from the datastore.
44
36
  *
@@ -51,6 +43,19 @@ export interface FirestoreDocumentAccessor<T, D extends FirestoreDocument<T> = F
51
43
  * @param document
52
44
  */
53
45
  loadDocumentFrom(document: FirestoreDocument<T>): D;
46
+ }
47
+ export interface FirestoreDocumentAccessor<T, D extends FirestoreDocument<T> = FirestoreDocument<T>> extends LimitedFirestoreDocumentAccessor<T, D>, CollectionReferenceRef<T>, FirestoreAccessorDriverRef {
48
+ readonly databaseContext: FirestoreDocumentContext<T>;
49
+ /**
50
+ * Creates a new document.
51
+ */
52
+ newDocument(): D;
53
+ /**
54
+ * Loads a document from the datastore with the given id/path.
55
+ *
56
+ * @param ref
57
+ */
58
+ loadDocumentForPath(path: string, ...pathSegments: string[]): D;
54
59
  /**
55
60
  *
56
61
  * @param path
@@ -61,22 +66,37 @@ export interface FirestoreDocumentAccessor<T, D extends FirestoreDocument<T> = F
61
66
  /**
62
67
  * Used to generate a FirestoreDocument from an input FirestoreDocumentDataAccessor instance.
63
68
  */
64
- export declare type FirestoreDocumentFactoryFunction<T, D extends FirestoreDocument<T> = FirestoreDocument<T>> = (accessor: FirestoreDocumentDataAccessor<T>, documentAccessor: FirestoreDocumentAccessor<T, D>) => D;
69
+ export declare type FirestoreDocumentFactoryFunction<T, D extends FirestoreDocument<T> = FirestoreDocument<T>> = (accessor: FirestoreDocumentDataAccessor<T>, documentAccessor: LimitedFirestoreDocumentAccessor<T, D>) => D;
65
70
  /**
66
71
  * Factory function used for creating a FirestoreDocumentAccessor.
67
72
  */
68
- export declare type FirestoreDocumentAccessorFactoryFunction<T, D extends FirestoreDocument<T> = FirestoreDocument<T>> = (context?: FirestoreDocumentContext<T>) => FirestoreDocumentAccessor<T, D>;
73
+ export declare type LimitedFirestoreDocumentAccessorFactoryFunction<T, D extends FirestoreDocument<T> = FirestoreDocument<T>, A extends LimitedFirestoreDocumentAccessor<T, D> = LimitedFirestoreDocumentAccessor<T, D>> = (context?: FirestoreDocumentContext<T>) => A;
69
74
  /**
70
75
  * Factory type used for creating a FirestoreDocumentAccessor.
71
76
  */
72
- export interface FirestoreDocumentAccessorFactory<T, D extends FirestoreDocument<T> = FirestoreDocument<T>> {
77
+ export interface LimitedFirestoreDocumentAccessorFactory<T, D extends FirestoreDocument<T> = FirestoreDocument<T>, A extends LimitedFirestoreDocumentAccessor<T, D> = LimitedFirestoreDocumentAccessor<T, D>> {
73
78
  /**
74
79
  * Creates a new FirestoreDocumentAccessor using the given context.
75
80
  *
76
81
  * @param context Optional context to retrieve items from.
77
82
  */
78
- readonly documentAccessor: FirestoreDocumentAccessorFactoryFunction<T, D>;
83
+ readonly documentAccessor: LimitedFirestoreDocumentAccessorFactoryFunction<T, D, A>;
84
+ }
85
+ /**
86
+ * FirestoreDocumentAccessor configuration.
87
+ */
88
+ export interface LimitedFirestoreDocumentAccessorFactoryConfig<T, D extends FirestoreDocument<T> = FirestoreDocument<T>> extends FirestoreAccessorDriverRef {
89
+ readonly makeDocument: FirestoreDocumentFactoryFunction<T, D>;
79
90
  }
91
+ export declare function limitedFirestoreDocumentAccessorFactory<T, D extends FirestoreDocument<T> = FirestoreDocument<T>>(config: LimitedFirestoreDocumentAccessorFactoryConfig<T, D>): LimitedFirestoreDocumentAccessorFactoryFunction<T, D>;
92
+ /**
93
+ * Factory function used for creating a FirestoreDocumentAccessor.
94
+ */
95
+ export declare type FirestoreDocumentAccessorFactoryFunction<T, D extends FirestoreDocument<T> = FirestoreDocument<T>> = LimitedFirestoreDocumentAccessorFactoryFunction<T, D, FirestoreDocumentAccessor<T, D>>;
96
+ /**
97
+ * Factory type used for creating a FirestoreDocumentAccessor.
98
+ */
99
+ export declare type FirestoreDocumentAccessorFactory<T, D extends FirestoreDocument<T> = FirestoreDocument<T>> = LimitedFirestoreDocumentAccessorFactory<T, D, FirestoreDocumentAccessor<T, D>>;
80
100
  /**
81
101
  * FirestoreDocumentAccessor configuration.
82
102
  */
@@ -84,30 +104,39 @@ export interface FirestoreDocumentAccessorFactoryConfig<T, D extends FirestoreDo
84
104
  readonly makeDocument: FirestoreDocumentFactoryFunction<T, D>;
85
105
  }
86
106
  export declare function firestoreDocumentAccessorFactory<T, D extends FirestoreDocument<T> = FirestoreDocument<T>>(config: FirestoreDocumentAccessorFactoryConfig<T, D>): FirestoreDocumentAccessorFactoryFunction<T, D>;
87
- export interface FirestoreDocumentAccessorForTransactionFactory<T, D extends FirestoreDocument<T> = FirestoreDocument<T>> {
107
+ export interface LimitedFirestoreDocumentAccessorForTransactionFactory<T, D extends FirestoreDocument<T> = FirestoreDocument<T>, A extends LimitedFirestoreDocumentAccessor<T, D> = LimitedFirestoreDocumentAccessor<T, D>> {
88
108
  /**
89
109
  * Creates a new FirestoreDocumentAccessor for a Transaction.
90
110
  */
91
- documentAccessorForTransaction(transaction: Transaction): FirestoreDocumentAccessor<T, D>;
111
+ documentAccessorForTransaction(transaction: Transaction): A;
92
112
  }
93
- export interface FirestoreDocumentAccessorForWriteBatchFactory<T, D extends FirestoreDocument<T> = FirestoreDocument<T>> {
113
+ export declare type FirestoreDocumentAccessorForTransactionFactory<T, D extends FirestoreDocument<T> = FirestoreDocument<T>> = LimitedFirestoreDocumentAccessorForTransactionFactory<T, D, FirestoreDocumentAccessor<T, D>>;
114
+ export interface LimitedFirestoreDocumentAccessorForWriteBatchFactory<T, D extends FirestoreDocument<T> = FirestoreDocument<T>, A extends LimitedFirestoreDocumentAccessor<T, D> = LimitedFirestoreDocumentAccessor<T, D>> {
94
115
  /**
95
116
  * Creates a new FirestoreDocumentAccessor for a WriteBatch.
96
117
  */
97
- documentAccessorForWriteBatch(writeBatch: WriteBatch): FirestoreDocumentAccessor<T, D>;
118
+ documentAccessorForWriteBatch(writeBatch: WriteBatch): A;
119
+ }
120
+ export declare type FirestoreDocumentAccessorForWriteBatchFactory<T, D extends FirestoreDocument<T> = FirestoreDocument<T>> = LimitedFirestoreDocumentAccessorForWriteBatchFactory<T, D, FirestoreDocumentAccessor<T, D>>;
121
+ export interface LimitedFirestoreDocumentAccessorContextExtensionConfig<T, D extends FirestoreDocument<T> = FirestoreDocument<T>> extends FirestoreAccessorDriverRef {
122
+ readonly documentAccessor: LimitedFirestoreDocumentAccessorFactoryFunction<T, D>;
98
123
  }
99
- export interface FirestoreDocumentAccessorContextExtensionConfig<T, D extends FirestoreDocument<T> = FirestoreDocument<T>> extends FirestoreAccessorDriverRef {
124
+ export interface FirestoreDocumentAccessorContextExtensionConfig<T, D extends FirestoreDocument<T> = FirestoreDocument<T>> extends LimitedFirestoreDocumentAccessorContextExtensionConfig<T, D> {
100
125
  readonly documentAccessor: FirestoreDocumentAccessorFactoryFunction<T, D>;
101
126
  }
127
+ export interface LimitedFirestoreDocumentAccessorContextExtension<T, D extends FirestoreDocument<T> = FirestoreDocument<T>> extends LimitedFirestoreDocumentAccessorFactory<T, D>, LimitedFirestoreDocumentAccessorForTransactionFactory<T, D>, LimitedFirestoreDocumentAccessorForWriteBatchFactory<T, D> {
128
+ }
102
129
  export interface FirestoreDocumentAccessorContextExtension<T, D extends FirestoreDocument<T> = FirestoreDocument<T>> extends FirestoreDocumentAccessorFactory<T, D>, FirestoreDocumentAccessorForTransactionFactory<T, D>, FirestoreDocumentAccessorForWriteBatchFactory<T, D> {
103
130
  }
104
131
  export declare function firestoreDocumentAccessorContextExtension<T, D extends FirestoreDocument<T> = FirestoreDocument<T>>({ documentAccessor, firestoreAccessorDriver }: FirestoreDocumentAccessorContextExtensionConfig<T, D>): FirestoreDocumentAccessorContextExtension<T, D>;
132
+ export declare function firestoreDocumentAccessorContextExtension<T, D extends FirestoreDocument<T> = FirestoreDocument<T>>({ documentAccessor, firestoreAccessorDriver }: LimitedFirestoreDocumentAccessorContextExtensionConfig<T, D>): LimitedFirestoreDocumentAccessorContextExtension<T, D>;
105
133
  export interface FirestoreDocumentWithParent<P, T, A extends FirestoreDocumentDataAccessor<T> = FirestoreDocumentDataAccessor<T>> extends FirestoreDocument<T, A> {
106
134
  readonly parent: DocumentReference<P>;
107
135
  }
108
136
  export declare abstract class AbstractFirestoreDocumentWithParent<P, T, D extends AbstractFirestoreDocument<T, any, any>, A extends FirestoreDocumentDataAccessor<T> = FirestoreDocumentDataAccessor<T>> extends AbstractFirestoreDocument<T, D, A> implements FirestoreDocumentWithParent<P, T, A> {
109
- readonly parent: DocumentReference<P>;
110
- constructor(parent: DocumentReference<P>, accessor: A, documentAccessor: FirestoreDocumentAccessor<T, D>);
137
+ private _parent;
138
+ get parent(): DocumentReference<P>;
139
+ constructor(parent: Maybe<DocumentReference<P>>, accessor: A, documentAccessor: LimitedFirestoreDocumentAccessor<T, D>);
111
140
  }
112
141
  export interface FirestoreSingleDocumentAccessor<T, D extends FirestoreDocument<T> = FirestoreDocument<T>> {
113
142
  loadDocument(): D;
@@ -2,8 +2,9 @@
2
2
  /*eslint @typescript-eslint/no-explicit-any:"off"*/
3
3
  // any is used with intent here, as the recursive AbstractFirestoreDocument requires its use to terminate.
4
4
  Object.defineProperty(exports, "__esModule", { value: true });
5
- exports.firestoreSingleDocumentAccessor = exports.AbstractFirestoreDocumentWithParent = exports.firestoreDocumentAccessorContextExtension = exports.firestoreDocumentAccessorFactory = exports.AbstractFirestoreDocument = void 0;
5
+ exports.firestoreSingleDocumentAccessor = exports.AbstractFirestoreDocumentWithParent = exports.firestoreDocumentAccessorContextExtension = exports.firestoreDocumentAccessorFactory = exports.limitedFirestoreDocumentAccessorFactory = exports.AbstractFirestoreDocument = void 0;
6
6
  const accessor_1 = require("./accessor");
7
+ const util_1 = require("@dereekb/util");
7
8
  /**
8
9
  * Abstract FirestoreDocument implementation that extends a FirestoreDocumentDataAccessor.
9
10
  */
@@ -21,7 +22,8 @@ class AbstractFirestoreDocument {
21
22
  return this.accessor.documentRef;
22
23
  }
23
24
  get collection() {
24
- return this.documentAccessor.collection;
25
+ // TODO: Only works if the documentRef has access to the parent ref
26
+ return this.accessor.documentRef.parent;
25
27
  }
26
28
  snapshot() {
27
29
  return this.accessor.get();
@@ -34,8 +36,8 @@ class AbstractFirestoreDocument {
34
36
  }
35
37
  }
36
38
  exports.AbstractFirestoreDocument = AbstractFirestoreDocument;
37
- function firestoreDocumentAccessorFactory(config) {
38
- const { firestoreAccessorDriver, collection } = config;
39
+ function limitedFirestoreDocumentAccessorFactory(config) {
40
+ const { firestoreAccessorDriver } = config;
39
41
  return (context) => {
40
42
  const databaseContext = context !== null && context !== void 0 ? context : config.firestoreAccessorDriver.defaultContextFactory();
41
43
  const dataAccessorFactory = databaseContext.accessorFactory;
@@ -43,32 +45,45 @@ function firestoreDocumentAccessorFactory(config) {
43
45
  const accessor = dataAccessorFactory.accessorFor(ref);
44
46
  return config.makeDocument(accessor, documentAccessor);
45
47
  }
46
- function documentRefForPath(path, ...pathSegments) {
47
- return firestoreAccessorDriver.doc(collection, path, ...pathSegments);
48
- }
49
48
  const documentAccessor = {
50
- newDocument() {
51
- const newDocRef = firestoreAccessorDriver.doc(collection);
52
- return this.loadDocument(newDocRef);
53
- },
54
- loadDocumentForPath(path, ...pathSegments) {
55
- if (!path) {
56
- throw new Error('Path was not provided to loadDocumentForPath(). Use newDocument() for generating an id.');
57
- }
58
- return this.loadDocument(documentRefForPath(path, ...pathSegments));
59
- },
60
49
  loadDocumentFrom(document) {
61
50
  return loadDocument(document.documentRef);
62
51
  },
63
52
  loadDocument,
64
- documentRefForPath,
65
53
  firestoreAccessorDriver,
66
- databaseContext,
67
- collection
54
+ databaseContext
68
55
  };
69
56
  return documentAccessor;
70
57
  };
71
58
  }
59
+ exports.limitedFirestoreDocumentAccessorFactory = limitedFirestoreDocumentAccessorFactory;
60
+ function firestoreDocumentAccessorFactory(config) {
61
+ const { firestoreAccessorDriver, collection } = config;
62
+ const limitedFirestoreDocumentAccessor = limitedFirestoreDocumentAccessorFactory(config);
63
+ function documentRefForPath(path, ...pathSegments) {
64
+ return firestoreAccessorDriver.doc(collection, path, ...pathSegments);
65
+ }
66
+ return (context) => {
67
+ const documentAccessor = (0, util_1.build)({
68
+ base: limitedFirestoreDocumentAccessor(context),
69
+ build: (x) => {
70
+ x.collection = collection;
71
+ x.newDocument = () => {
72
+ const newDocRef = firestoreAccessorDriver.doc(collection);
73
+ return documentAccessor.loadDocument(newDocRef);
74
+ };
75
+ x.documentRefForPath = documentRefForPath;
76
+ x.loadDocumentForPath = (path, ...pathSegments) => {
77
+ if (!path) {
78
+ throw new Error('Path was not provided to loadDocumentForPath(). Use newDocument() for generating an id.');
79
+ }
80
+ return documentAccessor.loadDocument(documentRefForPath(path, ...pathSegments));
81
+ };
82
+ }
83
+ });
84
+ return documentAccessor;
85
+ };
86
+ }
72
87
  exports.firestoreDocumentAccessorFactory = firestoreDocumentAccessorFactory;
73
88
  function firestoreDocumentAccessorContextExtension({ documentAccessor, firestoreAccessorDriver }) {
74
89
  return {
@@ -85,7 +100,10 @@ exports.firestoreDocumentAccessorContextExtension = firestoreDocumentAccessorCon
85
100
  class AbstractFirestoreDocumentWithParent extends AbstractFirestoreDocument {
86
101
  constructor(parent, accessor, documentAccessor) {
87
102
  super(accessor, documentAccessor);
88
- this.parent = parent;
103
+ this._parent = parent !== null && parent !== void 0 ? parent : accessor.documentRef.parent.parent;
104
+ }
105
+ get parent() {
106
+ return this._parent;
89
107
  }
90
108
  }
91
109
  exports.AbstractFirestoreDocumentWithParent = AbstractFirestoreDocumentWithParent;
@@ -1 +1 @@
1
- {"version":3,"file":"document.js","sourceRoot":"","sources":["../../../../../../../../packages/firebase/src/lib/common/firestore/accessor/document.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"document.js","sourceRoot":"","sources":["../../../../../../../../packages/firebase/src/lib/common/firestore/accessor/document.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { Maybe } from '@dereekb/util';
2
2
  import { DocumentDataWithId, DocumentReference, DocumentSnapshot, QuerySnapshot, Transaction } from '../types';
3
- import { FirestoreDocument, FirestoreDocumentAccessor, FirestoreDocumentAccessorContextExtension } from './document';
3
+ import { FirestoreDocument, FirestoreDocumentAccessor, LimitedFirestoreDocumentAccessor, LimitedFirestoreDocumentAccessorContextExtension } from './document';
4
4
  export declare function newDocuments<T, D extends FirestoreDocument<T>>(documentAccessor: FirestoreDocumentAccessor<T, D>, count: number): D[];
5
5
  export interface MakeDocumentsParams<T, D extends FirestoreDocument<T> = FirestoreDocument<T>> {
6
6
  count: number;
@@ -20,9 +20,9 @@ export interface MakeDocumentsParams<T, D extends FirestoreDocument<T> = Firesto
20
20
  */
21
21
  export declare function makeDocuments<T, D extends FirestoreDocument<T>>(documentAccessor: FirestoreDocumentAccessor<T, D>, make: MakeDocumentsParams<T, D>): Promise<D[]>;
22
22
  export declare function getDocumentSnapshots<T, D extends FirestoreDocument<T>>(documents: D[]): Promise<DocumentSnapshot<T>[]>;
23
- export declare function loadDocumentsForSnapshots<T, D extends FirestoreDocument<T>>(accessor: FirestoreDocumentAccessor<T, D>, snapshots: QuerySnapshot<T>): D[];
24
- export declare function loadDocumentsForDocumentReferences<T, D extends FirestoreDocument<T>>(accessor: FirestoreDocumentAccessor<T, D>, refs: DocumentReference<T>[]): D[];
25
- export declare function loadDocumentsForValues<I, T, D extends FirestoreDocument<T>>(accessor: FirestoreDocumentAccessor<T, D>, values: I[], getRef: (value: I) => DocumentReference<T>): D[];
23
+ export declare function loadDocumentsForSnapshots<T, D extends FirestoreDocument<T>>(accessor: LimitedFirestoreDocumentAccessor<T, D>, snapshots: QuerySnapshot<T>): D[];
24
+ export declare function loadDocumentsForDocumentReferences<T, D extends FirestoreDocument<T>>(accessor: LimitedFirestoreDocumentAccessor<T, D>, refs: DocumentReference<T>[]): D[];
25
+ export declare function loadDocumentsForValues<I, T, D extends FirestoreDocument<T>>(accessor: LimitedFirestoreDocumentAccessor<T, D>, values: I[], getRef: (value: I) => DocumentReference<T>): D[];
26
26
  /**
27
27
  * Used for loading documents for the input references.
28
28
  */
@@ -33,7 +33,7 @@ export declare type FirestoreDocumentLoader<T, D extends FirestoreDocument<T>> =
33
33
  * @param accessorContext
34
34
  * @returns
35
35
  */
36
- export declare function firestoreDocumentLoader<T, D extends FirestoreDocument<T>>(accessorContext: FirestoreDocumentAccessorContextExtension<T, D>): FirestoreDocumentLoader<T, D>;
36
+ export declare function firestoreDocumentLoader<T, D extends FirestoreDocument<T>>(accessorContext: LimitedFirestoreDocumentAccessorContextExtension<T, D>): FirestoreDocumentLoader<T, D>;
37
37
  /**
38
38
  * Creates a DocumentDataWithId from the input DocumentSnapshot. If the data does not exist, returns undefined.
39
39
  *
@@ -1 +1 @@
1
- {"version":3,"file":"document.utility.js","sourceRoot":"","sources":["../../../../../../../../packages/firebase/src/lib/common/firestore/accessor/document.utility.ts"],"names":[],"mappings":";;;;AAAA,wCAAkF;AAIlF,SAAgB,YAAY,CAAoC,gBAAiD,EAAE,KAAa;IAC9H,OAAO,IAAA,gBAAS,EAAC,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,gBAAgB,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;AAC1E,CAAC;AAFD,oCAEC;AAYD;;;;;;GAMG;AACH,SAAgB,aAAa,CAAoC,gBAAiD,EAAE,IAA+B;IACjJ,OAAO,IAAA,sBAAe,EAAC;QACrB,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,IAAI,EAAE,CAAO,CAAS,EAAE,EAAE;YACxB,MAAM,QAAQ,GAAM,gBAAgB,CAAC,WAAW,EAAE,CAAC;YACnD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;YAE1C,IAAI,IAAI,IAAI,IAAI,EAAE;gBAChB,MAAM,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;aACnC;YAED,OAAO,QAAQ,CAAC;QAClB,CAAC,CAAA;KACF,CAAC,CAAC;AACL,CAAC;AAdD,sCAcC;AAED,SAAgB,oBAAoB,CAAoC,SAAc;IACpF,OAAO,qBAAc,CAAC,iBAAiB,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC;AAC9E,CAAC;AAFD,oDAEC;AAED,SAAgB,yBAAyB,CAAoC,QAAyC,EAAE,SAA2B;IACjJ,OAAO,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACjE,CAAC;AAFD,8DAEC;AAED,SAAgB,kCAAkC,CAAoC,QAAyC,EAAE,IAA4B;IAC3J,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;AACnD,CAAC;AAFD,gFAEC;AAED,SAAgB,sBAAsB,CAAuC,QAAyC,EAAE,MAAW,EAAE,MAA0C;IAC7K,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7D,CAAC;AAFD,wDAEC;AAOD;;;;;GAKG;AACH,SAAgB,uBAAuB,CAAoC,eAAgE;IACzI,OAAO,CAAC,UAAkC,EAAE,WAAyB,EAAE,EAAE;QACvE,MAAM,QAAQ,GAAG,WAAW,CAAC,CAAC,CAAC,eAAe,CAAC,8BAA8B,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,gBAAgB,EAAE,CAAC;QAChI,OAAO,kCAAkC,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IAClE,CAAC,CAAC;AACJ,CAAC;AALD,0DAKC;AAED;;;;;GAKG;AACH,SAAgB,kBAAkB,CAAI,QAA6B;IACjE,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,EAA2B,CAAC;IAEtD,IAAI,IAAI,EAAE;QACR,IAAI,CAAC,EAAE,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC,wBAAwB;KAChD;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AARD,gDAQC"}
1
+ {"version":3,"file":"document.utility.js","sourceRoot":"","sources":["../../../../../../../../packages/firebase/src/lib/common/firestore/accessor/document.utility.ts"],"names":[],"mappings":";;;;AAAA,wCAAkF;AAIlF,SAAgB,YAAY,CAAoC,gBAAiD,EAAE,KAAa;IAC9H,OAAO,IAAA,gBAAS,EAAC,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,gBAAgB,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;AAC1E,CAAC;AAFD,oCAEC;AAYD;;;;;;GAMG;AACH,SAAgB,aAAa,CAAoC,gBAAiD,EAAE,IAA+B;IACjJ,OAAO,IAAA,sBAAe,EAAC;QACrB,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,IAAI,EAAE,CAAO,CAAS,EAAE,EAAE;YACxB,MAAM,QAAQ,GAAM,gBAAgB,CAAC,WAAW,EAAE,CAAC;YACnD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;YAE1C,IAAI,IAAI,IAAI,IAAI,EAAE;gBAChB,MAAM,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;aACnC;YAED,OAAO,QAAQ,CAAC;QAClB,CAAC,CAAA;KACF,CAAC,CAAC;AACL,CAAC;AAdD,sCAcC;AAED,SAAgB,oBAAoB,CAAoC,SAAc;IACpF,OAAO,qBAAc,CAAC,iBAAiB,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC;AAC9E,CAAC;AAFD,oDAEC;AAED,SAAgB,yBAAyB,CAAoC,QAAgD,EAAE,SAA2B;IACxJ,OAAO,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACjE,CAAC;AAFD,8DAEC;AAED,SAAgB,kCAAkC,CAAoC,QAAgD,EAAE,IAA4B;IAClK,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;AACnD,CAAC;AAFD,gFAEC;AAED,SAAgB,sBAAsB,CAAuC,QAAgD,EAAE,MAAW,EAAE,MAA0C;IACpL,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7D,CAAC;AAFD,wDAEC;AAOD;;;;;GAKG;AACH,SAAgB,uBAAuB,CAAoC,eAAuE;IAChJ,OAAO,CAAC,UAAkC,EAAE,WAAyB,EAAE,EAAE;QACvE,MAAM,QAAQ,GAAG,WAAW,CAAC,CAAC,CAAC,eAAe,CAAC,8BAA8B,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,gBAAgB,EAAE,CAAC;QAChI,OAAO,kCAAkC,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IAClE,CAAC,CAAC;AACJ,CAAC;AALD,0DAKC;AAED;;;;;GAKG;AACH,SAAgB,kBAAkB,CAAI,QAA6B;IACjE,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,EAA2B,CAAC;IAEtD,IAAI,IAAI,EAAE;QACR,IAAI,CAAC,EAAE,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC,wBAAwB;KAChD;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AARD,gDAQC"}
@@ -1,18 +1,25 @@
1
- import { FirestoreDocument, FirestoreDocumentAccessorFactory, FirestoreDocumentAccessorFactoryConfig, FirestoreDocumentAccessorForTransactionFactory, FirestoreDocumentAccessorForWriteBatchFactory } from '../accessor/document';
1
+ import { CollectionReferenceRef, FirestoreContextReference, QueryLikeReferenceRef } from '../reference';
2
+ import { FirestoreDocument, FirestoreDocumentAccessorFactory, FirestoreDocumentAccessorFactoryConfig, FirestoreDocumentAccessorForTransactionFactory, FirestoreDocumentAccessorForWriteBatchFactory, LimitedFirestoreDocumentAccessorFactory, LimitedFirestoreDocumentAccessorForTransactionFactory, LimitedFirestoreDocumentAccessorForWriteBatchFactory, LimitedFirestoreDocumentAccessor, FirestoreDocumentAccessor } from '../accessor/document';
2
3
  import { FirestoreItemPageIterationBaseConfig, FirestoreItemPageIterationFactory } from '../query/iterator';
3
- import { CollectionReferenceRef, FirestoreContextReference } from '../reference';
4
4
  import { FirestoreQueryFactory } from '../query/query';
5
5
  import { FirestoreDrivers } from '../driver/driver';
6
6
  import { FirestoreCollectionQueryFactory } from './collection.query';
7
+ /**
8
+ * Instance that provides several accessors for accessing documents of a collection.
9
+ */
10
+ export interface FirestoreCollectionLike<T, D extends FirestoreDocument<T> = FirestoreDocument<T>, A extends LimitedFirestoreDocumentAccessor<T, D> = LimitedFirestoreDocumentAccessor<T, D>> extends FirestoreContextReference, QueryLikeReferenceRef<T>, FirestoreItemPageIterationFactory<T>, FirestoreQueryFactory<T>, LimitedFirestoreDocumentAccessorFactory<T, D, A>, LimitedFirestoreDocumentAccessorForTransactionFactory<T, D, A>, LimitedFirestoreDocumentAccessorForWriteBatchFactory<T, D, A>, FirestoreCollectionQueryFactory<T, D> {
11
+ }
7
12
  /**
8
13
  * FirestoreCollection configuration
9
14
  */
10
- export interface FirestoreCollectionConfig<T, D extends FirestoreDocument<T> = FirestoreDocument<T>> extends FirestoreContextReference, FirestoreDrivers, FirestoreItemPageIterationBaseConfig<T>, FirestoreDocumentAccessorFactoryConfig<T, D> {
15
+ export interface FirestoreCollectionConfig<T, D extends FirestoreDocument<T> = FirestoreDocument<T>> extends FirestoreContextReference, FirestoreDrivers, Omit<FirestoreItemPageIterationBaseConfig<T>, 'queryLike'>, Partial<QueryLikeReferenceRef<T>>, FirestoreDocumentAccessorFactoryConfig<T, D> {
11
16
  }
12
17
  /**
13
18
  * Instance that provides several accessors for accessing documents of a collection.
19
+ *
20
+ * Provides a full FirestoreDocumentAccessor instead of limited accessors.
14
21
  */
15
- export interface FirestoreCollection<T, D extends FirestoreDocument<T> = FirestoreDocument<T>> extends FirestoreContextReference, CollectionReferenceRef<T>, FirestoreItemPageIterationFactory<T>, FirestoreDocumentAccessorFactory<T, D>, FirestoreQueryFactory<T>, FirestoreDocumentAccessorForTransactionFactory<T, D>, FirestoreDocumentAccessorForWriteBatchFactory<T, D>, FirestoreCollectionQueryFactory<T, D> {
22
+ export interface FirestoreCollection<T, D extends FirestoreDocument<T> = FirestoreDocument<T>> extends FirestoreCollectionLike<T, D, FirestoreDocumentAccessor<T, D>>, CollectionReferenceRef<T>, FirestoreDocumentAccessorFactory<T, D>, FirestoreDocumentAccessorForTransactionFactory<T, D>, FirestoreDocumentAccessorForWriteBatchFactory<T, D> {
16
23
  readonly config: FirestoreCollectionConfig<T, D>;
17
24
  }
18
25
  /**
@@ -24,4 +31,4 @@ export interface FirestoreCollectionRef<T, D extends FirestoreDocument<T> = Fire
24
31
  /**
25
32
  * Creates a new FirestoreCollection from the input config.
26
33
  */
27
- export declare function makeFirestoreCollection<T, D extends FirestoreDocument<T>>(config: FirestoreCollectionConfig<T, D>): FirestoreCollection<T, D>;
34
+ export declare function makeFirestoreCollection<T, D extends FirestoreDocument<T>>(inputConfig: FirestoreCollectionConfig<T, D>): FirestoreCollection<T, D>;
@@ -0,0 +1,20 @@
1
+ import { FirestoreDocument, LimitedFirestoreDocumentAccessorFactoryConfig } from '../accessor/document';
2
+ import { FirestoreItemPageIterationBaseConfig } from '../query/iterator';
3
+ import { FirestoreContextReference } from '../reference';
4
+ import { FirestoreDrivers } from '../driver/driver';
5
+ import { FirestoreCollectionLike } from './collection';
6
+ /**
7
+ * FirestoreCollection configuration
8
+ */
9
+ export interface FirestoreCollectionGroupConfig<T, D extends FirestoreDocument<T> = FirestoreDocument<T>> extends FirestoreContextReference, FirestoreDrivers, FirestoreItemPageIterationBaseConfig<T>, LimitedFirestoreDocumentAccessorFactoryConfig<T, D> {
10
+ }
11
+ /**
12
+ * Instance that provides several accessors for accessing documents of a collection.
13
+ */
14
+ export interface FirestoreCollectionGroup<T, D extends FirestoreDocument<T> = FirestoreDocument<T>> extends FirestoreCollectionLike<T, D> {
15
+ readonly config: FirestoreCollectionGroupConfig<T, D>;
16
+ }
17
+ /**
18
+ * Creates a new FirestoreCollection from the input config.
19
+ */
20
+ export declare function makeFirestoreCollectionGroup<T, D extends FirestoreDocument<T>>(config: FirestoreCollectionGroupConfig<T, D>): FirestoreCollectionGroup<T, D>;
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.makeFirestoreCollectionGroup = void 0;
4
+ const document_1 = require("../accessor/document");
5
+ const iterator_1 = require("../query/iterator");
6
+ const query_1 = require("../query/query");
7
+ const collection_query_1 = require("./collection.query");
8
+ /**
9
+ * Creates a new FirestoreCollection from the input config.
10
+ */
11
+ function makeFirestoreCollectionGroup(config) {
12
+ const { queryLike, firestoreContext, firestoreAccessorDriver } = config;
13
+ const firestoreIteration = (0, iterator_1.firestoreItemPageIterationFactory)(config);
14
+ const documentAccessor = (0, document_1.limitedFirestoreDocumentAccessorFactory)(config);
15
+ const queryFactory = (0, query_1.firestoreQueryFactory)(config);
16
+ const documentAccessorExtension = (0, document_1.firestoreDocumentAccessorContextExtension)({ documentAccessor, firestoreAccessorDriver });
17
+ const { queryDocument } = (0, collection_query_1.firestoreCollectionQueryFactory)(queryFactory, documentAccessorExtension);
18
+ const { query } = queryFactory;
19
+ return Object.assign(Object.assign({ config,
20
+ queryLike,
21
+ firestoreContext }, documentAccessorExtension), { firestoreIteration,
22
+ query,
23
+ queryDocument });
24
+ }
25
+ exports.makeFirestoreCollectionGroup = makeFirestoreCollectionGroup;
26
+ // CollectionGroup does not have a CollectionReference, and this MIGHT be a problem, although I don't believe the CollectionReferenceRef types really expose the collection that much anywayss,
27
+ // and instead just use the Query more. Will need to refactor a bit to get closer. Also, FirestoreCollectionGroup will not have a DocumentAccessor, probably, as they are only for querying...
28
+ // so the option is either to refactor many types to work just off of Query instead of the CollectionReferenceRef, which might be fine, or the other is to make CollectionGroup a new specific type.
29
+ // It might end up being a mixture of the two as well. For instance, in dbx-firebase it may require using any found items to redirect them to their final area...
30
+ // alternatively, we also avoid considering the use of CollectionGroups, as their usage is strange anyways.
31
+ //# sourceMappingURL=collection.group.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collection.group.js","sourceRoot":"","sources":["../../../../../../../../packages/firebase/src/lib/common/firestore/collection/collection.group.ts"],"names":[],"mappings":";;;AAAA,mDAA6O;AAC7O,gDAAuJ;AAEvJ,0CAA8E;AAE9E,yDAAqE;AAerE;;GAEG;AACH,SAAgB,4BAA4B,CAAoC,MAA4C;IAC1H,MAAM,EAAE,SAAS,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,GAAG,MAAM,CAAC;IACxE,MAAM,kBAAkB,GAAiD,IAAA,4CAAiC,EAAC,MAAM,CAAC,CAAC;IACnH,MAAM,gBAAgB,GAA0D,IAAA,kDAAuC,EAAC,MAAM,CAAC,CAAC;IAChI,MAAM,YAAY,GAA6B,IAAA,6BAAqB,EAAC,MAAM,CAAC,CAAC;IAE7E,MAAM,yBAAyB,GAAG,IAAA,oDAAyC,EAAC,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,CAAC,CAAC;IAC3H,MAAM,EAAE,aAAa,EAAE,GAAG,IAAA,kDAA+B,EAAC,YAAY,EAAE,yBAAyB,CAAC,CAAC;IACnG,MAAM,EAAE,KAAK,EAAE,GAAG,YAAY,CAAC;IAE/B,qCACE,MAAM;QACN,SAAS;QACT,gBAAgB,IACb,yBAAyB,KAC5B,kBAAkB;QAClB,KAAK;QACL,aAAa,IACb;AACJ,CAAC;AAnBD,oEAmBC;AAED,+LAA+L;AAC/L,8LAA8L;AAE9L,oMAAoM;AACpM,iKAAiK;AAEjK,2GAA2G"}
@@ -8,8 +8,10 @@ const collection_query_1 = require("./collection.query");
8
8
  /**
9
9
  * Creates a new FirestoreCollection from the input config.
10
10
  */
11
- function makeFirestoreCollection(config) {
11
+ function makeFirestoreCollection(inputConfig) {
12
+ const config = inputConfig;
12
13
  const { collection, firestoreContext, firestoreAccessorDriver } = config;
14
+ config.queryLike = collection;
13
15
  const firestoreIteration = (0, iterator_1.firestoreItemPageIterationFactory)(config);
14
16
  const documentAccessor = (0, document_1.firestoreDocumentAccessorFactory)(config);
15
17
  const queryFactory = (0, query_1.firestoreQueryFactory)(config);
@@ -17,8 +19,7 @@ function makeFirestoreCollection(config) {
17
19
  const { queryDocument } = (0, collection_query_1.firestoreCollectionQueryFactory)(queryFactory, documentAccessorExtension);
18
20
  const { query } = queryFactory;
19
21
  return Object.assign(Object.assign({ config,
20
- collection,
21
- firestoreContext }, documentAccessorExtension), { firestoreIteration,
22
+ collection, queryLike: collection, firestoreContext }, documentAccessorExtension), { firestoreIteration,
22
23
  query,
23
24
  queryDocument });
24
25
  }
@@ -1 +1 @@
1
- {"version":3,"file":"collection.js","sourceRoot":"","sources":["../../../../../../../../packages/firebase/src/lib/common/firestore/collection/collection.ts"],"names":[],"mappings":";;;AAAA,mDAAyV;AACzV,gDAA0L;AAE1L,0CAA8E;AAE9E,yDAAsG;AA6BtG;;GAEG;AACH,SAAgB,uBAAuB,CAAoC,MAAuC;IAChH,MAAM,EAAE,UAAU,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,GAAG,MAAM,CAAC;IACzE,MAAM,kBAAkB,GAAiD,IAAA,4CAAiC,EAAC,MAAM,CAAC,CAAC;IACnH,MAAM,gBAAgB,GAAmD,IAAA,2CAAgC,EAAC,MAAM,CAAC,CAAC;IAClH,MAAM,YAAY,GAA6B,IAAA,6BAAqB,EAAC,MAAM,CAAC,CAAC;IAE7E,MAAM,yBAAyB,GAAG,IAAA,oDAAyC,EAAC,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,CAAC,CAAC;IAC3H,MAAM,EAAE,aAAa,EAAE,GAAG,IAAA,kDAA+B,EAAC,YAAY,EAAE,yBAAyB,CAAC,CAAC;IACnG,MAAM,EAAE,KAAK,EAAE,GAAG,YAAY,CAAC;IAE/B,qCACE,MAAM;QACN,UAAU;QACV,gBAAgB,IACb,yBAAyB,KAC5B,kBAAkB;QAClB,KAAK;QACL,aAAa,IACb;AACJ,CAAC;AAnBD,0DAmBC"}
1
+ {"version":3,"file":"collection.js","sourceRoot":"","sources":["../../../../../../../../packages/firebase/src/lib/common/firestore/collection/collection.ts"],"names":[],"mappings":";;;AACA,mDAc8B;AAC9B,gDAA0L;AAC1L,0CAA8E;AAE9E,yDAAsG;AAuCtG;;GAEG;AACH,SAAgB,uBAAuB,CAAoC,WAA4C;IACrH,MAAM,MAAM,GAAG,WAAyE,CAAC;IAEzF,MAAM,EAAE,UAAU,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,GAAG,MAAM,CAAC;IACxE,MAAwD,CAAC,SAAS,GAAG,UAAU,CAAC;IAEjF,MAAM,kBAAkB,GAAiD,IAAA,4CAAiC,EAAC,MAAM,CAAC,CAAC;IACnH,MAAM,gBAAgB,GAAmD,IAAA,2CAAgC,EAAC,MAAM,CAAC,CAAC;IAClH,MAAM,YAAY,GAA6B,IAAA,6BAAqB,EAAC,MAAM,CAAC,CAAC;IAE7E,MAAM,yBAAyB,GAAG,IAAA,oDAAyC,EAAC,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,CAAC,CAAC;IAC3H,MAAM,EAAE,aAAa,EAAE,GAAG,IAAA,kDAA+B,EAAC,YAAY,EAAE,yBAAyB,CAAC,CAAC;IACnG,MAAM,EAAE,KAAK,EAAE,GAAG,YAAY,CAAC;IAE/B,qCACE,MAAM;QACN,UAAU,EACV,SAAS,EAAE,UAAU,EACrB,gBAAgB,IACb,yBAAyB,KAC5B,kBAAkB;QAClB,KAAK;QACL,aAAa,IACb;AACJ,CAAC;AAxBD,0DAwBC"}
@@ -1,4 +1,4 @@
1
- import { FirestoreDocumentAccessorContextExtension } from './../accessor/document';
1
+ import { LimitedFirestoreDocumentAccessorContextExtension } from './../accessor/document';
2
2
  import { ArrayOrValue, Maybe } from '@dereekb/util';
3
3
  import { FirestoreDocument } from '../accessor/document';
4
4
  import { FirestoreExecutableQuery, FirestoreQueryFactory } from '../query';
@@ -33,4 +33,4 @@ export declare type FirestoreCollectionQueryFactoryFunction<T, D extends Firesto
33
33
  export interface FirestoreCollectionQueryFactory<T, D extends FirestoreDocument<T>> {
34
34
  readonly queryDocument: FirestoreCollectionQueryFactoryFunction<T, D>;
35
35
  }
36
- export declare function firestoreCollectionQueryFactory<T, D extends FirestoreDocument<T>>(queryFactory: FirestoreQueryFactory<T>, accessorContext: FirestoreDocumentAccessorContextExtension<T, D>): FirestoreCollectionQueryFactory<T, D>;
36
+ export declare function firestoreCollectionQueryFactory<T, D extends FirestoreDocument<T>>(queryFactory: FirestoreQueryFactory<T>, accessorContext: LimitedFirestoreDocumentAccessorContextExtension<T, D>): FirestoreCollectionQueryFactory<T, D>;
@@ -1 +1 @@
1
- {"version":3,"file":"collection.query.js","sourceRoot":"","sources":["../../../../../../../../packages/firebase/src/lib/common/firestore/collection/collection.query.ts"],"names":[],"mappings":";;;;AAGA,oCAA2G;AAG3G,+BAAuC;AACvC,0CAAsD;AAiCtD,SAAgB,+BAA+B,CAAoC,YAAsC,EAAE,eAAgE;IACzL,MAAM,cAAc,GAAG,IAAA,kCAAuB,EAAC,eAAe,CAAC,CAAC;IAEhE,MAAM,SAAS,GAAiG,CAAC,SAAsC,EAAE,EAAE;QACzJ,OAAO;YACL,SAAS;YACT,WAAW,EAAE,CAAO,WAAyB,EAAE,EAAE;gBAC/C,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;gBACxD,OAAO,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAC9D,CAAC,CAAA;YACD,OAAO,EAAE,CAAC,WAAyB,EAAE,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,IAAA,sCAA8B,EAAC,CAAC,CAAC,CAAC,CAAC;YACrI,UAAU,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,IAAA,UAAG,EAAC,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,IAAA,sCAA8B,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5G,MAAM,EAAE,CAAC,GAAG,gBAA0D,EAAE,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,gBAAgB,CAAC,CAAC;SAC5H,CAAC;IACJ,CAAC,CAAC;IAEF,OAAO;QACL,aAAa,EAAE,CAAC,GAAG,gBAA0D,EAAE,EAAE,CAAC,SAAS,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,gBAAgB,CAAC,CAAC;KACrI,CAAC;AACJ,CAAC;AAnBD,0EAmBC"}
1
+ {"version":3,"file":"collection.query.js","sourceRoot":"","sources":["../../../../../../../../packages/firebase/src/lib/common/firestore/collection/collection.query.ts"],"names":[],"mappings":";;;;AAGA,oCAA2G;AAG3G,+BAAuC;AACvC,0CAAsD;AAiCtD,SAAgB,+BAA+B,CAAoC,YAAsC,EAAE,eAAuE;IAChM,MAAM,cAAc,GAAG,IAAA,kCAAuB,EAAC,eAAe,CAAC,CAAC;IAEhE,MAAM,SAAS,GAAiG,CAAC,SAAsC,EAAE,EAAE;QACzJ,OAAO;YACL,SAAS;YACT,WAAW,EAAE,CAAO,WAAyB,EAAE,EAAE;gBAC/C,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;gBACxD,OAAO,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAC9D,CAAC,CAAA;YACD,OAAO,EAAE,CAAC,WAAyB,EAAE,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,IAAA,sCAA8B,EAAC,CAAC,CAAC,CAAC,CAAC;YACrI,UAAU,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,IAAA,UAAG,EAAC,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,IAAA,sCAA8B,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5G,MAAM,EAAE,CAAC,GAAG,gBAA0D,EAAE,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,gBAAgB,CAAC,CAAC;SAC5H,CAAC;IACJ,CAAC,CAAC;IAEF,OAAO;QACL,aAAa,EAAE,CAAC,GAAG,gBAA0D,EAAE,EAAE,CAAC,SAAS,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,gBAAgB,CAAC,CAAC;KACrI,CAAC;AACJ,CAAC;AAnBD,0EAmBC"}
@@ -1,3 +1,4 @@
1
1
  export * from './collection';
2
+ export * from './collection.group';
2
3
  export * from './subcollection';
3
4
  export * from './subcollection.single';
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const tslib_1 = require("tslib");
4
4
  tslib_1.__exportStar(require("./collection"), exports);
5
+ tslib_1.__exportStar(require("./collection.group"), exports);
5
6
  tslib_1.__exportStar(require("./subcollection"), exports);
6
7
  tslib_1.__exportStar(require("./subcollection.single"), exports);
7
8
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../../packages/firebase/src/lib/common/firestore/collection/index.ts"],"names":[],"mappings":";;;AAAA,uDAA6B;AAC7B,0DAAgC;AAChC,iEAAuC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../../packages/firebase/src/lib/common/firestore/collection/index.ts"],"names":[],"mappings":";;;AAAA,uDAA6B;AAC7B,6DAAmC;AACnC,0DAAgC;AAChC,iEAAuC"}
@@ -8,6 +8,7 @@ const collection_1 = require("./collection");
8
8
  function makeFirestoreCollectionWithParent(config) {
9
9
  const result = (0, collection_1.makeFirestoreCollection)(config);
10
10
  result.parent = config.parent;
11
+ // todo: consider throwing an exception if parent is not provided.
11
12
  return result;
12
13
  }
13
14
  exports.makeFirestoreCollectionWithParent = makeFirestoreCollectionWithParent;
@@ -1 +1 @@
1
- {"version":3,"file":"subcollection.js","sourceRoot":"","sources":["../../../../../../../../packages/firebase/src/lib/common/firestore/collection/subcollection.ts"],"names":[],"mappings":";;;AACA,6CAAuG;AAyBvG;;GAEG;AACH,SAAgB,iCAAiC,CAAyH,MAAyD;IACjO,MAAM,MAAM,GAAG,IAAA,oCAAuB,EAAC,MAAM,CAA+C,CAAC;IAC7F,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IAC9B,OAAO,MAAM,CAAC;AAChB,CAAC;AAJD,8EAIC"}
1
+ {"version":3,"file":"subcollection.js","sourceRoot":"","sources":["../../../../../../../../packages/firebase/src/lib/common/firestore/collection/subcollection.ts"],"names":[],"mappings":";;;AACA,6CAAuG;AAyBvG;;GAEG;AACH,SAAgB,iCAAiC,CAAyH,MAAyD;IACjO,MAAM,MAAM,GAAG,IAAA,oCAAuB,EAAC,MAAM,CAA+C,CAAC;IAC7F,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IAC9B,kEAAkE;IAClE,OAAO,MAAM,CAAC;AAChB,CAAC;AALD,8EAKC"}