@dereekb/firebase 6.0.0 → 7.1.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 (63) hide show
  1. package/CHANGELOG.md +28 -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/client/function/model.function.factory.d.ts +17 -8
  6. package/src/lib/client/function/model.function.factory.js +4 -0
  7. package/src/lib/client/function/model.function.factory.js.map +1 -1
  8. package/src/lib/common/firestore/accessor/accessor.d.ts +1 -0
  9. package/src/lib/common/firestore/accessor/accessor.js.map +1 -1
  10. package/src/lib/common/firestore/accessor/accessor.wrap.d.ts +23 -0
  11. package/src/lib/common/firestore/accessor/accessor.wrap.js +43 -0
  12. package/src/lib/common/firestore/accessor/accessor.wrap.js.map +1 -0
  13. package/src/lib/common/firestore/accessor/accessor.wrap.modify.d.ts +56 -0
  14. package/src/lib/common/firestore/accessor/accessor.wrap.modify.js +95 -0
  15. package/src/lib/common/firestore/accessor/accessor.wrap.modify.js.map +1 -0
  16. package/src/lib/common/firestore/accessor/document.d.ts +41 -15
  17. package/src/lib/common/firestore/accessor/document.js +25 -11
  18. package/src/lib/common/firestore/accessor/document.js.map +1 -1
  19. package/src/lib/common/firestore/accessor/document.utility.d.ts +4 -0
  20. package/src/lib/common/firestore/accessor/document.utility.js +3 -1
  21. package/src/lib/common/firestore/accessor/document.utility.js.map +1 -1
  22. package/src/lib/common/firestore/accessor/index.d.ts +2 -0
  23. package/src/lib/common/firestore/accessor/index.js +2 -0
  24. package/src/lib/common/firestore/accessor/index.js.map +1 -1
  25. package/src/lib/common/firestore/collection/collection.d.ts +37 -1
  26. package/src/lib/common/firestore/collection/collection.js.map +1 -1
  27. package/src/lib/common/firestore/query/constraint.d.ts +5 -0
  28. package/src/lib/common/firestore/query/constraint.js +8 -2
  29. package/src/lib/common/firestore/query/constraint.js.map +1 -1
  30. package/src/lib/common/firestore/snapshot/snapshot.d.ts +7 -4
  31. package/src/lib/common/firestore/snapshot/snapshot.field.d.ts +45 -5
  32. package/src/lib/common/firestore/snapshot/snapshot.field.js +67 -2
  33. package/src/lib/common/firestore/snapshot/snapshot.field.js.map +1 -1
  34. package/src/lib/common/firestore/snapshot/snapshot.js +2 -1
  35. package/src/lib/common/firestore/snapshot/snapshot.js.map +1 -1
  36. package/src/lib/common/firestore/types.d.ts +2 -2
  37. package/src/lib/common/function/action.d.ts +4 -0
  38. package/src/lib/common/model/function.d.ts +21 -7
  39. package/src/lib/common/model/function.js +17 -2
  40. package/src/lib/common/model/function.js.map +1 -1
  41. package/src/lib/common/model/model/model.loader.d.ts +3 -4
  42. package/src/lib/common/model/model/model.loader.js.map +1 -1
  43. package/src/lib/common/model/model.service.d.ts +27 -6
  44. package/src/lib/common/model/model.service.js +36 -31
  45. package/src/lib/common/model/model.service.js.map +1 -1
  46. package/src/lib/common/model/permission/permission.service.role.d.ts +13 -8
  47. package/src/lib/common/model/permission/permission.service.role.js +18 -0
  48. package/src/lib/common/model/permission/permission.service.role.js.map +1 -1
  49. package/test/CHANGELOG.md +19 -0
  50. package/test/package.json +8 -7
  51. package/test/src/lib/common/firestore.mock.item.d.ts +46 -2
  52. package/test/src/lib/common/firestore.mock.item.fixture.d.ts +2 -0
  53. package/test/src/lib/common/firestore.mock.item.fixture.js +6 -0
  54. package/test/src/lib/common/firestore.mock.item.fixture.js.map +1 -1
  55. package/test/src/lib/common/firestore.mock.item.js +67 -1
  56. package/test/src/lib/common/firestore.mock.item.js.map +1 -1
  57. package/test/src/lib/common/firestore.mock.item.service.d.ts +6 -1
  58. package/test/src/lib/common/firestore.mock.item.service.js +13 -1
  59. package/test/src/lib/common/firestore.mock.item.service.js.map +1 -1
  60. package/test/src/lib/common/test.driver.accessor.js +32 -7
  61. package/test/src/lib/common/test.driver.accessor.js.map +1 -1
  62. package/test/src/lib/common/test.driver.query.js +69 -0
  63. package/test/src/lib/common/test.driver.query.js.map +1 -1
