@dereekb/firebase 5.3.0 → 7.0.1

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 (105) hide show
  1. package/CHANGELOG.md +39 -0
  2. package/package.json +6 -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 +5 -1
  6. package/src/lib/client/firestore/driver.query.js.map +1 -1
  7. package/src/lib/client/function/function.callable.d.ts +13 -0
  8. package/src/lib/client/function/function.callable.js +22 -0
  9. package/src/lib/client/function/function.callable.js.map +1 -0
  10. package/src/lib/client/function/index.d.ts +2 -0
  11. package/src/lib/client/function/index.js +2 -0
  12. package/src/lib/client/function/index.js.map +1 -1
  13. package/src/lib/client/function/model.function.factory.d.ts +45 -0
  14. package/src/lib/client/function/model.function.factory.js +41 -0
  15. package/src/lib/client/function/model.function.factory.js.map +1 -0
  16. package/src/lib/common/auth/auth.context.d.ts +33 -0
  17. package/src/lib/common/auth/auth.context.js +3 -0
  18. package/src/lib/common/auth/auth.context.js.map +1 -0
  19. package/src/lib/common/auth/auth.d.ts +9 -0
  20. package/src/lib/common/auth/index.d.ts +1 -0
  21. package/src/lib/common/auth/index.js +1 -0
  22. package/src/lib/common/auth/index.js.map +1 -1
  23. package/src/lib/common/firestore/accessor/document.d.ts +31 -9
  24. package/src/lib/common/firestore/accessor/document.js +26 -9
  25. package/src/lib/common/firestore/accessor/document.js.map +1 -1
  26. package/src/lib/common/firestore/collection/collection.d.ts +96 -0
  27. package/src/lib/common/firestore/collection/collection.js +14 -1
  28. package/src/lib/common/firestore/collection/collection.js.map +1 -1
  29. package/src/lib/common/firestore/driver/accessor.d.ts +2 -0
  30. package/src/lib/common/firestore/driver/query.d.ts +4 -2
  31. package/src/lib/common/firestore/driver/query.handler.d.ts +1 -1
  32. package/src/lib/common/firestore/driver/query.handler.js +3 -2
  33. package/src/lib/common/firestore/driver/query.handler.js.map +1 -1
  34. package/src/lib/common/firestore/query/constraint.d.ts +21 -3
  35. package/src/lib/common/firestore/query/constraint.js +20 -2
  36. package/src/lib/common/firestore/query/constraint.js.map +1 -1
  37. package/src/lib/common/firestore/query/constraint.template.d.ts +16 -0
  38. package/src/lib/common/firestore/query/constraint.template.js +27 -0
  39. package/src/lib/common/firestore/query/constraint.template.js.map +1 -0
  40. package/src/lib/common/firestore/query/index.d.ts +1 -0
  41. package/src/lib/common/firestore/query/index.js +1 -0
  42. package/src/lib/common/firestore/query/index.js.map +1 -1
  43. package/src/lib/common/firestore/reference.d.ts +7 -1
  44. package/src/lib/common/firestore/types.d.ts +8 -5
  45. package/src/lib/common/firestore/types.js.map +1 -1
  46. package/src/lib/common/function/action.d.ts +4 -0
  47. package/src/lib/common/index.d.ts +1 -0
  48. package/src/lib/common/index.js +1 -0
  49. package/src/lib/common/index.js.map +1 -1
  50. package/src/lib/common/model/context.d.ts +16 -0
  51. package/src/lib/common/model/context.js +3 -0
  52. package/src/lib/common/model/context.js.map +1 -0
  53. package/src/lib/common/model/function.d.ts +29 -0
  54. package/src/lib/common/model/function.js +27 -0
  55. package/src/lib/common/model/function.js.map +1 -0
  56. package/src/lib/common/model/index.d.ts +5 -0
  57. package/src/lib/common/model/index.js +9 -0
  58. package/src/lib/common/model/index.js.map +1 -0
  59. package/src/lib/common/model/model/index.d.ts +1 -0
  60. package/src/lib/common/model/model/index.js +5 -0
  61. package/src/lib/common/model/model/index.js.map +1 -0
  62. package/src/lib/common/model/model/model.loader.d.ts +29 -0
  63. package/src/lib/common/model/model/model.loader.js +21 -0
  64. package/src/lib/common/model/model/model.loader.js.map +1 -0
  65. package/src/lib/common/model/model.service.d.ts +77 -0
  66. package/src/lib/common/model/model.service.js +116 -0
  67. package/src/lib/common/model/model.service.js.map +1 -0
  68. package/src/lib/common/model/permission/index.d.ts +4 -0
  69. package/src/lib/common/model/permission/index.js +8 -0
  70. package/src/lib/common/model/permission/index.js.map +1 -0
  71. package/src/lib/common/model/permission/permission.context.d.ts +9 -0
  72. package/src/lib/common/model/permission/permission.context.js +3 -0
  73. package/src/lib/common/model/permission/permission.context.js.map +1 -0
  74. package/src/lib/common/model/permission/permission.d.ts +11 -0
  75. package/src/lib/common/model/permission/permission.js +3 -0
  76. package/src/lib/common/model/permission/permission.js.map +1 -0
  77. package/src/lib/common/model/permission/permission.service.d.ts +24 -0
  78. package/src/lib/common/model/permission/permission.service.js +48 -0
  79. package/src/lib/common/model/permission/permission.service.js.map +1 -0
  80. package/src/lib/common/model/permission/permission.service.role.d.ts +45 -0
  81. package/src/lib/common/model/permission/permission.service.role.js +88 -0
  82. package/src/lib/common/model/permission/permission.service.role.js.map +1 -0
  83. package/test/CHANGELOG.md +27 -0
  84. package/test/package.json +8 -7
  85. package/test/src/lib/common/firestore.d.ts +3 -3
  86. package/test/src/lib/common/firestore.js +2 -2
  87. package/test/src/lib/common/firestore.mock.item.d.ts +43 -16
  88. package/test/src/lib/common/firestore.mock.item.fixture.d.ts +3 -1
  89. package/test/src/lib/common/firestore.mock.item.fixture.js +12 -6
  90. package/test/src/lib/common/firestore.mock.item.fixture.js.map +1 -1
  91. package/test/src/lib/common/firestore.mock.item.js +85 -27
  92. package/test/src/lib/common/firestore.mock.item.js.map +1 -1
  93. package/test/src/lib/common/firestore.mock.item.query.d.ts +20 -1
  94. package/test/src/lib/common/firestore.mock.item.query.js +22 -1
  95. package/test/src/lib/common/firestore.mock.item.query.js.map +1 -1
  96. package/test/src/lib/common/firestore.mock.item.service.d.ts +40 -0
  97. package/test/src/lib/common/firestore.mock.item.service.js +62 -0
  98. package/test/src/lib/common/firestore.mock.item.service.js.map +1 -0
  99. package/test/src/lib/common/index.d.ts +1 -0
  100. package/test/src/lib/common/index.js +1 -0
  101. package/test/src/lib/common/index.js.map +1 -1
  102. package/test/src/lib/common/test.driver.accessor.js +77 -24
  103. package/test/src/lib/common/test.driver.accessor.js.map +1 -1
  104. package/test/src/lib/common/test.driver.query.js +138 -75
  105. package/test/src/lib/common/test.driver.query.js.map +1 -1
