@dereekb/firebase 7.0.0 → 7.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 (51) hide show
  1. package/CHANGELOG.md +26 -0
  2. package/package.json +6 -5
  3. package/src/lib/client/firestore/driver.query.js +1 -0
  4. package/src/lib/client/firestore/driver.query.js.map +1 -1
  5. package/src/lib/common/firestore/accessor/accessor.d.ts +1 -0
  6. package/src/lib/common/firestore/accessor/accessor.js.map +1 -1
  7. package/src/lib/common/firestore/accessor/accessor.wrap.d.ts +23 -0
  8. package/src/lib/common/firestore/accessor/accessor.wrap.js +43 -0
  9. package/src/lib/common/firestore/accessor/accessor.wrap.js.map +1 -0
  10. package/src/lib/common/firestore/accessor/accessor.wrap.modify.d.ts +56 -0
  11. package/src/lib/common/firestore/accessor/accessor.wrap.modify.js +95 -0
  12. package/src/lib/common/firestore/accessor/accessor.wrap.modify.js.map +1 -0
  13. package/src/lib/common/firestore/accessor/document.d.ts +31 -11
  14. package/src/lib/common/firestore/accessor/document.js +16 -11
  15. package/src/lib/common/firestore/accessor/document.js.map +1 -1
  16. package/src/lib/common/firestore/accessor/document.utility.d.ts +4 -0
  17. package/src/lib/common/firestore/accessor/document.utility.js +3 -1
  18. package/src/lib/common/firestore/accessor/document.utility.js.map +1 -1
  19. package/src/lib/common/firestore/accessor/index.d.ts +2 -0
  20. package/src/lib/common/firestore/accessor/index.js +2 -0
  21. package/src/lib/common/firestore/accessor/index.js.map +1 -1
  22. package/src/lib/common/firestore/collection/collection.d.ts +8 -8
  23. package/src/lib/common/firestore/collection/collection.js +2 -8
  24. package/src/lib/common/firestore/collection/collection.js.map +1 -1
  25. package/src/lib/common/firestore/query/constraint.d.ts +5 -0
  26. package/src/lib/common/firestore/query/constraint.js +8 -2
  27. package/src/lib/common/firestore/query/constraint.js.map +1 -1
  28. package/src/lib/common/firestore/snapshot/snapshot.d.ts +7 -4
  29. package/src/lib/common/firestore/snapshot/snapshot.field.d.ts +45 -5
  30. package/src/lib/common/firestore/snapshot/snapshot.field.js +67 -2
  31. package/src/lib/common/firestore/snapshot/snapshot.field.js.map +1 -1
  32. package/src/lib/common/firestore/snapshot/snapshot.js +2 -1
  33. package/src/lib/common/firestore/snapshot/snapshot.js.map +1 -1
  34. package/src/lib/common/firestore/types.d.ts +2 -2
  35. package/test/CHANGELOG.md +24 -0
  36. package/test/package.json +8 -7
  37. package/test/src/lib/common/firestore.mock.item.d.ts +66 -26
  38. package/test/src/lib/common/firestore.mock.item.fixture.d.ts +4 -2
  39. package/test/src/lib/common/firestore.mock.item.fixture.js +10 -4
  40. package/test/src/lib/common/firestore.mock.item.fixture.js.map +1 -1
  41. package/test/src/lib/common/firestore.mock.item.js +91 -29
  42. package/test/src/lib/common/firestore.mock.item.js.map +1 -1
  43. package/test/src/lib/common/firestore.mock.item.query.d.ts +1 -1
  44. package/test/src/lib/common/firestore.mock.item.query.js +3 -3
  45. package/test/src/lib/common/firestore.mock.item.service.d.ts +11 -6
  46. package/test/src/lib/common/firestore.mock.item.service.js +18 -6
  47. package/test/src/lib/common/firestore.mock.item.service.js.map +1 -1
  48. package/test/src/lib/common/test.driver.accessor.js +32 -7
  49. package/test/src/lib/common/test.driver.accessor.js.map +1 -1
  50. package/test/src/lib/common/test.driver.query.js +72 -3
  51. package/test/src/lib/common/test.driver.query.js.map +1 -1
package/CHANGELOG.md CHANGED
@@ -2,6 +2,32 @@
2
2
 
