@dereekb/firebase 5.2.1 → 7.0.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.
- package/CHANGELOG.md +39 -0
- package/package.json +5 -5
- package/src/lib/client/firestore/driver.accessor.js +1 -0
- package/src/lib/client/firestore/driver.accessor.js.map +1 -1
- package/src/lib/client/firestore/driver.query.js +5 -1
- package/src/lib/client/firestore/driver.query.js.map +1 -1
- package/src/lib/client/function/function.callable.d.ts +13 -0
- package/src/lib/client/function/function.callable.js +22 -0
- package/src/lib/client/function/function.callable.js.map +1 -0
- package/src/lib/client/function/index.d.ts +2 -0
- package/src/lib/client/function/index.js +2 -0
- package/src/lib/client/function/index.js.map +1 -1
- package/src/lib/client/function/model.function.factory.d.ts +45 -0
- package/src/lib/client/function/model.function.factory.js +41 -0
- package/src/lib/client/function/model.function.factory.js.map +1 -0
- package/src/lib/common/auth/auth.context.d.ts +33 -0
- package/src/lib/common/auth/auth.context.js +3 -0
- package/src/lib/common/auth/auth.context.js.map +1 -0
- package/src/lib/common/auth/auth.d.ts +9 -0
- package/src/lib/common/auth/index.d.ts +1 -0
- package/src/lib/common/auth/index.js +1 -0
- package/src/lib/common/auth/index.js.map +1 -1
- package/src/lib/common/firestore/accessor/document.d.ts +31 -9
- package/src/lib/common/firestore/accessor/document.js +26 -9
- package/src/lib/common/firestore/accessor/document.js.map +1 -1
- package/src/lib/common/firestore/collection/collection.d.ts +96 -0
- package/src/lib/common/firestore/collection/collection.js +14 -1
- package/src/lib/common/firestore/collection/collection.js.map +1 -1
- package/src/lib/common/firestore/driver/accessor.d.ts +2 -0
- package/src/lib/common/firestore/driver/query.d.ts +4 -2
- package/src/lib/common/firestore/driver/query.handler.d.ts +1 -1
- package/src/lib/common/firestore/driver/query.handler.js +3 -2
- package/src/lib/common/firestore/driver/query.handler.js.map +1 -1
- package/src/lib/common/firestore/query/constraint.d.ts +21 -3
- package/src/lib/common/firestore/query/constraint.js +20 -2
- package/src/lib/common/firestore/query/constraint.js.map +1 -1
- package/src/lib/common/firestore/query/constraint.template.d.ts +16 -0
- package/src/lib/common/firestore/query/constraint.template.js +27 -0
- package/src/lib/common/firestore/query/constraint.template.js.map +1 -0
- package/src/lib/common/firestore/query/index.d.ts +1 -0
- package/src/lib/common/firestore/query/index.js +1 -0
- package/src/lib/common/firestore/query/index.js.map +1 -1
- package/src/lib/common/firestore/reference.d.ts +7 -1
- package/src/lib/common/firestore/types.d.ts +8 -5
- package/src/lib/common/firestore/types.js.map +1 -1
- package/src/lib/common/function/action.d.ts +4 -0
- package/src/lib/common/index.d.ts +1 -0
- package/src/lib/common/index.js +1 -0
- package/src/lib/common/index.js.map +1 -1
- package/src/lib/common/model/context.d.ts +16 -0
- package/src/lib/common/model/context.js +3 -0
- package/src/lib/common/model/context.js.map +1 -0
- package/src/lib/common/model/function.d.ts +29 -0
- package/src/lib/common/model/function.js +27 -0
- package/src/lib/common/model/function.js.map +1 -0
- package/src/lib/common/model/index.d.ts +5 -0
- package/src/lib/common/model/index.js +9 -0
- package/src/lib/common/model/index.js.map +1 -0
- package/src/lib/common/model/model/index.d.ts +1 -0
- package/src/lib/common/model/model/index.js +5 -0
- package/src/lib/common/model/model/index.js.map +1 -0
- package/src/lib/common/model/model/model.loader.d.ts +29 -0
- package/src/lib/common/model/model/model.loader.js +21 -0
- package/src/lib/common/model/model/model.loader.js.map +1 -0
- package/src/lib/common/model/model.service.d.ts +77 -0
- package/src/lib/common/model/model.service.js +116 -0
- package/src/lib/common/model/model.service.js.map +1 -0
- package/src/lib/common/model/permission/index.d.ts +4 -0
- package/src/lib/common/model/permission/index.js +8 -0
- package/src/lib/common/model/permission/index.js.map +1 -0
- package/src/lib/common/model/permission/permission.context.d.ts +9 -0
- package/src/lib/common/model/permission/permission.context.js +3 -0
- package/src/lib/common/model/permission/permission.context.js.map +1 -0
- package/src/lib/common/model/permission/permission.d.ts +11 -0
- package/src/lib/common/model/permission/permission.js +3 -0
- package/src/lib/common/model/permission/permission.js.map +1 -0
- package/src/lib/common/model/permission/permission.service.d.ts +24 -0
- package/src/lib/common/model/permission/permission.service.js +48 -0
- package/src/lib/common/model/permission/permission.service.js.map +1 -0
- package/src/lib/common/model/permission/permission.service.role.d.ts +45 -0
- package/src/lib/common/model/permission/permission.service.role.js +88 -0
- package/src/lib/common/model/permission/permission.service.role.js.map +1 -0
- package/test/CHANGELOG.md +27 -0
- package/test/package.json +7 -7
- package/test/src/lib/common/firestore.d.ts +3 -3
- package/test/src/lib/common/firestore.js +2 -2
- package/test/src/lib/common/firestore.mock.item.d.ts +43 -16
- package/test/src/lib/common/firestore.mock.item.fixture.d.ts +3 -1
- package/test/src/lib/common/firestore.mock.item.fixture.js +12 -6
- package/test/src/lib/common/firestore.mock.item.fixture.js.map +1 -1
- package/test/src/lib/common/firestore.mock.item.js +85 -27
- package/test/src/lib/common/firestore.mock.item.js.map +1 -1
- package/test/src/lib/common/firestore.mock.item.query.d.ts +20 -1
- package/test/src/lib/common/firestore.mock.item.query.js +22 -1
- package/test/src/lib/common/firestore.mock.item.query.js.map +1 -1
- package/test/src/lib/common/firestore.mock.item.service.d.ts +40 -0
- package/test/src/lib/common/firestore.mock.item.service.js +62 -0
- package/test/src/lib/common/firestore.mock.item.service.js.map +1 -0
- package/test/src/lib/common/index.d.ts +1 -0
- package/test/src/lib/common/index.js +1 -0
- package/test/src/lib/common/index.js.map +1 -1
- package/test/src/lib/common/test.driver.accessor.js +77 -24
- package/test/src/lib/common/test.driver.accessor.js.map +1 -1
- package/test/src/lib/common/test.driver.query.js +138 -75
- package/test/src/lib/common/test.driver.query.js.map +1 -1
- package/test/src/lib/common/test.iterator.js +1 -0
- package/test/src/lib/common/test.iterator.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.0](https://github.com/dereekb/dbx-components/compare/v6.0.0-dev...v7.0.0) (2022-06-05)
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
### Features
|
|
9
|
+
|
|
10
|
+
* added FirestoreDocumentStore crud functions ([7786a40](https://github.com/dereekb/dbx-components/commit/7786a40f6033c2a1d5161805cde283dca7323db5))
|
|
11
|
+
* added onCallCreateModel ([84f7e72](https://github.com/dereekb/dbx-components/commit/84f7e72af20c1d0071feec3e46bae406d7fd5a26))
|
|
12
|
+
* added useModel to AbstractFirebaseNestContext ([29c1940](https://github.com/dereekb/dbx-components/commit/29c19402bff78d743d28ef88093757844f8ee5f7))
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
# [6.0.0](https://github.com/dereekb/dbx-components/compare/v5.3.0-dev...v6.0.0) (2022-06-03)
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
### Features
|
|
20
|
+
|
|
21
|
+
* added AbstractFirebaseNestContext ([2f8e1a2](https://github.com/dereekb/dbx-components/commit/2f8e1a2127ffcfb23a428d6b46192633d8bf725f))
|
|
22
|
+
* added ContextGrantedModelRolesReader ([6fba1cc](https://github.com/dereekb/dbx-components/commit/6fba1cc637beeff55523df599eb88391352f9f58))
|
|
23
|
+
* added FirebaseModelService ([3876575](https://github.com/dereekb/dbx-components/commit/387657559a86908eee57326b655c63a0a836c239))
|
|
24
|
+
* added FirebaseModelsPermissionService ([9d75de4](https://github.com/dereekb/dbx-components/commit/9d75de4052dcfb15ef680d30f476ef494d8328a9))
|
|
25
|
+
* added firebaseModelsService ([7432e55](https://github.com/dereekb/dbx-components/commit/7432e55111cec66a239856ecb2db6adfc9e9780d))
|
|
26
|
+
* added InModelContextFirebaseModelServiceFactory ([9bf4697](https://github.com/dereekb/dbx-components/commit/9bf469731699a16ad27c96e3b149f552a429b471))
|
|
27
|
+
* added loadDocumentForKey to LimitedFirestoreDocumentAccessor ([96958b8](https://github.com/dereekb/dbx-components/commit/96958b89df62dc38136ac2dfcd2ce7c139b6099e))
|
|
28
|
+
* added modelType to FirestoreDocument ([deecb5d](https://github.com/dereekb/dbx-components/commit/deecb5df415ed9d99412c336ba65f4da572bbe44))
|
|
29
|
+
* added OnCallDeleteModel ([358189d](https://github.com/dereekb/dbx-components/commit/358189d6db6ef7d8db93d6dd881d29cc724dd083))
|
|
30
|
+
* added OnCallUpdateModel ([3b60a06](https://github.com/dereekb/dbx-components/commit/3b60a06d48ec6a96940f44939e24e5c1f4879aa9))
|
|
31
|
+
* added orderByDocumentId, startAtValue, endAtValue constraints ([c846fee](https://github.com/dereekb/dbx-components/commit/c846feef6c26a3818bb006a807b6e931b7b14eaf))
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
### BREAKING CHANGES
|
|
35
|
+
|
|
36
|
+
* model type is now required on FirestoreDocument models
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
# [5.3.0](https://github.com/dereekb/dbx-components/compare/v5.2.1-dev...v5.3.0) (2022-05-30)
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
|
|
5
44
|
## [5.2.1](https://github.com/dereekb/dbx-components/compare/v5.2.0-dev...v5.2.1) (2022-05-29)
|
|
6
45
|
|
|
7
46
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dereekb/firebase",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "7.0.0",
|
|
4
4
|
"devDependencies": {
|
|
5
5
|
"@firebase/rules-unit-testing": "^2.0.0"
|
|
6
6
|
},
|
|
@@ -22,18 +22,18 @@
|
|
|
22
22
|
"rxjs": "^7.0.0",
|
|
23
23
|
"rxfire": "^6.0.3",
|
|
24
24
|
"firebase": "^9.8.0",
|
|
25
|
-
"@dereekb/util": "
|
|
25
|
+
"@dereekb/util": "7.0.0",
|
|
26
26
|
"make-error": "^1.3.0",
|
|
27
27
|
"extra-set": "^2.2.11",
|
|
28
|
-
"@dereekb/rxjs": "
|
|
28
|
+
"@dereekb/rxjs": "7.0.0",
|
|
29
29
|
"ms": "^3.0.0-canary.1",
|
|
30
|
-
"@dereekb/date": "
|
|
30
|
+
"@dereekb/date": "7.0.0",
|
|
31
31
|
"class-transformer": "^0.5.1",
|
|
32
32
|
"date-fns": "^2.28.0",
|
|
33
33
|
"class-validator": "^0.13.2",
|
|
34
34
|
"date-fns-tz": "^1.3.0",
|
|
35
35
|
"rrule": "git+https://git@github.com/dereekb/rrule.git#17adf5708d6567b4d01a3a8afd106261421ea492",
|
|
36
|
-
"@dereekb/model": "
|
|
36
|
+
"@dereekb/model": "7.0.0",
|
|
37
37
|
"tslib": "^2.0.0"
|
|
38
38
|
}
|
|
39
39
|
}
|
|
@@ -10,6 +10,7 @@ const driver_accessor_transaction_1 = require("./driver.accessor.transaction");
|
|
|
10
10
|
function firestoreClientAccessorDriver() {
|
|
11
11
|
return {
|
|
12
12
|
doc: firestore_2.doc,
|
|
13
|
+
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,
|
|
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":";;;AAEA,
|
|
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"}
|
|
@@ -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 @@
|
|
|
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 @@
|
|
|
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 {
|
|
8
|
-
export interface FirestoreDocument<T, A extends FirestoreDocumentDataAccessor<T> = FirestoreDocumentDataAccessor<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
|
|
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
|
|
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>,
|
|
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(
|
|
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.
|
|
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":"
|
|
1
|
+
{"version":3,"file":"document.js","sourceRoot":"","sources":["../../../../../../../../packages/firebase/src/lib/common/firestore/accessor/document.ts"],"names":[],"mappings":"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"}
|