package/CHANGELOG.md CHANGED
@@ -2,6 +2,45 @@
2
2
 
3
3
  This file was generated using [@jscutlery/semver](https://github.com/jscutlery/semver).
4
4
 
5
+ ## [7.0.1](https://github.com/dereekb/dbx-components/compare/v7.0.0-dev...v7.0.1) (2022-06-05)
6
+
7
+
8
+
9
+ # [7.0.0](https://github.com/dereekb/dbx-components/compare/v6.0.0-dev...v7.0.0) (2022-06-05)
10
+
11
+
12
+ ### Features
13
+
14
+ * added FirestoreDocumentStore crud functions ([7786a40](https://github.com/dereekb/dbx-components/commit/7786a40f6033c2a1d5161805cde283dca7323db5))
15
+ * added onCallCreateModel ([84f7e72](https://github.com/dereekb/dbx-components/commit/84f7e72af20c1d0071feec3e46bae406d7fd5a26))
16
+ * added useModel to AbstractFirebaseNestContext ([29c1940](https://github.com/dereekb/dbx-components/commit/29c19402bff78d743d28ef88093757844f8ee5f7))
17
+
18
+
19
+
20
+ # [6.0.0](https://github.com/dereekb/dbx-components/compare/v5.3.0-dev...v6.0.0) (2022-06-03)
21
+
22
+
23
+ ### Features
24
+
25
+ * added AbstractFirebaseNestContext ([2f8e1a2](https://github.com/dereekb/dbx-components/commit/2f8e1a2127ffcfb23a428d6b46192633d8bf725f))
26
+ * added ContextGrantedModelRolesReader ([6fba1cc](https://github.com/dereekb/dbx-components/commit/6fba1cc637beeff55523df599eb88391352f9f58))
27
+ * added FirebaseModelService ([3876575](https://github.com/dereekb/dbx-components/commit/387657559a86908eee57326b655c63a0a836c239))
28
+ * added FirebaseModelsPermissionService ([9d75de4](https://github.com/dereekb/dbx-components/commit/9d75de4052dcfb15ef680d30f476ef494d8328a9))
29
+ * added firebaseModelsService ([7432e55](https://github.com/dereekb/dbx-components/commit/7432e55111cec66a239856ecb2db6adfc9e9780d))
30
+ * added InModelContextFirebaseModelServiceFactory ([9bf4697](https://github.com/dereekb/dbx-components/commit/9bf469731699a16ad27c96e3b149f552a429b471))
31
+ * added loadDocumentForKey to LimitedFirestoreDocumentAccessor ([96958b8](https://github.com/dereekb/dbx-components/commit/96958b89df62dc38136ac2dfcd2ce7c139b6099e))
32
+ * added modelType to FirestoreDocument ([deecb5d](https://github.com/dereekb/dbx-components/commit/deecb5df415ed9d99412c336ba65f4da572bbe44))
33
+ * added OnCallDeleteModel ([358189d](https://github.com/dereekb/dbx-components/commit/358189d6db6ef7d8db93d6dd881d29cc724dd083))
34
+ * added OnCallUpdateModel ([3b60a06](https://github.com/dereekb/dbx-components/commit/3b60a06d48ec6a96940f44939e24e5c1f4879aa9))
35
+ * added orderByDocumentId, startAtValue, endAtValue constraints ([c846fee](https://github.com/dereekb/dbx-components/commit/c846feef6c26a3818bb006a807b6e931b7b14eaf))
36
+
37
+
38
+ ### BREAKING CHANGES
39
+
40
+ * model type is now required on FirestoreDocument models
41
+
42
+
43
+
5
44
  # [5.3.0](https://github.com/dereekb/dbx-components/compare/v5.2.1-dev...v5.3.0) (2022-05-30)
6
45
 
7
46
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dereekb/firebase",
3
- "version": "5.3.0",
3
+ "version": "7.0.1",
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": "5.3.0",
25
+ "@dereekb/util": "7.0.1",
26
26
  "make-error": "^1.3.0",
27
+ "ts-essentials": "^9.1.2",
27
28
  "extra-set": "^2.2.11",
28
- "@dereekb/rxjs": "5.3.0",
29
+ "@dereekb/rxjs": "7.0.1",
29
30
  "ms": "^3.0.0-canary.1",
30
- "@dereekb/date": "5.3.0",
31
+ "@dereekb/date": "7.0.1",
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": "5.3.0",
37
+ "@dereekb/model": "7.0.1",
37
38
  "tslib": "^2.0.0"
38
39
  }
39
40
  }
@@ -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
+ docAtPath: firestore_2.doc,
13
14
  collectionGroup: firestore_2.collectionGroup,
14
15
  collection: firestore_2.collection,
15
16
  subcollection: firestore_2.collection,
@@ -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,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
+ {"version":3,"file":"driver.accessor.js","sourceRoot":"","sources":["../../../../../../../packages/firebase/src/lib/client/firestore/driver.accessor.ts"],"names":[],"mappings":";;;;AAAA,mDAAqF;AACrF,kDAA+F;AAG/F,mEAAoE;AACpE,uEAA4E;AAC5E,+EAA2E;AAI3E,SAAgB,6BAA6B;IAC3C,OAAO;QACL,GAAG,EAAE,eAA4D;QACjE,SAAS,EAAE,eAAoE;QAC/E,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,SAA8B,EAAE,EAA8C,CAAC,CAAA,GAAA;QACxG,6BAA6B,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,IAAA,sBAAU,EAAC,SAA8B,CAAC;QAC9F,qBAAqB,EAAE,yDAA+B;QACtD,yBAAyB,EAAE,wDAAwE;QACnG,wBAAwB,EAAE,iDAAiF;KAC5G,CAAC;AACJ,CAAC;AAhBD,sEAgBC"}
@@ -16,18 +16,22 @@ exports.FIRESTORE_CLIENT_QUERY_CONSTRAINT_HANDLER_MAPPING = {
16
16
  [constraint_1.FIRESTORE_LIMIT_QUERY_CONSTRAINT_TYPE]: (builder, data) => addConstraintToBuilder(builder, (0, firestore_1.limit)(data.limit)),
17
17
  [constraint_1.FIRESTORE_LIMIT_TO_LAST_QUERY_CONSTRAINT_TYPE]: (builder, data) => addConstraintToBuilder(builder, (0, firestore_1.limitToLast)(data.limit)),
18
18
  [constraint_1.FIRESTORE_ORDER_BY_QUERY_CONSTRAINT_TYPE]: (builder, data) => addConstraintToBuilder(builder, (0, firestore_1.orderBy)(data.fieldPath, data.directionStr)),
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)),
19
20
  [constraint_1.FIRESTORE_WHERE_QUERY_CONSTRAINT_TYPE]: (builder, data) => addConstraintToBuilder(builder, (0, firestore_1.where)(data.fieldPath, data.opStr, data.value)),
20
21
  [constraint_1.FIRESTORE_OFFSET_QUERY_CONSTRAINT_TYPE]: undefined,
21
22
  [constraint_1.FIRESTORE_START_AT_QUERY_CONSTRAINT_TYPE]: (builder, data) => addConstraintToBuilder(builder, (0, firestore_1.startAt)(data.snapshot)),
23
+ [constraint_1.FIRESTORE_START_AT_VALUE_QUERY_CONSTRAINT_TYPE]: (builder, data) => addConstraintToBuilder(builder, (0, firestore_1.startAt)(...data.fieldValues)),
22
24
  [constraint_1.FIRESTORE_START_AFTER_QUERY_CONSTRAINT_TYPE]: (builder, data) => addConstraintToBuilder(builder, (0, firestore_1.startAfter)(data.snapshot)),
23
25
  [constraint_1.FIRESTORE_END_AT_QUERY_CONSTRAINT_TYPE]: (builder, data) => addConstraintToBuilder(builder, (0, firestore_1.endAt)(data.snapshot)),
26
+ [constraint_1.FIRESTORE_END_AT_VALUE_QUERY_CONSTRAINT_TYPE]: (builder, data) => addConstraintToBuilder(builder, (0, firestore_1.endAt)(...data.fieldValues)),
24
27
  [constraint_1.FIRESTORE_END_BEFORE_QUERY_CONSTRAINT_TYPE]: (builder, data) => addConstraintToBuilder(builder, (0, firestore_1.endBefore)(data.snapshot))
25
28
  };
26
29
  function firebaseFirestoreQueryConstraintFunctionsDriver() {
27
30
  return (0, query_handler_1.makeFirestoreQueryConstraintFunctionsDriver)({
28
31
  mapping: exports.FIRESTORE_CLIENT_QUERY_CONSTRAINT_HANDLER_MAPPING,
29
32
  init: (query) => ({ query, constraints: [] }),
30
- build: ({ query: initialQuery, constraints }) => (0, firestore_1.query)(initialQuery, ...constraints)
33
+ build: ({ query: initialQuery, constraints }) => (0, firestore_1.query)(initialQuery, ...constraints),
34
+ documentIdFieldPath: () => (0, firestore_1.documentId)()
31
35
  });
32
36
  }
33
37
  exports.firebaseFirestoreQueryConstraintFunctionsDriver = firebaseFirestoreQueryConstraintFunctionsDriver;
@@ -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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"}
@@ -0,0 +1,13 @@
1
+ import { FactoryWithInput, Maybe, PromiseOrValue } from '@dereekb/util';
2
+ import { HttpsCallable } from 'firebase/functions';
3
+ export interface MapHttpsCallable<I, O, A, B> {
4
+ mapInput?: FactoryWithInput<PromiseOrValue<A>, Maybe<I>>;
5
+ mapOutput?: FactoryWithInput<PromiseOrValue<O>, Maybe<B>>;
6
+ }
7
+ /**
8
+ * Maps input and output values for an
9
+ * @param callable
10
+ * @param wrap
11
+ * @returns
12
+ */
13
+ export declare function mapHttpsCallable<I, O, A, B = unknown>(callable: HttpsCallable<A, B>, wrap: MapHttpsCallable<I, O, A, B>): HttpsCallable<I, O>;
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.mapHttpsCallable = void 0;
4
+ const tslib_1 = require("tslib");
5
+ /**
6
+ * Maps input and output values for an
7
+ * @param callable
8
+ * @param wrap
9
+ * @returns
10
+ */
11
+ function mapHttpsCallable(callable, wrap) {
12
+ const { mapInput = (x) => x, mapOutput = (x) => x } = wrap;
13
+ return (inputData) => tslib_1.__awaiter(this, void 0, void 0, function* () {
14
+ const data = yield mapInput(inputData);
15
+ const result = yield callable(data);
16
+ const resultData = result.data;
17
+ const mappedResultData = yield mapOutput(resultData);
18
+ return Object.assign(Object.assign({}, result), { data: mappedResultData });
19
+ });
20
+ }
21
+ exports.mapHttpsCallable = mapHttpsCallable;
22
+ //# sourceMappingURL=function.callable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"function.callable.js","sourceRoot":"","sources":["../../../../../../../packages/firebase/src/lib/client/function/function.callable.ts"],"names":[],"mappings":";;;;AAQA;;;;;GAKG;AACH,SAAgB,gBAAgB,CAAuB,QAA6B,EAAE,IAAkC;IACtH,MAAM,EAAE,QAAQ,GAAG,CAAC,CAAW,EAAE,EAAE,CAAC,CAAiB,EAAE,SAAS,GAAG,CAAC,CAAW,EAAE,EAAE,CAAC,CAAiB,EAAE,GAAG,IAAI,CAAC;IAE/G,OAAO,CAAO,SAAoB,EAAmC,EAAE;QACrE,MAAM,IAAI,GAAM,MAAM,QAAQ,CAAC,SAAS,CAAC,CAAC;QAE1C,MAAM,MAAM,GAA2B,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC5D,MAAM,UAAU,GAAa,MAAM,CAAC,IAAI,CAAC;QACzC,MAAM,gBAAgB,GAAM,MAAM,SAAS,CAAC,UAAU,CAAC,CAAC;QAExD,uCACK,MAAM,KACT,IAAI,EAAE,gBAAgB,IACtB;IACJ,CAAC,CAAA,CAAC;AACJ,CAAC;AAfD,4CAeC"}
@@ -1,2 +1,4 @@
1
1
  export * from './function';
2
+ export * from './function.callable';
2
3
  export * from './function.factory';
4
+ export * from './model.function.factory';
@@ -2,5 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const tslib_1 = require("tslib");
4
4
  tslib_1.__exportStar(require("./function"), exports);
5
+ tslib_1.__exportStar(require("./function.callable"), exports);
5
6
  tslib_1.__exportStar(require("./function.factory"), exports);
7
+ tslib_1.__exportStar(require("./model.function.factory"), exports);
6
8
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../packages/firebase/src/lib/client/function/index.ts"],"names":[],"mappings":";;;AAAA,qDAA2B;AAC3B,6DAAmC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../packages/firebase/src/lib/client/function/index.ts"],"names":[],"mappings":";;;AAAA,qDAA2B;AAC3B,8DAAoC;AACpC,6DAAmC;AACnC,mEAAyC"}
@@ -0,0 +1,45 @@
1
+ import { MaybeNot } from '@dereekb/util';
2
+ import { Functions } from 'firebase/functions';
3
+ import { NonNever } from 'ts-essentials';
4
+ import { FirestoreModelIdentity, FirestoreModelNames, OnCallCreateModelResult } from '../../common';
5
+ import { FirebaseFunctionTypeMap, FirebaseFunctionMap, FirebaseFunction } from './function';
6
+ import { FirebaseFunctionTypeConfigMap } from './function.factory';
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>;
11
+ export declare type ModelFirebaseCrudFunctionTypeMap<T extends FirestoreModelIdentity = FirestoreModelIdentity> = {
12
+ [K in FirestoreModelNames<T>]: ModelFirebaseCrudFunctionTypeMapEntry;
13
+ };
14
+ export declare type ModelFirebaseCrudFunctionTypeMapEntry = MaybeNot | Partial<ModelFirebaseCrudFunctionCreateTypeConfig & ModelFirebaseCrudFunctionUpdateTypeConfig & ModelFirebaseCrudFunctionDeleteTypeConfig>;
15
+ export declare type ModelFirebaseCrudFunctionCreateTypeConfig<I = unknown> = {
16
+ create: I;
17
+ };
18
+ export declare type ModelFirebaseCrudFunctionUpdateTypeConfig<I = unknown> = {
19
+ update: I;
20
+ };
21
+ export declare type ModelFirebaseCrudFunctionDeleteTypeConfig<I = unknown> = {
22
+ delete: I;
23
+ };
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])[];
31
+ }>;
32
+ export declare type ModelFirebaseCrudFunctionMap<C extends ModelFirebaseCrudFunctionTypeMap> = ModelFirebaseCrudFunctionRawMap<C>;
33
+ export declare type ModelFirebaseCrudFunctionRawMap<C extends ModelFirebaseCrudFunctionTypeMap> = NonNever<{
34
+ [K in keyof C]: K extends string ? ModelFirebaseCrudFunctionMapEntry<K, C[K]> : never;
35
+ }>;
36
+ export declare type ModelFirebaseCrudFunctionName<T extends string, K extends string> = `${K}${Capitalize<T>}`;
37
+ export declare type ModelFirebaseCrudFunctionMapEntry<T extends string, E extends ModelFirebaseCrudFunctionTypeMapEntry> = E extends null ? never : {
38
+ [K in keyof E as K extends string ? ModelFirebaseCrudFunctionName<T, K> : never]: K extends 'create' ? ModelFirebaseCreateFunction<E[K]> : ModelFirebaseCrudFunction<E[K]>;
39
+ };
40
+ export declare type ModelFirebaseFunctionMap<M extends FirebaseFunctionTypeMap, C extends ModelFirebaseCrudFunctionTypeMap> = FirebaseFunctionMap<M> & ModelFirebaseCrudFunctionMap<C>;
41
+ /**
42
+ * Used for building a FirebaseFunctionMap<M> for a specific Functions instance.
43
+ */
44
+ export declare type ModelFirebaseFunctionMapFactory<M extends FirebaseFunctionTypeMap, U extends ModelFirebaseCrudFunctionTypeMap> = (functionsInstance: Functions) => ModelFirebaseFunctionMap<M, U>;
45
+ export declare function modelFirebaseFunctionMapFactory<M extends FirebaseFunctionTypeMap, U extends ModelFirebaseCrudFunctionTypeMap>(configMap: FirebaseFunctionTypeConfigMap<M>, crudConfigMap: ModelFirebaseCrudFunctionConfigMap<U, FirestoreModelIdentity>): ModelFirebaseFunctionMapFactory<M, U>;
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.modelFirebaseFunctionMapFactory = void 0;
4
+ const firebase_1 = require("@dereekb/firebase");
5
+ const util_1 = require("@dereekb/util");
6
+ const functions_1 = require("firebase/functions");
7
+ const common_1 = require("../../common");
8
+ const function_callable_1 = require("./function.callable");
9
+ function modelFirebaseFunctionMapFactory(configMap, crudConfigMap) {
10
+ const functionFactory = (0, firebase_1.firebaseFunctionMapFactory)(configMap);
11
+ return (functionsInstance) => {
12
+ const functionMap = functionFactory(functionsInstance);
13
+ const _createFn = (0, util_1.cachedGetter)(() => (0, functions_1.httpsCallable)(functionsInstance, common_1.CREATE_MODEL_APP_FUNCTION_KEY));
14
+ const _updateFn = (0, util_1.cachedGetter)(() => (0, functions_1.httpsCallable)(functionsInstance, common_1.UPDATE_MODEL_APP_FUNCTION_KEY));
15
+ const _deleteFn = (0, util_1.cachedGetter)(() => (0, functions_1.httpsCallable)(functionsInstance, common_1.DELETE_MODEL_APP_FUNCTION_KEY));
16
+ const result = (0, util_1.build)({
17
+ base: functionMap,
18
+ build: (x) => {
19
+ Object.entries(crudConfigMap).forEach(([modelType, config]) => {
20
+ const modelTypeSuffix = (0, util_1.capitalizeFirstLetter)(modelType);
21
+ const crudFunctions = new Set(config);
22
+ const modelTypeCruds = {};
23
+ if (crudFunctions.has('create')) {
24
+ modelTypeCruds[`create${modelTypeSuffix}`] = (0, function_callable_1.mapHttpsCallable)(_createFn(), { mapInput: (data) => ({ modelType, data }) });
25
+ }
26
+ if (crudFunctions.has('update')) {
27
+ modelTypeCruds[`update${modelTypeSuffix}`] = (0, function_callable_1.mapHttpsCallable)(_updateFn(), { mapInput: (data) => ({ modelType, data }) });
28
+ }
29
+ if (crudFunctions.has('delete')) {
30
+ modelTypeCruds[`delete${modelTypeSuffix}`] = (0, function_callable_1.mapHttpsCallable)(_deleteFn(), { mapInput: (data) => ({ modelType, data }) });
31
+ }
32
+ // tslint:disable-next-line
33
+ x[modelType] = modelTypeCruds;
34
+ });
35
+ }
36
+ });
37
+ return result;
38
+ };
39
+ }
40
+ exports.modelFirebaseFunctionMapFactory = modelFirebaseFunctionMapFactory;
41
+ //# sourceMappingURL=model.function.factory.js.map
@@ -0,0 +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,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"}
@@ -0,0 +1,33 @@
1
+ import { AuthClaims, AuthRoleSet, Maybe } from '@dereekb/util';
2
+ import { FirebaseAuthToken } from './auth';
3
+ /**
4
+ * Provides a context containing FirebaseAuthContextInfo
5
+ */
6
+ export interface FirebaseAuthContext {
7
+ readonly auth?: Maybe<FirebaseAuthContextInfo>;
8
+ }
9
+ /**
10
+ * Auth contextual information
11
+ */
12
+ export interface FirebaseAuthContextInfo {
13
+ /**
14
+ * Current UID
15
+ */
16
+ readonly uid: string;
17
+ /**
18
+ * Returns true if the user is considered a system admin.
19
+ */
20
+ isAdmin?(): boolean;
21
+ /**
22
+ * Retrieves the claims in the context.
23
+ */
24
+ loadClaims(): Promise<AuthClaims>;
25
+ /**
26
+ * The auth roles provided by the token in this context.
27
+ */
28
+ loadAuthRoles(): Promise<AuthRoleSet>;
29
+ /**
30
+ * The token in the context.
31
+ */
32
+ readonly token: FirebaseAuthToken;
33
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=auth.context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.context.js","sourceRoot":"","sources":["../../../../../../../packages/firebase/src/lib/common/auth/auth.context.ts"],"names":[],"mappings":""}
@@ -1,4 +1,13 @@
1
+ import { Maybe } from '@dereekb/util';
1
2
  /**
2
3
  * Firebase User Identifier (UID)
3
4
  */
4
5
  export declare type FirebaseAuthUserId = string;
6
+ /**
7
+ * Firebase Auth Token interface
8
+ */
9
+ export declare type FirebaseAuthToken = {
10
+ email?: Maybe<string>;
11
+ emailVerified?: Maybe<boolean>;
12
+ phoneNumber?: Maybe<string>;
13
+ };
@@ -1 +1,2 @@
1
1
  export * from './auth';
2
+ export * from './auth.context';
@@ -2,4 +2,5 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const tslib_1 = require("tslib");
4
4
  tslib_1.__exportStar(require("./auth"), exports);
5
+ tslib_1.__exportStar(require("./auth.context"), exports);
5
6
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../packages/firebase/src/lib/common/auth/index.ts"],"names":[],"mappings":";;;AAAA,iDAAuB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../packages/firebase/src/lib/common/auth/index.ts"],"names":[],"mappings":";;;AAAA,iDAAuB;AACvB,yDAA+B"}
@@ -1,28 +1,38 @@
1
+ import { FirestoreModelId, FirestoreModelIdRef, FirestoreModelKey, FirestoreModelKeyRef, FirestoreModelName } from './../collection/collection';
1
2
  import { Observable } from 'rxjs';
2
3
  import { FirestoreAccessorDriverRef } from '../driver/accessor';
3
4
  import { DocumentReference, CollectionReference, Transaction, WriteBatch, DocumentSnapshot, SnapshotOptions, WriteResult } from '../types';
4
5
  import { FirestoreDocumentDataAccessor } from './accessor';
5
- import { CollectionReferenceRef, DocumentReferenceRef } from '../reference';
6
+ import { CollectionReferenceRef, DocumentReferenceRef, FirestoreContextReference } from '../reference';
6
7
  import { FirestoreDocumentContext } from './context';
7
- import { Maybe } from '@dereekb/util';
8
- export interface FirestoreDocument<T, A extends FirestoreDocumentDataAccessor<T> = FirestoreDocumentDataAccessor<T>> extends DocumentReferenceRef<T>, CollectionReferenceRef<T> {
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 {
9
10
  readonly accessor: A;
10
11
  readonly id: string;
11
12
  }
12
13
  /**
13
14
  * Abstract FirestoreDocument implementation that extends a FirestoreDocumentDataAccessor.
14
15
  */
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> {
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> {
16
17
  readonly accessor: A;
17
18
  readonly documentAccessor: LimitedFirestoreDocumentAccessor<T, D>;
18
19
  readonly stream$: Observable<DocumentSnapshot<T>>;
19
20
  readonly data$: Observable<T>;
20
21
  constructor(accessor: A, documentAccessor: LimitedFirestoreDocumentAccessor<T, D>);
21
- get id(): string;
22
+ abstract get modelIdentity(): FirestoreModelIdentity<M>;
23
+ get modelType(): M;
24
+ get id(): FirestoreModelId;
25
+ get key(): FirestoreModelKey;
22
26
  get documentRef(): DocumentReference<T>;
23
27
  get collection(): CollectionReference<T>;
24
28
  snapshot(): Promise<DocumentSnapshot<T>>;
25
29
  snapshotData(options?: SnapshotOptions): Promise<T | undefined>;
30
+ /**
31
+ * Creates or updates the existing model using the accessor's set functionality.
32
+ *
33
+ * @param data
34
+ * @returns
35
+ */
26
36
  createOrUpdate(data: Partial<T>): Promise<WriteResult | void>;
27
37
  }
28
38
  export interface LimitedFirestoreDocumentAccessorRef<T, D extends FirestoreDocument<T> = FirestoreDocument<T>, A extends LimitedFirestoreDocumentAccessor<T, D> = LimitedFirestoreDocumentAccessor<T, D>> {
@@ -43,6 +53,18 @@ export interface LimitedFirestoreDocumentAccessor<T, D extends FirestoreDocument
43
53
  * @param document
44
54
  */
45
55
  loadDocumentFrom(document: FirestoreDocument<T>): D;
56
+ /**
57
+ * Loads a document from the datastore with the given key/full path.
58
+ *
59
+ * @param ref
60
+ */
61
+ loadDocumentForKey(fullPath: FirestoreModelKey): D;
62
+ /**
63
+ * Creates a document ref with a key/full path.
64
+ *
65
+ * @param ref
66
+ */
67
+ documentRefForKey(fullPath: FirestoreModelKey): DocumentReference<T>;
46
68
  }
47
69
  export interface FirestoreDocumentAccessor<T, D extends FirestoreDocument<T> = FirestoreDocument<T>> extends LimitedFirestoreDocumentAccessor<T, D>, CollectionReferenceRef<T>, FirestoreAccessorDriverRef {
48
70
  readonly databaseContext: FirestoreDocumentContext<T>;
@@ -57,6 +79,7 @@ export interface FirestoreDocumentAccessor<T, D extends FirestoreDocument<T> = F
57
79
  */
58
80
  loadDocumentForPath(path: string, ...pathSegments: string[]): D;
59
81
  /**
82
+ * Creates a document ref relative to the current context and given the input path.
60
83
  *
61
84
  * @param path
62
85
  * @param pathSegments
@@ -85,7 +108,7 @@ export interface LimitedFirestoreDocumentAccessorFactory<T, D extends FirestoreD
85
108
  /**
86
109
  * FirestoreDocumentAccessor configuration.
87
110
  */
88
- export interface LimitedFirestoreDocumentAccessorFactoryConfig<T, D extends FirestoreDocument<T> = FirestoreDocument<T>> extends FirestoreAccessorDriverRef {
111
+ export interface LimitedFirestoreDocumentAccessorFactoryConfig<T, D extends FirestoreDocument<T> = FirestoreDocument<T>> extends FirestoreContextReference, FirestoreAccessorDriverRef {
89
112
  readonly makeDocument: FirestoreDocumentFactoryFunction<T, D>;
90
113
  }
91
114
  export declare function limitedFirestoreDocumentAccessorFactory<T, D extends FirestoreDocument<T> = FirestoreDocument<T>>(config: LimitedFirestoreDocumentAccessorFactoryConfig<T, D>): LimitedFirestoreDocumentAccessorFactoryFunction<T, D>;
@@ -100,7 +123,7 @@ export declare type FirestoreDocumentAccessorFactory<T, D extends FirestoreDocum
100
123
  /**
101
124
  * FirestoreDocumentAccessor configuration.
102
125
  */
103
- export interface FirestoreDocumentAccessorFactoryConfig<T, D extends FirestoreDocument<T> = FirestoreDocument<T>> extends CollectionReferenceRef<T>, FirestoreAccessorDriverRef {
126
+ export interface FirestoreDocumentAccessorFactoryConfig<T, D extends FirestoreDocument<T> = FirestoreDocument<T>> extends CollectionReferenceRef<T>, LimitedFirestoreDocumentAccessorFactoryConfig<T, D> {
104
127
  readonly makeDocument: FirestoreDocumentFactoryFunction<T, D>;
105
128
  }
106
129
  export declare function firestoreDocumentAccessorFactory<T, D extends FirestoreDocument<T> = FirestoreDocument<T>>(config: FirestoreDocumentAccessorFactoryConfig<T, D>): FirestoreDocumentAccessorFactoryFunction<T, D>;
@@ -134,9 +157,8 @@ export interface FirestoreDocumentWithParent<P, T, A extends FirestoreDocumentDa
134
157
  readonly parent: DocumentReference<P>;
135
158
  }
136
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> {
137
- private _parent;
138
160
  get parent(): DocumentReference<P>;
139
- constructor(parent: Maybe<DocumentReference<P>>, accessor: A, documentAccessor: LimitedFirestoreDocumentAccessor<T, D>);
161
+ constructor(accessor: A, documentAccessor: LimitedFirestoreDocumentAccessor<T, D>);
140
162
  }
141
163
  export interface FirestoreSingleDocumentAccessor<T, D extends FirestoreDocument<T> = FirestoreDocument<T>> {
142
164
  loadDocument(): D;
@@ -1,6 +1,4 @@
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.
4
2
  Object.defineProperty(exports, "__esModule", { value: true });
5
3
  exports.firestoreSingleDocumentAccessor = exports.AbstractFirestoreDocumentWithParent = exports.firestoreDocumentAccessorContextExtension = exports.firestoreDocumentAccessorFactory = exports.limitedFirestoreDocumentAccessorFactory = exports.AbstractFirestoreDocument = void 0;
6
4
  const accessor_1 = require("./accessor");
@@ -15,14 +13,19 @@ class AbstractFirestoreDocument {
15
13
  this.stream$ = this.accessor.stream();
16
14
  this.data$ = (0, accessor_1.dataFromSnapshotStream)(this.stream$);
17
15
  }
16
+ get modelType() {
17
+ return this.modelIdentity.model;
18
+ }
18
19
  get id() {
19
20
  return this.documentRef.id;
20
21
  }
22
+ get key() {
23
+ return this.documentRef.path;
24
+ }
21
25
  get documentRef() {
22
26
  return this.accessor.documentRef;
23
27
  }
24
28
  get collection() {
25
- // TODO: Only works if the documentRef has access to the parent ref
26
29
  return this.accessor.documentRef.parent;
27
30
  }
28
31
  snapshot() {
@@ -31,13 +34,19 @@ class AbstractFirestoreDocument {
31
34
  snapshotData(options) {
32
35
  return this.snapshot().then((x) => x.data(options));
33
36
  }
37
+ /**
38
+ * Creates or updates the existing model using the accessor's set functionality.
39
+ *
40
+ * @param data
41
+ * @returns
42
+ */
34
43
  createOrUpdate(data) {
35
44
  return (0, accessor_1.createOrUpdateWithAccessorSet)(this.accessor)(data);
36
45
  }
37
46
  }
38
47
  exports.AbstractFirestoreDocument = AbstractFirestoreDocument;
39
48
  function limitedFirestoreDocumentAccessorFactory(config) {
40
- const { firestoreAccessorDriver } = config;
49
+ const { firestoreContext, firestoreAccessorDriver } = config;
41
50
  return (context) => {
42
51
  const databaseContext = context !== null && context !== void 0 ? context : config.firestoreAccessorDriver.defaultContextFactory();
43
52
  const dataAccessorFactory = databaseContext.accessorFactory;
@@ -45,11 +54,20 @@ function limitedFirestoreDocumentAccessorFactory(config) {
45
54
  const accessor = dataAccessorFactory.accessorFor(ref);
46
55
  return config.makeDocument(accessor, documentAccessor);
47
56
  }
57
+ function documentRefForKey(fullPath) {
58
+ return firestoreAccessorDriver.docAtPath(firestoreContext.firestore, fullPath);
59
+ }
60
+ function loadDocumentForKey(fullPath) {
61
+ const ref = documentRefForKey(fullPath);
62
+ return loadDocument(ref);
63
+ }
48
64
  const documentAccessor = {
49
65
  loadDocumentFrom(document) {
50
66
  return loadDocument(document.documentRef);
51
67
  },
52
68
  loadDocument,
69
+ documentRefForKey,
70
+ loadDocumentForKey,
53
71
  firestoreAccessorDriver,
54
72
  databaseContext
55
73
  };
@@ -98,12 +116,11 @@ function firestoreDocumentAccessorContextExtension({ documentAccessor, firestore
98
116
  }
99
117
  exports.firestoreDocumentAccessorContextExtension = firestoreDocumentAccessorContextExtension;
100
118
  class AbstractFirestoreDocumentWithParent extends AbstractFirestoreDocument {
101
- constructor(parent, accessor, documentAccessor) {
102
- super(accessor, documentAccessor);
103
- this._parent = parent !== null && parent !== void 0 ? parent : accessor.documentRef.parent.parent;
104
- }
105
119
  get parent() {
106
- return this._parent;
120
+ return this.accessor.documentRef.parent.parent;
121
+ }
122
+ constructor(accessor, documentAccessor) {
123
+ super(accessor, documentAccessor);
107
124
  }
108
125
  }
109
126
  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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"}