3
3
  This file was generated using [@jscutlery/semver](https://github.com/jscutlery/semver).
4
4
 
5
+ # [7.2.0](https://github.com/dereekb/dbx-components/compare/v7.1.0-dev...v7.2.0) (2022-06-06)
6
+
7
+
8
+ ### Features
9
+
10
+ * firestoreModeIdentity can now accept a collection name ([1e0646e](https://github.com/dereekb/dbx-components/commit/1e0646e598a0834d8b4c3d264bb5ee42626e9fc7))
11
+
12
+
13
+
14
+ # [7.1.0](https://github.com/dereekb/dbx-components/compare/v7.0.1-dev...v7.1.0) (2022-06-06)
15
+
16
+
17
+ ### Features
18
+
19
+ * added firestoreArray ([e852230](https://github.com/dereekb/dbx-components/commit/e85223077246c1755cdb1028deea7019a6c71206))
20
+ * added firestoreEncodedArray, firestoreUniqueArray ([4f7fc7c](https://github.com/dereekb/dbx-components/commit/4f7fc7ca274656ecdf13d69aa7d225f66a7f76da))
21
+ * added interceptAccessorFactory() ([9833539](https://github.com/dereekb/dbx-components/commit/98335398eaa6a3ee363bdf64a440d5438bbefb24))
22
+ * added loadDocumentForId() to FirestoreDocumentAccessor ([3728145](https://github.com/dereekb/dbx-components/commit/372814540064ff4b40be032d57ddda12a8698d53))
23
+ * added whereDocumentId() ([7f5f5b8](https://github.com/dereekb/dbx-components/commit/7f5f5b8a56b2e0ad2e43308cfd87b4f8b8503c59))
24
+
25
+
26
+
27
+ ## [7.0.1](https://github.com/dereekb/dbx-components/compare/v7.0.0-dev...v7.0.1) (2022-06-05)
28
+
29
+
30
+
5
31
  # [7.0.0](https://github.com/dereekb/dbx-components/compare/v6.0.0-dev...v7.0.0) (2022-06-05)
6
32
 
7
33
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dereekb/firebase",
3
- "version": "7.0.0",
3
+ "version": "7.2.0",
4
4
  "devDependencies": {
5
5
  "@firebase/rules-unit-testing": "^2.0.0"
6
6
  },
@@ -22,18 +22,19 @@
22
22
  "rxjs": "^7.0.0",
23
23
  "rxfire": "^6.0.3",
24
24
  "firebase": "^9.8.0",
25
- "@dereekb/util": "7.0.0",
25
+ "@dereekb/util": "7.2.0",
26
26
  "make-error": "^1.3.0",
27
+ "ts-essentials": "^9.1.2",
27
28
  "extra-set": "^2.2.11",
28
- "@dereekb/rxjs": "7.0.0",
29
+ "@dereekb/rxjs": "7.2.0",
29
30
  "ms": "^3.0.0-canary.1",
30
- "@dereekb/date": "7.0.0",
31
+ "@dereekb/date": "7.2.0",
31
32
  "class-transformer": "^0.5.1",
32
33
  "date-fns": "^2.28.0",
33
34
  "class-validator": "^0.13.2",
34
35
  "date-fns-tz": "^1.3.0",
35
36
  "rrule": "git+https://git@github.com/dereekb/rrule.git#17adf5708d6567b4d01a3a8afd106261421ea492",
36
- "@dereekb/model": "7.0.0",
37
+ "@dereekb/model": "7.2.0",
37
38
  "tslib": "^2.0.0"
38
39
  }
39
40
  }
@@ -18,6 +18,7 @@ exports.FIRESTORE_CLIENT_QUERY_CONSTRAINT_HANDLER_MAPPING = {
18
18
  [constraint_1.FIRESTORE_ORDER_BY_QUERY_CONSTRAINT_TYPE]: (builder, data) => addConstraintToBuilder(builder, (0, firestore_1.orderBy)(data.fieldPath, data.directionStr)),
19
19
  [constraint_1.FIRESTORE_ORDER_BY_DOCUMENT_ID_QUERY_CONSTRAINT_TYPE]: (builder, data) => addConstraintToBuilder(builder, (0, firestore_1.orderBy)((0, firestore_1.documentId)(), data.directionStr)),
20
20
  [constraint_1.FIRESTORE_WHERE_QUERY_CONSTRAINT_TYPE]: (builder, data) => addConstraintToBuilder(builder, (0, firestore_1.where)(data.fieldPath, data.opStr, data.value)),
21
+ [constraint_1.FIRESTORE_WHERE_DOCUMENT_ID_QUERY_CONSTRAINT_TYPE]: (builder, data) => addConstraintToBuilder(builder, (0, firestore_1.where)((0, firestore_1.documentId)(), data.opStr, data.value)),
21
22
  [constraint_1.FIRESTORE_OFFSET_QUERY_CONSTRAINT_TYPE]: undefined,
22
23
  [constraint_1.FIRESTORE_START_AT_QUERY_CONSTRAINT_TYPE]: (builder, data) => addConstraintToBuilder(builder, (0, firestore_1.startAt)(data.snapshot)),
23
24
  [constraint_1.FIRESTORE_START_AT_VALUE_QUERY_CONSTRAINT_TYPE]: (builder, data) => addConstraintToBuilder(builder, (0, firestore_1.startAt)(...data.fieldValues)),
@@ -1 +1 @@
1
- {"version":3,"file":"driver.query.js","sourceRoot":"","sources":["../../../../../../../packages/firebase/src/lib/client/firestore/driver.query.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"driver.query.js","sourceRoot":"","sources":["../../../../../../../packages/firebase/src/lib/client/firestore/driver.query.ts"],"names":[],"mappings":";;;AAEA,kDAA2N;AAC3N,0EAemD;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,iEAAoD,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,sBAAsB,CAAC,OAAO,EAAE,IAAA,mBAAO,EAAC,IAAA,sBAAU,GAAE,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;IACpJ,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,8DAAiD,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,sBAAsB,CAAC,OAAO,EAAE,IAAA,iBAAK,EAAC,IAAA,sBAAU,GAAE,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACpJ,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,2DAA8C,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,sBAAsB,CAAC,OAAO,EAAE,IAAA,mBAAO,EAAC,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC;IAClI,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,yDAA4C,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,sBAAsB,CAAC,OAAO,EAAE,IAAA,iBAAK,EAAC,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC;IAC9H,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;QACnJ,mBAAmB,EAAE,GAAG,EAAE,CAAC,IAAA,sBAAU,GAAE;KACxC,CAAC,CAAC;AACL,CAAC;AAPD,0GAOC;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"}
@@ -46,6 +46,7 @@ export interface FirestoreDocumentDataAccessor<T, D = DocumentData> extends Docu
46
46
  */
47
47
  update(data: UpdateData<D>, params?: FirestoreDocumentUpdateParams): Promise<WriteResult | void>;
48
48
  }
49
+ export declare type FirestoreDocumentDataAccessorSetFunction<T> = (data: PartialWithFieldValue<T> | WithFieldValue<T>, options?: SetOptions) => Promise<void | WriteResult>;
49
50
  /**
50
51
  * Contextual interface used for making a FirestoreDocumentModifier for a specific document.
51
52
  */
@@ -1 +1 @@
1
- {"version":3,"file":"accessor.js","sourceRoot":"","sources":["../../../../../../../../packages/firebase/src/lib/common/firestore/accessor/accessor.ts"],"names":[],"mappings":";;;AAAA,wCAA4C;AAC5C,wCAA6D;AAE7D,+BAAyD;AA8DzD,gBAAgB;AAChB;;;;;;;;GAQG;AACH,SAAgB,sBAAsB,CAAI,MAAuC,EAAE,OAAyB;IAC1G,OAAO,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,EAAE,IAAA,kBAAW,GAAE,CAAC,CAAC;AAClE,CAAC;AAFD,wDAEC;AAED;;;;;GAKG;AACH,SAAgB,mBAAmB,CAAI,OAAyB;IAC9D,OAAO,IAAA,UAAG,EAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;AACrC,CAAC;AAFD,kDAEC;AAcD,SAAgB,6BAA6B,CAAI,QAA0C;IACzF,OAAO,CAAC,IAAgB,EAAE,EAAE;QAC1B,OAAO,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;YACvC,IAAI,MAAM,EAAE;gBACV,MAAM,MAAM,GAAG,IAAA,4BAAqB,EAAC,IAAI,CAAC,CAAC;gBAC3C,OAAO,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;aAC9C;iBAAM;gBACL,OAAO,QAAQ,CAAC,GAAG,CAAC,IAAyB,CAAC,CAAC;aAChD;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC;AAXD,sEAWC"}
1
+ {"version":3,"file":"accessor.js","sourceRoot":"","sources":["../../../../../../../../packages/firebase/src/lib/common/firestore/accessor/accessor.ts"],"names":[],"mappings":";;;AAAA,wCAA4C;AAC5C,wCAA6D;AAE7D,+BAAyD;AAgEzD,gBAAgB;AAChB;;;;;;;;GAQG;AACH,SAAgB,sBAAsB,CAAI,MAAuC,EAAE,OAAyB;IAC1G,OAAO,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,EAAE,IAAA,kBAAW,GAAE,CAAC,CAAC;AAClE,CAAC;AAFD,wDAEC;AAED;;;;;GAKG;AACH,SAAgB,mBAAmB,CAAI,OAAyB;IAC9D,OAAO,IAAA,UAAG,EAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;AACrC,CAAC;AAFD,kDAEC;AAcD,SAAgB,6BAA6B,CAAI,QAA0C;IACzF,OAAO,CAAC,IAAgB,EAAE,EAAE;QAC1B,OAAO,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;YACvC,IAAI,MAAM,EAAE;gBACV,MAAM,MAAM,GAAG,IAAA,4BAAqB,EAAC,IAAI,CAAC,CAAC;gBAC3C,OAAO,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;aAC9C;iBAAM;gBACL,OAAO,QAAQ,CAAC,GAAG,CAAC,IAAyB,CAAC,CAAC;aAChD;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC;AAXD,sEAWC"}
@@ -0,0 +1,23 @@
1
+ import { Observable } from 'rxjs';
2
+ import { DocumentData, DocumentReference, DocumentSnapshot, PartialWithFieldValue, SetOptions, UpdateData, WithFieldValue, WriteResult } from '../types';
3
+ import { FirestoreDocumentDataAccessor, FirestoreDocumentDataAccessorFactory, FirestoreDocumentDeleteParams, FirestoreDocumentUpdateParams } from './accessor';
4
+ /**
5
+ * Abstract wrapper for a FirestoreDocumentDataAccessor.
6
+ *
7
+ * Forwards all non-overridden accessor functions to the wrapped accessor by default.
8
+ */
9
+ export declare abstract class AbstractFirestoreDocumentDataAccessorWrapper<T, D = DocumentData> implements FirestoreDocumentDataAccessor<T, D> {
10
+ readonly accessor: FirestoreDocumentDataAccessor<T, D>;
11
+ constructor(accessor: FirestoreDocumentDataAccessor<T, D>);
12
+ get documentRef(): DocumentReference<T>;
13
+ stream(): Observable<DocumentSnapshot<T>>;
14
+ get(): Promise<DocumentSnapshot<T>>;
15
+ exists(): Promise<boolean>;
16
+ delete(params?: FirestoreDocumentDeleteParams): Promise<void | WriteResult>;
17
+ set(data: PartialWithFieldValue<T>, options: SetOptions): Promise<WriteResult | void>;
18
+ set(data: WithFieldValue<T>): Promise<WriteResult | void>;
19
+ update(data: UpdateData<D>, params?: FirestoreDocumentUpdateParams): Promise<void | WriteResult>;
20
+ }
21
+ export declare type WrapFirestoreDocumentDataAccessorFunction<T, D = DocumentData> = (input: FirestoreDocumentDataAccessor<T, D>) => FirestoreDocumentDataAccessor<T, D>;
22
+ export declare type InterceptAccessorFactoryFunction<T, D = DocumentData> = (input: FirestoreDocumentDataAccessorFactory<T, D>) => FirestoreDocumentDataAccessorFactory<T, D>;
23
+ export declare function interceptAccessorFactoryFunction<T, D = DocumentData>(wrap: WrapFirestoreDocumentDataAccessorFunction<T, D>): InterceptAccessorFactoryFunction<T, D>;
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.interceptAccessorFactoryFunction = exports.AbstractFirestoreDocumentDataAccessorWrapper = void 0;
4
+ // MARK: Abstract Wrapper
5
+ /**
6
+ * Abstract wrapper for a FirestoreDocumentDataAccessor.
7
+ *
8
+ * Forwards all non-overridden accessor functions to the wrapped accessor by default.
9
+ */
10
+ class AbstractFirestoreDocumentDataAccessorWrapper {
11
+ constructor(accessor) {
12
+ this.accessor = accessor;
13
+ }
14
+ get documentRef() {
15
+ return this.accessor.documentRef;
16
+ }
17
+ stream() {
18
+ return this.accessor.stream();
19
+ }
20
+ get() {
21
+ return this.accessor.get();
22
+ }
23
+ exists() {
24
+ return this.accessor.exists();
25
+ }
26
+ delete(params) {
27
+ return this.accessor.delete(params);
28
+ }
29
+ set(data, options) {
30
+ return this.accessor.set(data, options);
31
+ }
32
+ update(data, params) {
33
+ return this.update(data, params);
34
+ }
35
+ }
36
+ exports.AbstractFirestoreDocumentDataAccessorWrapper = AbstractFirestoreDocumentDataAccessorWrapper;
37
+ function interceptAccessorFactoryFunction(wrap) {
38
+ return (input) => ({
39
+ accessorFor: (ref) => wrap(input.accessorFor(ref))
40
+ });
41
+ }
42
+ exports.interceptAccessorFactoryFunction = interceptAccessorFactoryFunction;
43
+ //# sourceMappingURL=accessor.wrap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accessor.wrap.js","sourceRoot":"","sources":["../../../../../../../../packages/firebase/src/lib/common/firestore/accessor/accessor.wrap.ts"],"names":[],"mappings":";;;AAIA,yBAAyB;AACzB;;;;GAIG;AACH,MAAsB,4CAA4C;IAChE,YAAqB,QAA6C;QAA7C,aAAQ,GAAR,QAAQ,CAAqC;IAAG,CAAC;IAEtE,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;IACnC,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;IAChC,CAAC;IAED,GAAG;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;IAC7B,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;IAChC,CAAC;IAED,MAAM,CAAC,MAAsC;QAC3C,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACtC,CAAC;IAID,GAAG,CAAC,IAAkD,EAAE,OAAoB;QAC1E,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,OAAqB,CAAC,CAAC;IACxD,CAAC;IAED,MAAM,CAAC,IAAmB,EAAE,MAAsC;QAChE,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACnC,CAAC;CACF;AAhCD,oGAgCC;AAMD,SAAgB,gCAAgC,CAAsB,IAAqD;IACzH,OAAO,CAAC,KAAiD,EAAE,EAAE,CAAC,CAAC;QAC7D,WAAW,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;KACnD,CAAC,CAAC;AACL,CAAC;AAJD,4EAIC"}
@@ -0,0 +1,56 @@
1
+ import { ArrayOrValue, ModifierFunction } from '@dereekb/util';
2
+ import { UserRelated } from '../../../model/user';
3
+ import { DocumentReferenceRef } from '../reference';
4
+ import { DocumentData, SetOptions } from '../types';
5
+ import { FirestoreDocumentDataAccessor, FirestoreDocumentDataAccessorSetFunction } from './accessor';
6
+ import { AbstractFirestoreDocumentDataAccessorWrapper, InterceptAccessorFactoryFunction } from './accessor.wrap';
7
+ export declare type ModifyBeforeSetFistoreDataAccessorMode = 'always' | 'update' | 'set';
8
+ /**
9
+ * Input fora ModifyBeforeSetFirestoreDocumentDataAccessorWrapper
10
+ */
11
+ export interface ModifyBeforeSetFistoreDataAccessorInput<T> extends DocumentReferenceRef<T> {
12
+ /**
13
+ * Data to pass to the modifyAndSet function.
14
+ */
15
+ readonly data: Partial<T>;
16
+ /**
17
+ * Set options passed to the set function, if available.
18
+ */
19
+ readonly options?: SetOptions;
20
+ }
21
+ export declare type ModifyBeforeSetModifierFunction<T> = ModifierFunction<ModifyBeforeSetFistoreDataAccessorInput<T>>;
22
+ export interface ModifyBeforeSetConfig<T extends object> {
23
+ /**
24
+ * When to modify the input data.
25
+ */
26
+ readonly when: ModifyBeforeSetFistoreDataAccessorMode;
27
+ /**
28
+ * Modifier or array of modifier functions to apply to input data.
29
+ */
30
+ readonly modifier: ArrayOrValue<ModifyBeforeSetModifierFunction<T>>;
31
+ }
32
+ /**
33
+ * FirestoreDocumentDataAccessorWrapper that applies a modifier function to data being set. When the modifier functions are applied can be changed by the mode.
34
+ */
35
+ export declare class ModifyBeforeSetFirestoreDocumentDataAccessorWrapper<T extends object, D = DocumentData> extends AbstractFirestoreDocumentDataAccessorWrapper<T, D> {
36
+ readonly config: ModifyBeforeSetConfig<T>;
37
+ readonly modifier: ModifierFunction<ModifyBeforeSetFistoreDataAccessorInput<T>>;
38
+ readonly set: FirestoreDocumentDataAccessorSetFunction<T>;
39
+ constructor(accessor: FirestoreDocumentDataAccessor<T, D>, config: ModifyBeforeSetConfig<T>);
40
+ }
41
+ /**
42
+ * Creates a ModifyBeforeSetModifierFunction<T> to copy the documentRef's id to the target field on the data.
43
+ *
44
+ * @param fieldName
45
+ * @returns
46
+ */
47
+ export declare function copyDocumentIdToFieldModifierFunction<T extends object>(fieldName: keyof T): ModifyBeforeSetModifierFunction<T>;
48
+ export declare function modifyBeforeSetInterceptAccessorFactoryFunction<T extends object, D = DocumentData>(config: ModifyBeforeSetConfig<T>): InterceptAccessorFactoryFunction<T, D>;
49
+ export declare function copyDocumentIdForUserRelatedModifierFunction<T extends UserRelated>(): ModifyBeforeSetModifierFunction<T>;
50
+ /**
51
+ * Returns a pre-configured ModifyBeforeSetConfig<T> for UserRelated models
52
+ * @returns
53
+ */
54
+ export declare function copyUserRelatedDataModifierConfig<T extends UserRelated>(): ModifyBeforeSetConfig<T>;
55
+ export declare const COPY_USER_RELATED_DATA_ACCESSOR_FACTORY_FUNCTION: import("@dereekb/util").CachedFactoryWithInput<InterceptAccessorFactoryFunction<UserRelated, DocumentData>, unknown>;
56
+ export declare function copyUserRelatedDataAccessorFactoryFunction<T extends UserRelated, D = DocumentData>(): InterceptAccessorFactoryFunction<T, D>;
@@ -0,0 +1,95 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.copyUserRelatedDataAccessorFactoryFunction = exports.COPY_USER_RELATED_DATA_ACCESSOR_FACTORY_FUNCTION = exports.copyUserRelatedDataModifierConfig = exports.copyDocumentIdForUserRelatedModifierFunction = exports.modifyBeforeSetInterceptAccessorFactoryFunction = exports.copyDocumentIdToFieldModifierFunction = exports.ModifyBeforeSetFirestoreDocumentDataAccessorWrapper = void 0;
4
+ const util_1 = require("@dereekb/util");
5
+ const accessor_wrap_1 = require("./accessor.wrap");
6
+ /**
7
+ * FirestoreDocumentDataAccessorWrapper that applies a modifier function to data being set. When the modifier functions are applied can be changed by the mode.
8
+ */
9
+ class ModifyBeforeSetFirestoreDocumentDataAccessorWrapper extends accessor_wrap_1.AbstractFirestoreDocumentDataAccessorWrapper {
10
+ constructor(accessor, config) {
11
+ super(accessor);
12
+ this.config = config;
13
+ const when = config.when;
14
+ this.modifier = (0, util_1.mergeModifiers)((0, util_1.asArray)(config.modifier));
15
+ let setFn;
16
+ const modifyAndSet = (data, options) => {
17
+ const copy = Object.assign({}, data);
18
+ const input = {
19
+ data: copy,
20
+ documentRef: this.documentRef,
21
+ options
22
+ };
23
+ this.modifier(input);
24
+ return super.set(input.data, options);
25
+ };
26
+ switch (when) {
27
+ case 'always':
28
+ setFn = modifyAndSet;
29
+ break;
30
+ case 'set':
31
+ setFn = (data, options) => {
32
+ const isSetForNewModel = Boolean(!options);
33
+ if (isSetForNewModel) {
34
+ return modifyAndSet(data);
35
+ }
36
+ else {
37
+ return super.set(data, options);
38
+ }
39
+ };
40
+ break;
41
+ case 'update':
42
+ setFn = (data, options) => {
43
+ const isUpdateForExistingModel = options && (Boolean(options.mergeFields) || Boolean(options.merge));
44
+ if (isUpdateForExistingModel) {
45
+ return modifyAndSet(data);
46
+ }
47
+ else {
48
+ return super.set(data, options);
49
+ }
50
+ };
51
+ break;
52
+ }
53
+ this.set = setFn;
54
+ }
55
+ }
56
+ exports.ModifyBeforeSetFirestoreDocumentDataAccessorWrapper = ModifyBeforeSetFirestoreDocumentDataAccessorWrapper;
57
+ // MARK: Modifier Functions
58
+ /**
59
+ * Creates a ModifyBeforeSetModifierFunction<T> to copy the documentRef's id to the target field on the data.
60
+ *
61
+ * @param fieldName
62
+ * @returns
63
+ */
64
+ function copyDocumentIdToFieldModifierFunction(fieldName) {
65
+ return ({ data, documentRef }) => {
66
+ data[fieldName] = documentRef.id; // copy the id to the target field
67
+ };
68
+ }
69
+ exports.copyDocumentIdToFieldModifierFunction = copyDocumentIdToFieldModifierFunction;
70
+ function modifyBeforeSetInterceptAccessorFactoryFunction(config) {
71
+ return (0, accessor_wrap_1.interceptAccessorFactoryFunction)((accessor) => new ModifyBeforeSetFirestoreDocumentDataAccessorWrapper(accessor, config));
72
+ }
73
+ exports.modifyBeforeSetInterceptAccessorFactoryFunction = modifyBeforeSetInterceptAccessorFactoryFunction;
74
+ // MARK: Templates
75
+ function copyDocumentIdForUserRelatedModifierFunction() {
76
+ return copyDocumentIdToFieldModifierFunction('uid');
77
+ }
78
+ exports.copyDocumentIdForUserRelatedModifierFunction = copyDocumentIdForUserRelatedModifierFunction;
79
+ /**
80
+ * Returns a pre-configured ModifyBeforeSetConfig<T> for UserRelated models
81
+ * @returns
82
+ */
83
+ function copyUserRelatedDataModifierConfig() {
84
+ return {
85
+ when: 'set',
86
+ modifier: copyDocumentIdForUserRelatedModifierFunction()
87
+ };
88
+ }
89
+ exports.copyUserRelatedDataModifierConfig = copyUserRelatedDataModifierConfig;
90
+ exports.COPY_USER_RELATED_DATA_ACCESSOR_FACTORY_FUNCTION = (0, util_1.cachedGetter)(() => modifyBeforeSetInterceptAccessorFactoryFunction(copyUserRelatedDataModifierConfig()));
91
+ function copyUserRelatedDataAccessorFactoryFunction() {
92
+ return (0, exports.COPY_USER_RELATED_DATA_ACCESSOR_FACTORY_FUNCTION)();
93
+ }
94
+ exports.copyUserRelatedDataAccessorFactoryFunction = copyUserRelatedDataAccessorFactoryFunction;
95
+ //# sourceMappingURL=accessor.wrap.modify.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accessor.wrap.modify.js","sourceRoot":"","sources":["../../../../../../../../packages/firebase/src/lib/common/firestore/accessor/accessor.wrap.modify.ts"],"names":[],"mappings":"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"}
@@ -1,24 +1,25 @@
1
- import { FirestoreModelId, FirestoreModelIdRef, FirestoreModelKey, FirestoreModelKeyRef, FirestoreModelName } from './../collection/collection';
2
1
  import { Observable } from 'rxjs';
3
2
  import { FirestoreAccessorDriverRef } from '../driver/accessor';
3
+ import { FirestoreModelId, FirestoreModelIdRef, FirestoreModelKey, FirestoreModelKeyRef, FirestoreModelName } from './../collection/collection';
4
4
  import { DocumentReference, CollectionReference, Transaction, WriteBatch, DocumentSnapshot, SnapshotOptions, WriteResult } from '../types';
5
5
  import { FirestoreDocumentDataAccessor } from './accessor';
6
6
  import { CollectionReferenceRef, DocumentReferenceRef, FirestoreContextReference } from '../reference';
7
7
  import { FirestoreDocumentContext } from './context';
8
8
  import { FirestoreModelNameRef, FirestoreModelIdentity, FirestoreModelIdentityRef } from '../collection/collection';
9
- export interface FirestoreDocument<T, A extends FirestoreDocumentDataAccessor<T> = FirestoreDocumentDataAccessor<T>, M extends FirestoreModelName = FirestoreModelName> extends DocumentReferenceRef<T>, CollectionReferenceRef<T>, FirestoreModelIdentityRef<M>, FirestoreModelNameRef<M>, FirestoreModelKeyRef, FirestoreModelIdRef {
10
- readonly accessor: A;
9
+ import { InterceptAccessorFactoryFunction } from './accessor.wrap';
10
+ export interface FirestoreDocument<T, M extends FirestoreModelName = FirestoreModelName> extends DocumentReferenceRef<T>, CollectionReferenceRef<T>, FirestoreModelIdentityRef<M>, FirestoreModelNameRef<M>, FirestoreModelKeyRef, FirestoreModelIdRef {
11
+ readonly accessor: FirestoreDocumentDataAccessor<T>;
11
12
  readonly id: string;
12
13
  }
13
14
  /**
14
15
  * Abstract FirestoreDocument implementation that extends a FirestoreDocumentDataAccessor.
15
16
  */
16
- export declare abstract class AbstractFirestoreDocument<T, D extends AbstractFirestoreDocument<T, any, any>, A extends FirestoreDocumentDataAccessor<T> = FirestoreDocumentDataAccessor<T>, M extends FirestoreModelName = FirestoreModelName> implements FirestoreDocument<T, A>, LimitedFirestoreDocumentAccessorRef<T, D>, CollectionReferenceRef<T> {
17
- readonly accessor: A;
17
+ export declare abstract class AbstractFirestoreDocument<T, D extends AbstractFirestoreDocument<T, any, M>, M extends FirestoreModelName = FirestoreModelName> implements FirestoreDocument<T>, LimitedFirestoreDocumentAccessorRef<T, D>, CollectionReferenceRef<T> {
18
+ readonly accessor: FirestoreDocumentDataAccessor<T>;
18
19
  readonly documentAccessor: LimitedFirestoreDocumentAccessor<T, D>;
19
20
  readonly stream$: Observable<DocumentSnapshot<T>>;
20
21
  readonly data$: Observable<T>;
21
- constructor(accessor: A, documentAccessor: LimitedFirestoreDocumentAccessor<T, D>);
22
+ constructor(accessor: FirestoreDocumentDataAccessor<T>, documentAccessor: LimitedFirestoreDocumentAccessor<T, D>);
22
23
  abstract get modelIdentity(): FirestoreModelIdentity<M>;
23
24
  get modelType(): M;
24
25
  get id(): FirestoreModelId;
@@ -77,14 +78,29 @@ export interface FirestoreDocumentAccessor<T, D extends FirestoreDocument<T> = F
77
78
  *
78
79
  * @param ref
79
80
  */
80
- loadDocumentForPath(path: string, ...pathSegments: string[]): D;
81
+ loadDocumentForId(id: FirestoreModelId): D;
81
82
  /**
82
83
  * Creates a document ref relative to the current context and given the input path.
83
84
  *
84
85
  * @param path
85
86
  * @param pathSegments
86
87
  */
87
- documentRefForPath(path: string, ...pathSegments: string[]): DocumentReference<T>;
88
+ documentRefForId(id: FirestoreModelId): DocumentReference<T>;
89
+ /**
90
+ * Loads a document from the datastore with the given id/path.
91
+ *
92
+ * @deprecated use loadDocumentForId instead. Will be removed in the future.
93
+ * @param ref
94
+ */
95
+ loadDocumentForPath(id: FirestoreModelId): D;
96
+ /**
97
+ * Creates a document ref relative to the current context and given the input path.
98
+ *
99
+ * @deprecated use documentRefForId instead. Will be removed in the future.
100
+ * @param path
101
+ * @param pathSegments
102
+ */
103
+ documentRefForPath(id: FirestoreModelId): DocumentReference<T>;
88
104
  }
89
105
  /**
90
106
  * Used to generate a FirestoreDocument from an input FirestoreDocumentDataAccessor instance.
@@ -109,6 +125,10 @@ export interface LimitedFirestoreDocumentAccessorFactory<T, D extends FirestoreD
109
125
  * FirestoreDocumentAccessor configuration.
110
126
  */
111
127
  export interface LimitedFirestoreDocumentAccessorFactoryConfig<T, D extends FirestoreDocument<T> = FirestoreDocument<T>> extends FirestoreContextReference, FirestoreAccessorDriverRef {
128
+ /**
129
+ * Optional InterceptAccessorFactoryFunction to intercept/return a modified accessor factory.
130
+ */
131
+ readonly accessorFactory?: InterceptAccessorFactoryFunction<T>;
112
132
  readonly makeDocument: FirestoreDocumentFactoryFunction<T, D>;
113
133
  }
114
134
  export declare function limitedFirestoreDocumentAccessorFactory<T, D extends FirestoreDocument<T> = FirestoreDocument<T>>(config: LimitedFirestoreDocumentAccessorFactoryConfig<T, D>): LimitedFirestoreDocumentAccessorFactoryFunction<T, D>;
@@ -153,12 +173,12 @@ export interface FirestoreDocumentAccessorContextExtension<T, D extends Firestor
153
173
  }
154
174
  export declare function firestoreDocumentAccessorContextExtension<T, D extends FirestoreDocument<T> = FirestoreDocument<T>>({ documentAccessor, firestoreAccessorDriver }: FirestoreDocumentAccessorContextExtensionConfig<T, D>): FirestoreDocumentAccessorContextExtension<T, D>;
155
175
  export declare function firestoreDocumentAccessorContextExtension<T, D extends FirestoreDocument<T> = FirestoreDocument<T>>({ documentAccessor, firestoreAccessorDriver }: LimitedFirestoreDocumentAccessorContextExtensionConfig<T, D>): LimitedFirestoreDocumentAccessorContextExtension<T, D>;
156
- export interface FirestoreDocumentWithParent<P, T, A extends FirestoreDocumentDataAccessor<T> = FirestoreDocumentDataAccessor<T>> extends FirestoreDocument<T, A> {
176
+ export interface FirestoreDocumentWithParent<P, T> extends FirestoreDocument<T> {
157
177
  readonly parent: DocumentReference<P>;
158
178
  }
159
- 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> {
179
+ export declare abstract class AbstractFirestoreDocumentWithParent<P, T, D extends AbstractFirestoreDocument<T, any>> extends AbstractFirestoreDocument<T, D> implements FirestoreDocumentWithParent<P, T> {
160
180
  get parent(): DocumentReference<P>;
161
- constructor(accessor: A, documentAccessor: LimitedFirestoreDocumentAccessor<T, D>);
181
+ constructor(accessor: FirestoreDocumentDataAccessor<T>, documentAccessor: LimitedFirestoreDocumentAccessor<T, D>);
162
182
  }
163
183
  export interface FirestoreSingleDocumentAccessor<T, D extends FirestoreDocument<T> = FirestoreDocument<T>> {
164
184
  loadDocument(): D;
@@ -1,4 +1,6 @@
1
1
  "use strict";
2
+ /*eslint @typescript-eslint/no-explicit-any:"off"*/
3
+ // any is used with intent here, as the recursive AbstractFirestoreDocument requires its use to terminate.
2
4
  Object.defineProperty(exports, "__esModule", { value: true });
3
5
  exports.firestoreSingleDocumentAccessor = exports.AbstractFirestoreDocumentWithParent = exports.firestoreDocumentAccessorContextExtension = exports.firestoreDocumentAccessorFactory = exports.limitedFirestoreDocumentAccessorFactory = exports.AbstractFirestoreDocument = void 0;
4
6
  const accessor_1 = require("./accessor");
@@ -46,13 +48,13 @@ class AbstractFirestoreDocument {
46
48
  }
47
49
  exports.AbstractFirestoreDocument = AbstractFirestoreDocument;
48
50
  function limitedFirestoreDocumentAccessorFactory(config) {
49
- const { firestoreContext, firestoreAccessorDriver } = config;
51
+ const { firestoreContext, firestoreAccessorDriver, makeDocument, accessorFactory: interceptAccessorFactory } = config;
50
52
  return (context) => {
51
53
  const databaseContext = context !== null && context !== void 0 ? context : config.firestoreAccessorDriver.defaultContextFactory();
52
- const dataAccessorFactory = databaseContext.accessorFactory;
54
+ const dataAccessorFactory = interceptAccessorFactory ? interceptAccessorFactory(databaseContext.accessorFactory) : databaseContext.accessorFactory;
53
55
  function loadDocument(ref) {
54
56
  const accessor = dataAccessorFactory.accessorFor(ref);
55
- return config.makeDocument(accessor, documentAccessor);
57
+ return makeDocument(accessor, documentAccessor);
56
58
  }
57
59
  function documentRefForKey(fullPath) {
58
60
  return firestoreAccessorDriver.docAtPath(firestoreContext.firestore, fullPath);
@@ -78,7 +80,7 @@ exports.limitedFirestoreDocumentAccessorFactory = limitedFirestoreDocumentAccess
78
80
  function firestoreDocumentAccessorFactory(config) {
79
81
  const { firestoreAccessorDriver, collection } = config;
80
82
  const limitedFirestoreDocumentAccessor = limitedFirestoreDocumentAccessorFactory(config);
81
- function documentRefForPath(path, ...pathSegments) {
83
+ function documentRefForId(path, ...pathSegments) {
82
84
  return firestoreAccessorDriver.doc(collection, path, ...pathSegments);
83
85
  }
84
86
  return (context) => {
@@ -90,13 +92,16 @@ function firestoreDocumentAccessorFactory(config) {
90
92
  const newDocRef = firestoreAccessorDriver.doc(collection);
91
93
  return documentAccessor.loadDocument(newDocRef);
92
94
  };
93
- x.documentRefForPath = documentRefForPath;
94
- x.loadDocumentForPath = (path, ...pathSegments) => {
95
+ x.documentRefForId = documentRefForId;
96
+ x.loadDocumentForId = (path, ...pathSegments) => {
95
97
  if (!path) {
96
- throw new Error('Path was not provided to loadDocumentForPath(). Use newDocument() for generating an id.');
98
+ throw new Error('Path was not provided to loadDocumentForId(). Use newDocument() for generating an id.');
97
99
  }
98
- return documentAccessor.loadDocument(documentRefForPath(path, ...pathSegments));
100
+ return documentAccessor.loadDocument(documentRefForId(path, ...pathSegments));
99
101
  };
102
+ // TODO: Remove later
103
+ x.documentRefForPath = x.documentRefForId;
104
+ x.loadDocumentForPath = x.loadDocumentForId;
100
105
  }
101
106
  });
102
107
  return documentAccessor;
@@ -128,13 +133,13 @@ function firestoreSingleDocumentAccessor(config) {
128
133
  const { singleItemIdentifier: identifier, accessors } = config;
129
134
  return {
130
135
  loadDocument() {
131
- return accessors.documentAccessor().loadDocumentForPath(identifier);
136
+ return accessors.documentAccessor().loadDocumentForId(identifier);
132
137
  },
133
138
  loadDocumentForTransaction(transaction) {
134
- return accessors.documentAccessorForTransaction(transaction).loadDocumentForPath(identifier);
139
+ return accessors.documentAccessorForTransaction(transaction).loadDocumentForId(identifier);
135
140
  },
136
141
  loadDocumentForWriteBatch(writeBatch) {
137
- return accessors.documentAccessorForWriteBatch(writeBatch).loadDocumentForPath(identifier);
142
+ return accessors.documentAccessorForWriteBatch(writeBatch).loadDocumentForId(identifier);
138
143
  }
139
144
  };
140
145
  }
@@ -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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"}
@@ -4,6 +4,10 @@ import { FirestoreDocument, FirestoreDocumentAccessor, LimitedFirestoreDocumentA
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;
7
+ /**
8
+ * Optional override to create a new document using the input accessor.
9
+ */
10
+ newDocument?: (documentAccessor: FirestoreDocumentAccessor<T, D>) => D;
7
11
  /**
8
12
  * Initializes the input document with the returned data.
9
13
  *
@@ -15,10 +15,12 @@ exports.newDocuments = newDocuments;
15
15
  * @returns
16
16
  */
17
17
  function makeDocuments(documentAccessor, make) {
18
+ var _a;
19
+ const newDocumentFn = (_a = make.newDocument) !== null && _a !== void 0 ? _a : (() => documentAccessor.newDocument());
18
20
  return (0, util_1.performMakeLoop)({
19
21
  count: make.count,
20
22
  make: (i) => tslib_1.__awaiter(this, void 0, void 0, function* () {
21
- const document = documentAccessor.newDocument();
23
+ const document = newDocumentFn(documentAccessor);
22
24
  const data = yield make.init(i, document);
23
25
  if (data != null) {
24
26
  yield document.accessor.set(data);
@@ -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,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
+ {"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;AAkBD;;;;;;GAMG;AACH,SAAgB,aAAa,CAAoC,gBAAiD,EAAE,IAA+B;;IACjJ,MAAM,aAAa,GAAG,MAAA,IAAI,CAAC,WAAW,mCAAI,CAAC,GAAG,EAAE,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC,CAAC;IACjF,OAAO,IAAA,sBAAe,EAAC;QACrB,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,IAAI,EAAE,CAAO,CAAS,EAAE,EAAE;YACxB,MAAM,QAAQ,GAAM,aAAa,CAAC,gBAAgB,CAAC,CAAC;YACpD,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;AAfD,sCAeC;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,6 +1,8 @@
1
1
  export * from './accessor.batch';
2
2
  export * from './accessor.default';
3
3
  export * from './accessor.transaction';
4
+ export * from './accessor.wrap';
5
+ export * from './accessor.wrap.modify';
4
6
  export * from './accessor';
5
7
  export * from './context.batch';
6
8
  export * from './context.default';
@@ -4,6 +4,8 @@ const tslib_1 = require("tslib");
4
4
  tslib_1.__exportStar(require("./accessor.batch"), exports);
5
5
  tslib_1.__exportStar(require("./accessor.default"), exports);
6
6
  tslib_1.__exportStar(require("./accessor.transaction"), exports);
7
+ tslib_1.__exportStar(require("./accessor.wrap"), exports);
8
+ tslib_1.__exportStar(require("./accessor.wrap.modify"), exports);
7
9
  tslib_1.__exportStar(require("./accessor"), exports);
8
10
  tslib_1.__exportStar(require("./context.batch"), exports);
9
11
  tslib_1.__exportStar(require("./context.default"), exports);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../../packages/firebase/src/lib/common/firestore/accessor/index.ts"],"names":[],"mappings":";;;AAAA,2DAAiC;AACjC,6DAAmC;AACnC,iEAAuC;AACvC,qDAA2B;AAC3B,0DAAgC;AAChC,4DAAkC;AAClC,gEAAsC;AACtC,oDAA0B;AAC1B,qDAA2B;AAC3B,6DAAmC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../../packages/firebase/src/lib/common/firestore/accessor/index.ts"],"names":[],"mappings":";;;AAAA,2DAAiC;AACjC,6DAAmC;AACnC,iEAAuC;AACvC,0DAAgC;AAChC,iEAAuC;AACvC,qDAA2B;AAC3B,0DAAgC;AAChC,4DAAkC;AAClC,gEAAsC;AACtC,oDAA0B;AAC1B,qDAA2B;AAC3B,6DAAmC"}