package/CHANGELOG.md CHANGED
@@ -2,6 +2,34 @@
2
2
 
3
3
  This file was generated using [@jscutlery/semver](https://github.com/jscutlery/semver).
4
4
 
5
+ # [7.1.0](https://github.com/dereekb/dbx-components/compare/v7.0.1-dev...v7.1.0) (2022-06-06)
6
+
7
+
8
+ ### Features
9
+
10
+ * added firestoreArray ([e852230](https://github.com/dereekb/dbx-components/commit/e85223077246c1755cdb1028deea7019a6c71206))
11
+ * added firestoreEncodedArray, firestoreUniqueArray ([4f7fc7c](https://github.com/dereekb/dbx-components/commit/4f7fc7ca274656ecdf13d69aa7d225f66a7f76da))
12
+ * added interceptAccessorFactory() ([9833539](https://github.com/dereekb/dbx-components/commit/98335398eaa6a3ee363bdf64a440d5438bbefb24))
13
+ * added loadDocumentForId() to FirestoreDocumentAccessor ([3728145](https://github.com/dereekb/dbx-components/commit/372814540064ff4b40be032d57ddda12a8698d53))
14
+ * added whereDocumentId() ([7f5f5b8](https://github.com/dereekb/dbx-components/commit/7f5f5b8a56b2e0ad2e43308cfd87b4f8b8503c59))
15
+
16
+
17
+
18
+ ## [7.0.1](https://github.com/dereekb/dbx-components/compare/v7.0.0-dev...v7.0.1) (2022-06-05)
19
+
20
+
21
+
22
+ # [7.0.0](https://github.com/dereekb/dbx-components/compare/v6.0.0-dev...v7.0.0) (2022-06-05)
23
+
24
+
25
+ ### Features
26
+
27
+ * added FirestoreDocumentStore crud functions ([7786a40](https://github.com/dereekb/dbx-components/commit/7786a40f6033c2a1d5161805cde283dca7323db5))
28
+ * added onCallCreateModel ([84f7e72](https://github.com/dereekb/dbx-components/commit/84f7e72af20c1d0071feec3e46bae406d7fd5a26))
29
+ * added useModel to AbstractFirebaseNestContext ([29c1940](https://github.com/dereekb/dbx-components/commit/29c19402bff78d743d28ef88093757844f8ee5f7))
30
+
31
+
32
+
5
33
  # [6.0.0](https://github.com/dereekb/dbx-components/compare/v5.3.0-dev...v6.0.0) (2022-06-03)
6
34
 
7
35
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dereekb/firebase",
3
- "version": "6.0.0",
3
+ "version": "7.1.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": "6.0.0",
25
+ "@dereekb/util": "7.1.0",
26
26
  "make-error": "^1.3.0",
27
+ "ts-essentials": "^9.1.2",
27
28
  "extra-set": "^2.2.11",
28
- "@dereekb/rxjs": "6.0.0",
29
+ "@dereekb/rxjs": "7.1.0",
29
30
  "ms": "^3.0.0-canary.1",
30
- "@dereekb/date": "6.0.0",
31
+ "@dereekb/date": "7.1.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": "6.0.0",
37
+ "@dereekb/model": "7.1.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":"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"}
@@ -1,36 +1,45 @@
1
1
  import { MaybeNot } from '@dereekb/util';
2
2
  import { Functions } from 'firebase/functions';
3
3
  import { NonNever } from 'ts-essentials';
4
- import { FirestoreModelIdentity, FirestoreModelNames } from '../../common';
4
+ import { FirestoreModelIdentity, FirestoreModelNames, OnCallCreateModelResult } from '../../common';
5
5
  import { FirebaseFunctionTypeMap, FirebaseFunctionMap, FirebaseFunction } from './function';
6
6
  import { FirebaseFunctionTypeConfigMap } from './function.factory';
7
7
  export declare type ModelFirebaseCrudFunction<I> = FirebaseFunction<I, void>;
8
+ export declare type ModelFirebaseCreateFunction<I, O extends OnCallCreateModelResult = OnCallCreateModelResult> = FirebaseFunction<I, O>;
9
+ export declare type ModelFirebaseUpdateFunction<I> = ModelFirebaseCrudFunction<I>;
10
+ export declare type ModelFirebaseDeleteFunction<I> = ModelFirebaseCrudFunction<I>;
8
11
  export declare type ModelFirebaseCrudFunctionTypeMap<T extends FirestoreModelIdentity = FirestoreModelIdentity> = {
9
12
  [K in FirestoreModelNames<T>]: ModelFirebaseCrudFunctionTypeMapEntry;
10
13
  };
11
- export declare type ModelFirebaseCrudFunctionTypeMapEntry = MaybeNot | Partial<ModelFirebaseCrudFunctionUpdateTypeConfig & ModelFirebaseCrudFunctionDeleteTypeConfig>;
14
+ export declare type ModelFirebaseCrudFunctionTypeMapEntry = MaybeNot | Partial<ModelFirebaseCrudFunctionCreateTypeConfig & ModelFirebaseCrudFunctionUpdateTypeConfig & ModelFirebaseCrudFunctionDeleteTypeConfig>;
15
+ export declare type ModelFirebaseCrudFunctionCreateTypeConfig<I = unknown> = {
16
+ create: I;
17
+ };
12
18
  export declare type ModelFirebaseCrudFunctionUpdateTypeConfig<I = unknown> = {
13
19
  update: I;
14
20
  };
15
21
  export declare type ModelFirebaseCrudFunctionDeleteTypeConfig<I = unknown> = {
16
22
  delete: I;
17
23
  };
18
- export declare type ModelFirebaseCrudFunctionConfigMap<C extends ModelFirebaseCrudFunctionTypeMap> = NonNever<{
19
- [K in keyof C]: C[K] extends null ? never : (keyof C[K])[];
24
+ /**
25
+ * The configuration for a types map.
26
+ *
27
+ * The FirestoreModelIdentities that are allowed are passed too which add type checking to make sure we're passing the expected identities.
28
+ */
29
+ export declare type ModelFirebaseCrudFunctionConfigMap<C extends ModelFirebaseCrudFunctionTypeMap<T>, T extends FirestoreModelIdentity> = NonNever<{
30
+ [K in FirestoreModelNames<T>]: C[K] extends null ? never : (keyof C[K])[];
20
31
  }>;
21
- export declare type ModelFirebaseFunctionTypeUpdateKey<T extends string> = `update${Capitalize<T>}`;
22
- export declare type ModelFirebaseFunctionTypeFunctionKey<T extends string> = ModelFirebaseFunctionTypeUpdateKey<T>;
23
32
  export declare type ModelFirebaseCrudFunctionMap<C extends ModelFirebaseCrudFunctionTypeMap> = ModelFirebaseCrudFunctionRawMap<C>;
24
33
  export declare type ModelFirebaseCrudFunctionRawMap<C extends ModelFirebaseCrudFunctionTypeMap> = NonNever<{
25
34
  [K in keyof C]: K extends string ? ModelFirebaseCrudFunctionMapEntry<K, C[K]> : never;
26
35
  }>;
27
36
  export declare type ModelFirebaseCrudFunctionName<T extends string, K extends string> = `${K}${Capitalize<T>}`;
28
37
  export declare type ModelFirebaseCrudFunctionMapEntry<T extends string, E extends ModelFirebaseCrudFunctionTypeMapEntry> = E extends null ? never : {
29
- [K in keyof E as K extends string ? ModelFirebaseCrudFunctionName<T, K> : never]: ModelFirebaseCrudFunction<E[K]>;
38
+ [K in keyof E as K extends string ? ModelFirebaseCrudFunctionName<T, K> : never]: K extends 'create' ? ModelFirebaseCreateFunction<E[K]> : ModelFirebaseCrudFunction<E[K]>;
30
39
  };
31
40
  export declare type ModelFirebaseFunctionMap<M extends FirebaseFunctionTypeMap, C extends ModelFirebaseCrudFunctionTypeMap> = FirebaseFunctionMap<M> & ModelFirebaseCrudFunctionMap<C>;
32
41
  /**
33
42
  * Used for building a FirebaseFunctionMap<M> for a specific Functions instance.
34
43
  */
35
44
  export declare type ModelFirebaseFunctionMapFactory<M extends FirebaseFunctionTypeMap, U extends ModelFirebaseCrudFunctionTypeMap> = (functionsInstance: Functions) => ModelFirebaseFunctionMap<M, U>;
36
- export declare function modelFirebaseFunctionMapFactory<M extends FirebaseFunctionTypeMap, U extends ModelFirebaseCrudFunctionTypeMap>(configMap: FirebaseFunctionTypeConfigMap<M>, crudConfigMap: ModelFirebaseCrudFunctionConfigMap<U>): ModelFirebaseFunctionMapFactory<M, U>;
45
+ export declare function modelFirebaseFunctionMapFactory<M extends FirebaseFunctionTypeMap, U extends ModelFirebaseCrudFunctionTypeMap>(configMap: FirebaseFunctionTypeConfigMap<M>, crudConfigMap: ModelFirebaseCrudFunctionConfigMap<U, FirestoreModelIdentity>): ModelFirebaseFunctionMapFactory<M, U>;
@@ -10,6 +10,7 @@ function modelFirebaseFunctionMapFactory(configMap, crudConfigMap) {
10
10
  const functionFactory = (0, firebase_1.firebaseFunctionMapFactory)(configMap);
11
11
  return (functionsInstance) => {
12
12
  const functionMap = functionFactory(functionsInstance);
13
+ const _createFn = (0, util_1.cachedGetter)(() => (0, functions_1.httpsCallable)(functionsInstance, common_1.CREATE_MODEL_APP_FUNCTION_KEY));
13
14
  const _updateFn = (0, util_1.cachedGetter)(() => (0, functions_1.httpsCallable)(functionsInstance, common_1.UPDATE_MODEL_APP_FUNCTION_KEY));
14
15
  const _deleteFn = (0, util_1.cachedGetter)(() => (0, functions_1.httpsCallable)(functionsInstance, common_1.DELETE_MODEL_APP_FUNCTION_KEY));
15
16
  const result = (0, util_1.build)({
@@ -19,6 +20,9 @@ function modelFirebaseFunctionMapFactory(configMap, crudConfigMap) {
19
20
  const modelTypeSuffix = (0, util_1.capitalizeFirstLetter)(modelType);
20
21
  const crudFunctions = new Set(config);
21
22
  const modelTypeCruds = {};
23
+ if (crudFunctions.has('create')) {
24
+ modelTypeCruds[`create${modelTypeSuffix}`] = (0, function_callable_1.mapHttpsCallable)(_createFn(), { mapInput: (data) => ({ modelType, data }) });
25
+ }
22
26
  if (crudFunctions.has('update')) {
23
27
  modelTypeCruds[`update${modelTypeSuffix}`] = (0, function_callable_1.mapHttpsCallable)(_updateFn(), { mapInput: (data) => ({ modelType, data }) });
24
28
  }
@@ -1 +1 @@
1
- {"version":3,"file":"model.function.factory.js","sourceRoot":"","sources":["../../../../../../../packages/firebase/src/lib/client/function/model.function.factory.ts"],"names":[],"mappings":";;;AAAA,gDAA+D;AAC/D,wCAAqF;AACrF,kDAA8D;AAE9D,yCAA2L;AAE3L,2DAAuD;AA+CvD,SAAgB,+BAA+B,CAAgF,SAA2C,EAAE,aAAoD;IAC9N,MAAM,eAAe,GAAG,IAAA,qCAA0B,EAAC,SAAS,CAAC,CAAC;IAE9D,OAAO,CAAC,iBAA4B,EAAE,EAAE;QACtC,MAAM,WAAW,GAA2B,eAAe,CAAC,iBAAiB,CAAC,CAAC;QAE/E,MAAM,SAAS,GAAG,IAAA,mBAAY,EAAC,GAAG,EAAE,CAAC,IAAA,yBAAa,EAAC,iBAAiB,EAAE,sCAA6B,CAAC,CAAC,CAAC;QACtG,MAAM,SAAS,GAAG,IAAA,mBAAY,EAAC,GAAG,EAAE,CAAC,IAAA,yBAAa,EAAC,iBAAiB,EAAE,sCAA6B,CAAC,CAAC,CAAC;QAEtG,MAAM,MAAM,GAAG,IAAA,YAAK,EAAiC;YACnD,IAAI,EAAE,WAAwD;YAC9D,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE;gBACX,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE,EAAE;oBAC5D,MAAM,eAAe,GAAG,IAAA,4BAAqB,EAAC,SAAS,CAAC,CAAC;oBACzD,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,MAAkB,CAAC,CAAC;oBAClD,MAAM,cAAc,GAAG,EAAE,CAAC;oBAE1B,IAAI,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;wBAC9B,cAAsB,CAAC,SAAS,eAAe,EAAE,CAAC,GAAG,IAAA,oCAAgB,EAAC,SAAS,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,EAA8B,CAAA,EAAE,CAAC,CAAC;qBAC/J;oBAED,IAAI,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;wBAC9B,cAAsB,CAAC,SAAS,eAAe,EAAE,CAAC,GAAG,IAAA,oCAAgB,EAAC,SAAS,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,EAA8B,CAAA,EAAE,CAAC,CAAC;qBAC/J;oBAED,2BAA2B;oBAC1B,CAAS,CAAC,SAAS,CAAC,GAAG,cAAc,CAAC;gBACzC,CAAC,CAAC,CAAC;YACL,CAAC;SACF,CAAC,CAAC;QAEH,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;AACJ,CAAC;AAjCD,0EAiCC"}
1
+ {"version":3,"file":"model.function.factory.js","sourceRoot":"","sources":["../../../../../../../packages/firebase/src/lib/client/function/model.function.factory.ts"],"names":[],"mappings":";;;AAAA,gDAA+D;AAC/D,wCAAqF;AACrF,kDAA8D;AAE9D,yCAAmP;AAEnP,2DAAuD;AAwDvD,SAAgB,+BAA+B,CAAgF,SAA2C,EAAE,aAA4E;IACtP,MAAM,eAAe,GAAG,IAAA,qCAA0B,EAAC,SAAS,CAAC,CAAC;IAE9D,OAAO,CAAC,iBAA4B,EAAE,EAAE;QACtC,MAAM,WAAW,GAA2B,eAAe,CAAC,iBAAiB,CAAC,CAAC;QAE/E,MAAM,SAAS,GAAG,IAAA,mBAAY,EAAC,GAAG,EAAE,CAAC,IAAA,yBAAa,EAAC,iBAAiB,EAAE,sCAA6B,CAAC,CAAC,CAAC;QACtG,MAAM,SAAS,GAAG,IAAA,mBAAY,EAAC,GAAG,EAAE,CAAC,IAAA,yBAAa,EAAC,iBAAiB,EAAE,sCAA6B,CAAC,CAAC,CAAC;QACtG,MAAM,SAAS,GAAG,IAAA,mBAAY,EAAC,GAAG,EAAE,CAAC,IAAA,yBAAa,EAAC,iBAAiB,EAAE,sCAA6B,CAAC,CAAC,CAAC;QAEtG,MAAM,MAAM,GAAG,IAAA,YAAK,EAAiC;YACnD,IAAI,EAAE,WAAwD;YAC9D,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE;gBACX,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE,EAAE;oBAC5D,MAAM,eAAe,GAAG,IAAA,4BAAqB,EAAC,SAAS,CAAC,CAAC;oBACzD,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,MAAkB,CAAC,CAAC;oBAClD,MAAM,cAAc,GAAG,EAAE,CAAC;oBAE1B,IAAI,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;wBAC9B,cAAsB,CAAC,SAAS,eAAe,EAAE,CAAC,GAAG,IAAA,oCAAgB,EAAC,SAAS,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,EAA8B,CAAA,EAAE,CAAC,CAAC;qBAC/J;oBAED,IAAI,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;wBAC9B,cAAsB,CAAC,SAAS,eAAe,EAAE,CAAC,GAAG,IAAA,oCAAgB,EAAC,SAAS,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,EAA8B,CAAA,EAAE,CAAC,CAAC;qBAC/J;oBAED,IAAI,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;wBAC9B,cAAsB,CAAC,SAAS,eAAe,EAAE,CAAC,GAAG,IAAA,oCAAgB,EAAC,SAAS,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,EAA8B,CAAA,EAAE,CAAC,CAAC;qBAC/J;oBAED,2BAA2B;oBAC1B,CAAS,CAAC,SAAS,CAAC,GAAG,cAAc,CAAC;gBACzC,CAAC,CAAC,CAAC;YACL,CAAC;SACF,CAAC,CAAC;QAEH,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;AACJ,CAAC;AAtCD,0EAsCC"}
@@ -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,32 +1,39 @@
1
- import { 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
- import { ModelKey } from '@dereekb/util';
9
8
  import { FirestoreModelNameRef, FirestoreModelIdentity, FirestoreModelIdentityRef } from '../collection/collection';
10
- export interface FirestoreDocument<T, A extends FirestoreDocumentDataAccessor<T> = FirestoreDocumentDataAccessor<T>, M extends FirestoreModelName = FirestoreModelName> extends DocumentReferenceRef<T>, CollectionReferenceRef<T>, FirestoreModelIdentityRef<M>, FirestoreModelNameRef<M> {
11
- 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>;
12
12
  readonly id: string;
13
13
  }
14
14
  /**
15
15
  * Abstract FirestoreDocument implementation that extends a FirestoreDocumentDataAccessor.
16
16
  */
17
- 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> {
18
- 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>;
19
19
  readonly documentAccessor: LimitedFirestoreDocumentAccessor<T, D>;
20
20
  readonly stream$: Observable<DocumentSnapshot<T>>;
21
21
  readonly data$: Observable<T>;
22
- constructor(accessor: A, documentAccessor: LimitedFirestoreDocumentAccessor<T, D>);
22
+ constructor(accessor: FirestoreDocumentDataAccessor<T>, documentAccessor: LimitedFirestoreDocumentAccessor<T, D>);
23
23
  abstract get modelIdentity(): FirestoreModelIdentity<M>;
24
24
  get modelType(): M;
25
- get id(): string;
25
+ get id(): FirestoreModelId;
26
+ get key(): FirestoreModelKey;
26
27
  get documentRef(): DocumentReference<T>;
27
28
  get collection(): CollectionReference<T>;
28
29
  snapshot(): Promise<DocumentSnapshot<T>>;
29
30
  snapshotData(options?: SnapshotOptions): Promise<T | undefined>;
31
+ /**
32
+ * Creates or updates the existing model using the accessor's set functionality.
33
+ *
34
+ * @param data
35
+ * @returns
36
+ */
30
37
  createOrUpdate(data: Partial<T>): Promise<WriteResult | void>;
31
38
  }
32
39
  export interface LimitedFirestoreDocumentAccessorRef<T, D extends FirestoreDocument<T> = FirestoreDocument<T>, A extends LimitedFirestoreDocumentAccessor<T, D> = LimitedFirestoreDocumentAccessor<T, D>> {
@@ -52,13 +59,13 @@ export interface LimitedFirestoreDocumentAccessor<T, D extends FirestoreDocument
52
59
  *
53
60
  * @param ref
54
61
  */
55
- loadDocumentForKey(fullPath: ModelKey): D;
62
+ loadDocumentForKey(fullPath: FirestoreModelKey): D;
56
63
  /**
57
64
  * Creates a document ref with a key/full path.
58
65
  *
59
66
  * @param ref
60
67
  */
61
- documentRefForKey(fullPath: ModelKey): DocumentReference<T>;
68
+ documentRefForKey(fullPath: FirestoreModelKey): DocumentReference<T>;
62
69
  }
63
70
  export interface FirestoreDocumentAccessor<T, D extends FirestoreDocument<T> = FirestoreDocument<T>> extends LimitedFirestoreDocumentAccessor<T, D>, CollectionReferenceRef<T>, FirestoreAccessorDriverRef {
64
71
  readonly databaseContext: FirestoreDocumentContext<T>;
@@ -71,14 +78,29 @@ export interface FirestoreDocumentAccessor<T, D extends FirestoreDocument<T> = F
71
78
  *
72
79
  * @param ref
73
80
  */
74
- loadDocumentForPath(path: string, ...pathSegments: string[]): D;
81
+ loadDocumentForId(id: FirestoreModelId): D;
82
+ /**
83
+ * Creates a document ref relative to the current context and given the input path.
84
+ *
85
+ * @param path
86
+ * @param pathSegments
87
+ */
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;
75
96
  /**
76
97
  * Creates a document ref relative to the current context and given the input path.
77
98
  *
99
+ * @deprecated use documentRefForId instead. Will be removed in the future.
78
100
  * @param path
79
101
  * @param pathSegments
80
102
  */
81
- documentRefForPath(path: string, ...pathSegments: string[]): DocumentReference<T>;
103
+ documentRefForPath(id: FirestoreModelId): DocumentReference<T>;
82
104
  }
83
105
  /**
84
106
  * Used to generate a FirestoreDocument from an input FirestoreDocumentDataAccessor instance.
@@ -103,6 +125,10 @@ export interface LimitedFirestoreDocumentAccessorFactory<T, D extends FirestoreD
103
125
  * FirestoreDocumentAccessor configuration.
104
126
  */
105
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>;
106
132
  readonly makeDocument: FirestoreDocumentFactoryFunction<T, D>;
107
133
  }
108
134
  export declare function limitedFirestoreDocumentAccessorFactory<T, D extends FirestoreDocument<T> = FirestoreDocument<T>>(config: LimitedFirestoreDocumentAccessorFactoryConfig<T, D>): LimitedFirestoreDocumentAccessorFactoryFunction<T, D>;
@@ -147,12 +173,12 @@ export interface FirestoreDocumentAccessorContextExtension<T, D extends Firestor
147
173
  }
148
174
  export declare function firestoreDocumentAccessorContextExtension<T, D extends FirestoreDocument<T> = FirestoreDocument<T>>({ documentAccessor, firestoreAccessorDriver }: FirestoreDocumentAccessorContextExtensionConfig<T, D>): FirestoreDocumentAccessorContextExtension<T, D>;
149
175
  export declare function firestoreDocumentAccessorContextExtension<T, D extends FirestoreDocument<T> = FirestoreDocument<T>>({ documentAccessor, firestoreAccessorDriver }: LimitedFirestoreDocumentAccessorContextExtensionConfig<T, D>): LimitedFirestoreDocumentAccessorContextExtension<T, D>;
150
- export interface FirestoreDocumentWithParent<P, T, A extends FirestoreDocumentDataAccessor<T> = FirestoreDocumentDataAccessor<T>> extends FirestoreDocument<T, A> {
176
+ export interface FirestoreDocumentWithParent<P, T> extends FirestoreDocument<T> {
151
177
  readonly parent: DocumentReference<P>;
152
178
  }
153
- 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> {
154
180
  get parent(): DocumentReference<P>;
155
- constructor(accessor: A, documentAccessor: LimitedFirestoreDocumentAccessor<T, D>);
181
+ constructor(accessor: FirestoreDocumentDataAccessor<T>, documentAccessor: LimitedFirestoreDocumentAccessor<T, D>);
156
182
  }
157
183
  export interface FirestoreSingleDocumentAccessor<T, D extends FirestoreDocument<T> = FirestoreDocument<T>> {
158
184
  loadDocument(): D;