@dereekb/firebase 6.0.0 → 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 +11 -0
- package/package.json +5 -5
- package/src/lib/client/function/model.function.factory.d.ts +17 -8
- package/src/lib/client/function/model.function.factory.js +4 -0
- package/src/lib/client/function/model.function.factory.js.map +1 -1
- package/src/lib/common/firestore/accessor/document.d.ts +12 -6
- package/src/lib/common/firestore/accessor/document.js +9 -0
- package/src/lib/common/firestore/accessor/document.js.map +1 -1
- package/src/lib/common/firestore/collection/collection.d.ts +37 -1
- package/src/lib/common/firestore/collection/collection.js.map +1 -1
- package/src/lib/common/function/action.d.ts +4 -0
- package/src/lib/common/model/function.d.ts +21 -7
- package/src/lib/common/model/function.js +17 -2
- package/src/lib/common/model/function.js.map +1 -1
- package/src/lib/common/model/model/model.loader.d.ts +3 -4
- package/src/lib/common/model/model/model.loader.js.map +1 -1
- package/src/lib/common/model/model.service.d.ts +27 -6
- package/src/lib/common/model/model.service.js +36 -31
- package/src/lib/common/model/model.service.js.map +1 -1
- package/src/lib/common/model/permission/permission.service.role.d.ts +13 -8
- package/src/lib/common/model/permission/permission.service.role.js +18 -0
- package/src/lib/common/model/permission/permission.service.role.js.map +1 -1
- package/test/CHANGELOG.md +4 -0
- package/test/package.json +7 -7
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,17 @@
|
|
|
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
|
+
|
|
5
16
|
# [6.0.0](https://github.com/dereekb/dbx-components/compare/v5.3.0-dev...v6.0.0) (2022-06-03)
|
|
6
17
|
|
|
7
18
|
|
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
|
}
|
|
@@ -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
|
-
|
|
19
|
-
|
|
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,
|
|
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"}
|
|
@@ -1,13 +1,12 @@
|
|
|
1
|
-
import { FirestoreModelName } from './../collection/collection';
|
|
1
|
+
import { FirestoreModelId, FirestoreModelIdRef, FirestoreModelKey, FirestoreModelKeyRef, FirestoreModelName } from './../collection/collection';
|
|
2
2
|
import { Observable } from 'rxjs';
|
|
3
3
|
import { FirestoreAccessorDriverRef } from '../driver/accessor';
|
|
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
|
|
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 {
|
|
11
10
|
readonly accessor: A;
|
|
12
11
|
readonly id: string;
|
|
13
12
|
}
|
|
@@ -22,11 +21,18 @@ export declare abstract class AbstractFirestoreDocument<T, D extends AbstractFir
|
|
|
22
21
|
constructor(accessor: A, documentAccessor: LimitedFirestoreDocumentAccessor<T, D>);
|
|
23
22
|
abstract get modelIdentity(): FirestoreModelIdentity<M>;
|
|
24
23
|
get modelType(): M;
|
|
25
|
-
get id():
|
|
24
|
+
get id(): FirestoreModelId;
|
|
25
|
+
get key(): FirestoreModelKey;
|
|
26
26
|
get documentRef(): DocumentReference<T>;
|
|
27
27
|
get collection(): CollectionReference<T>;
|
|
28
28
|
snapshot(): Promise<DocumentSnapshot<T>>;
|
|
29
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
|
+
*/
|
|
30
36
|
createOrUpdate(data: Partial<T>): Promise<WriteResult | void>;
|
|
31
37
|
}
|
|
32
38
|
export interface LimitedFirestoreDocumentAccessorRef<T, D extends FirestoreDocument<T> = FirestoreDocument<T>, A extends LimitedFirestoreDocumentAccessor<T, D> = LimitedFirestoreDocumentAccessor<T, D>> {
|
|
@@ -52,13 +58,13 @@ export interface LimitedFirestoreDocumentAccessor<T, D extends FirestoreDocument
|
|
|
52
58
|
*
|
|
53
59
|
* @param ref
|
|
54
60
|
*/
|
|
55
|
-
loadDocumentForKey(fullPath:
|
|
61
|
+
loadDocumentForKey(fullPath: FirestoreModelKey): D;
|
|
56
62
|
/**
|
|
57
63
|
* Creates a document ref with a key/full path.
|
|
58
64
|
*
|
|
59
65
|
* @param ref
|
|
60
66
|
*/
|
|
61
|
-
documentRefForKey(fullPath:
|
|
67
|
+
documentRefForKey(fullPath: FirestoreModelKey): DocumentReference<T>;
|
|
62
68
|
}
|
|
63
69
|
export interface FirestoreDocumentAccessor<T, D extends FirestoreDocument<T> = FirestoreDocument<T>> extends LimitedFirestoreDocumentAccessor<T, D>, CollectionReferenceRef<T>, FirestoreAccessorDriverRef {
|
|
64
70
|
readonly databaseContext: FirestoreDocumentContext<T>;
|
|
@@ -19,6 +19,9 @@ class AbstractFirestoreDocument {
|
|
|
19
19
|
get id() {
|
|
20
20
|
return this.documentRef.id;
|
|
21
21
|
}
|
|
22
|
+
get key() {
|
|
23
|
+
return this.documentRef.path;
|
|
24
|
+
}
|
|
22
25
|
get documentRef() {
|
|
23
26
|
return this.accessor.documentRef;
|
|
24
27
|
}
|
|
@@ -31,6 +34,12 @@ 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
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"document.js","sourceRoot":"","sources":["../../../../../../../../packages/firebase/src/lib/common/firestore/accessor/document.ts"],"names":[],"mappings":";;;AAOA,yCAAkH;AAGlH,
|
|
1
|
+
{"version":3,"file":"document.js","sourceRoot":"","sources":["../../../../../../../../packages/firebase/src/lib/common/firestore/accessor/document.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@ import { FirestoreItemPageIterationBaseConfig, FirestoreItemPageIterationFactory
|
|
|
4
4
|
import { FirestoreQueryFactory } from '../query/query';
|
|
5
5
|
import { FirestoreDrivers } from '../driver/driver';
|
|
6
6
|
import { FirestoreCollectionQueryFactory } from './collection.query';
|
|
7
|
-
import { ModelTypeString } from '@dereekb/util';
|
|
7
|
+
import { ModelKey, ModelTypeString } from '@dereekb/util';
|
|
8
8
|
/**
|
|
9
9
|
* The camelCase model name.
|
|
10
10
|
*/
|
|
@@ -64,6 +64,42 @@ export interface FirestoreModelIdentityRef<M extends FirestoreModelName = Firest
|
|
|
64
64
|
*/
|
|
65
65
|
readonly modelIdentity: FirestoreModelIdentity<M>;
|
|
66
66
|
}
|
|
67
|
+
/**
|
|
68
|
+
* The model's id within a collection.
|
|
69
|
+
*
|
|
70
|
+
* Different from the FirestoreModelKey, which is the full path in the databse.
|
|
71
|
+
*
|
|
72
|
+
* Example:
|
|
73
|
+
*
|
|
74
|
+
* 12345
|
|
75
|
+
*/
|
|
76
|
+
export declare type FirestoreModelId = string;
|
|
77
|
+
/**
|
|
78
|
+
* Reference to a FirestoreModelId
|
|
79
|
+
*/
|
|
80
|
+
export interface FirestoreModelIdRef {
|
|
81
|
+
/**
|
|
82
|
+
* Returns the FirestoreModelId for this context.
|
|
83
|
+
*/
|
|
84
|
+
readonly id: FirestoreModelId;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* The full path for a model in the Firestore database.
|
|
88
|
+
*
|
|
89
|
+
* Example:
|
|
90
|
+
*
|
|
91
|
+
* collection/12345/subcollection/67890
|
|
92
|
+
*/
|
|
93
|
+
export declare type FirestoreModelKey = ModelKey;
|
|
94
|
+
/**
|
|
95
|
+
* Reference to a FirestoreModelKey
|
|
96
|
+
*/
|
|
97
|
+
export interface FirestoreModelKeyRef {
|
|
98
|
+
/**
|
|
99
|
+
* Returns the FirestoreModelKey for this context.
|
|
100
|
+
*/
|
|
101
|
+
readonly key: FirestoreModelKey;
|
|
102
|
+
}
|
|
67
103
|
/**
|
|
68
104
|
* Instance that provides several accessors for accessing documents of a collection.
|
|
69
105
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collection.js","sourceRoot":"","sources":["../../../../../../../../packages/firebase/src/lib/common/firestore/collection/collection.ts"],"names":[],"mappings":";;;AACA,mDAc8B;AAC9B,gDAA0L;AAC1L,0CAA8E;AAE9E,yDAAsG;AAiCtG;;;;;GAKG;AACH,SAAgB,sBAAsB,CAA+B,SAAY;IAC/E,OAAO;QACL,UAAU,EAAE,SAAS,CAAC,WAAW,EAAqC;QACtE,KAAK,EAAE,SAAS;KACjB,CAAC;AACJ,CAAC;AALD,wDAKC;
|
|
1
|
+
{"version":3,"file":"collection.js","sourceRoot":"","sources":["../../../../../../../../packages/firebase/src/lib/common/firestore/collection/collection.ts"],"names":[],"mappings":";;;AACA,mDAc8B;AAC9B,gDAA0L;AAC1L,0CAA8E;AAE9E,yDAAsG;AAiCtG;;;;;GAKG;AACH,SAAgB,sBAAsB,CAA+B,SAAY;IAC/E,OAAO;QACL,UAAU,EAAE,SAAS,CAAC,WAAW,EAAqC;QACtE,KAAK,EAAE,SAAS;KACjB,CAAC;AACJ,CAAC;AALD,wDAKC;AA6GD;;GAEG;AACH,SAAgB,uBAAuB,CAAoC,WAA4C;IACrH,MAAM,MAAM,GAAG,WAAyE,CAAC;IAEzF,MAAM,EAAE,UAAU,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,GAAG,MAAM,CAAC;IACxE,MAAwD,CAAC,SAAS,GAAG,UAAU,CAAC;IAEjF,MAAM,kBAAkB,GAAiD,IAAA,4CAAiC,EAAC,MAAM,CAAC,CAAC;IACnH,MAAM,gBAAgB,GAAmD,IAAA,2CAAgC,EAAC,MAAM,CAAC,CAAC;IAClH,MAAM,YAAY,GAA6B,IAAA,6BAAqB,EAAC,MAAM,CAAC,CAAC;IAE7E,MAAM,yBAAyB,GAAG,IAAA,oDAAyC,EAAC,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,CAAC,CAAC;IAC3H,MAAM,EAAE,aAAa,EAAE,GAAG,IAAA,kDAA+B,EAAC,YAAY,EAAE,yBAAyB,CAAC,CAAC;IACnG,MAAM,EAAE,KAAK,EAAE,GAAG,YAAY,CAAC;IAE/B,qCACE,MAAM;QACN,UAAU,EACV,SAAS,EAAE,UAAU,EACrB,gBAAgB,IACb,yBAAyB,KAC5B,kBAAkB;QAClB,KAAK;QACL,aAAa,IACb;AACJ,CAAC;AAxBD,0DAwBC"}
|
|
@@ -1,3 +1,7 @@
|
|
|
1
1
|
import { TransformAndValidateFunctionResult } from '@dereekb/model';
|
|
2
|
+
export declare type FirebaseFunctionCreateAction<P extends object, T> = TransformAndValidateFunctionResult<P, () => Promise<T>>;
|
|
3
|
+
export declare type AsyncFirebaseFunctionCreateAction<P extends object, T> = Promise<FirebaseFunctionCreateAction<P, T>>;
|
|
2
4
|
export declare type FirebaseFunctionUpdateAction<P extends object, T> = TransformAndValidateFunctionResult<P, (document: T) => Promise<T>>;
|
|
3
5
|
export declare type AsyncFirebaseFunctionUpdateAction<P extends object, T> = Promise<FirebaseFunctionUpdateAction<P, T>>;
|
|
6
|
+
export declare type FirebaseFunctionDeleteAction<P extends object, T> = TransformAndValidateFunctionResult<P, (document: T) => Promise<void>>;
|
|
7
|
+
export declare type AsyncFirebaseFunctionDeleteAction<P extends object, T> = Promise<FirebaseFunctionUpdateAction<P, T>>;
|
|
@@ -1,15 +1,29 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ArrayOrValue } from '@dereekb/util';
|
|
2
|
+
import { DocumentReferenceRef } from '../firestore/reference';
|
|
3
|
+
import { FirestoreModelKey, FirestoreModelNameRef } from '../firestore/collection/collection';
|
|
4
|
+
export interface OnCallTypedModelParams<T = unknown> extends FirestoreModelNameRef {
|
|
5
|
+
data: T;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Key used on the front-end and backend that refers to a specific function for creating models.
|
|
9
|
+
*/
|
|
10
|
+
export declare const CREATE_MODEL_APP_FUNCTION_KEY = "createModel";
|
|
11
|
+
export declare type OnCallCreateModelParams<T = unknown> = OnCallTypedModelParams<T>;
|
|
2
12
|
/**
|
|
3
13
|
* Key used on the front-end and backend that refers to a specific function for updating models.
|
|
4
14
|
*/
|
|
5
15
|
export declare const UPDATE_MODEL_APP_FUNCTION_KEY = "updateModel";
|
|
6
|
-
export
|
|
7
|
-
data: T;
|
|
8
|
-
}
|
|
16
|
+
export declare type OnCallUpdateModelParams<T = unknown> = OnCallTypedModelParams<T>;
|
|
9
17
|
/**
|
|
10
|
-
* Key used on the front-end and backend that refers to
|
|
18
|
+
* Key used on the front-end and backend that refers to a specific function for deleting models.
|
|
11
19
|
*/
|
|
12
20
|
export declare const DELETE_MODEL_APP_FUNCTION_KEY = "deleteModel";
|
|
13
|
-
export
|
|
14
|
-
|
|
21
|
+
export declare type OnCallDeleteModelParams<T = unknown> = OnCallTypedModelParams<T>;
|
|
22
|
+
export interface OnCallCreateModelResult {
|
|
23
|
+
/**
|
|
24
|
+
* Key(s)/Paths of the created object(s)
|
|
25
|
+
*/
|
|
26
|
+
modelKeys: ArrayOrValue<FirestoreModelKey>;
|
|
15
27
|
}
|
|
28
|
+
export declare function onCallCreateModelResultWithDocs(result: ArrayOrValue<DocumentReferenceRef<unknown>>): OnCallCreateModelResult;
|
|
29
|
+
export declare function onCallCreateModelResult(modelKeys: ArrayOrValue<FirestoreModelKey>): OnCallCreateModelResult;
|
|
@@ -1,12 +1,27 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.DELETE_MODEL_APP_FUNCTION_KEY = exports.UPDATE_MODEL_APP_FUNCTION_KEY = void 0;
|
|
3
|
+
exports.onCallCreateModelResult = exports.onCallCreateModelResultWithDocs = exports.DELETE_MODEL_APP_FUNCTION_KEY = exports.UPDATE_MODEL_APP_FUNCTION_KEY = exports.CREATE_MODEL_APP_FUNCTION_KEY = void 0;
|
|
4
|
+
const util_1 = require("@dereekb/util");
|
|
5
|
+
/**
|
|
6
|
+
* Key used on the front-end and backend that refers to a specific function for creating models.
|
|
7
|
+
*/
|
|
8
|
+
exports.CREATE_MODEL_APP_FUNCTION_KEY = 'createModel';
|
|
4
9
|
/**
|
|
5
10
|
* Key used on the front-end and backend that refers to a specific function for updating models.
|
|
6
11
|
*/
|
|
7
12
|
exports.UPDATE_MODEL_APP_FUNCTION_KEY = 'updateModel';
|
|
8
13
|
/**
|
|
9
|
-
* Key used on the front-end and backend that refers to
|
|
14
|
+
* Key used on the front-end and backend that refers to a specific function for deleting models.
|
|
10
15
|
*/
|
|
11
16
|
exports.DELETE_MODEL_APP_FUNCTION_KEY = 'deleteModel';
|
|
17
|
+
function onCallCreateModelResultWithDocs(result) {
|
|
18
|
+
return onCallCreateModelResult((0, util_1.asArray)(result).map((x) => x.documentRef.path));
|
|
19
|
+
}
|
|
20
|
+
exports.onCallCreateModelResultWithDocs = onCallCreateModelResultWithDocs;
|
|
21
|
+
function onCallCreateModelResult(modelKeys) {
|
|
22
|
+
return {
|
|
23
|
+
modelKeys: (0, util_1.asArray)(modelKeys)
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
exports.onCallCreateModelResult = onCallCreateModelResult;
|
|
12
27
|
//# sourceMappingURL=function.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"function.js","sourceRoot":"","sources":["../../../../../../../packages/firebase/src/lib/common/model/function.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"function.js","sourceRoot":"","sources":["../../../../../../../packages/firebase/src/lib/common/model/function.ts"],"names":[],"mappings":";;;AAAA,wCAAsD;AAQtD;;GAEG;AACU,QAAA,6BAA6B,GAAG,aAAa,CAAC;AAI3D;;GAEG;AACU,QAAA,6BAA6B,GAAG,aAAa,CAAC;AAG3D;;GAEG;AACU,QAAA,6BAA6B,GAAG,aAAa,CAAC;AAY3D,SAAgB,+BAA+B,CAAC,MAAmD;IACjG,OAAO,uBAAuB,CAAC,IAAA,cAAO,EAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;AACjF,CAAC;AAFD,0EAEC;AAED,SAAgB,uBAAuB,CAAC,SAA0C;IAChF,OAAO;QACL,SAAS,EAAE,IAAA,cAAO,EAAC,SAAS,CAAC;KAC9B,CAAC;AACJ,CAAC;AAJD,0DAIC"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import { FirebaseTransactionContext, FirestoreCollectionLike, FirestoreDocument } from '../../firestore';
|
|
1
|
+
import { FirebaseTransactionContext, FirestoreCollectionLike, FirestoreDocument, FirestoreModelKey } from '../../firestore';
|
|
2
2
|
import { InContextModelLoader, ModelLoader } from '@dereekb/model';
|
|
3
|
-
import { ModelKey } from '@dereekb/util';
|
|
4
3
|
export declare type FirebaseModelLoaderContext = FirebaseTransactionContext;
|
|
5
4
|
export declare type FirebaseModelGetFirestoreCollectionFunction<C extends FirebaseModelLoaderContext, T, D extends FirestoreDocument<T>> = (context: C) => FirestoreCollectionLike<T, D>;
|
|
6
5
|
export interface FirebaseModelCollectionLoader<C extends FirebaseModelLoaderContext, T, D extends FirestoreDocument<T>> {
|
|
@@ -15,11 +14,11 @@ export interface FirebaseModelLoader<C extends FirebaseModelLoaderContext, T, D
|
|
|
15
14
|
* @param key
|
|
16
15
|
* @param context
|
|
17
16
|
*/
|
|
18
|
-
loadModelForKey(key:
|
|
17
|
+
loadModelForKey(key: FirestoreModelKey, context: C): D;
|
|
19
18
|
}
|
|
20
19
|
export declare function firebaseModelLoader<C extends FirebaseModelLoaderContext, T, D extends FirestoreDocument<T>>(getFirestoreCollection: FirebaseModelGetFirestoreCollectionFunction<C, T, D>): FirebaseModelLoader<C, T, D>;
|
|
21
20
|
export interface InContextFirebaseModelLoader<T, D extends FirestoreDocument<T>> extends InContextModelLoader<D> {
|
|
22
|
-
loadModelForKey(key:
|
|
21
|
+
loadModelForKey(key: FirestoreModelKey): D;
|
|
23
22
|
}
|
|
24
23
|
/**
|
|
25
24
|
* Type used to convert a FirebaseModelLoader into an InContextFirebaseModelLoader
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model.loader.js","sourceRoot":"","sources":["../../../../../../../../packages/firebase/src/lib/common/model/model/model.loader.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"model.loader.js","sourceRoot":"","sources":["../../../../../../../../packages/firebase/src/lib/common/model/model/model.loader.ts"],"names":[],"mappings":";;;AAuBA,SAAgB,mBAAmB,CAA0E,sBAA4E;IACvL,OAAO;QACL,eAAe,CAAC,GAAsB,EAAE,OAAU;YAChD,MAAM,mBAAmB,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAC;YAC5D,IAAI,gBAAwD,CAAC;YAE7D,IAAI,OAAO,CAAC,WAAW,EAAE;gBACvB,gBAAgB,GAAG,mBAAmB,CAAC,8BAA8B,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;aAC5F;iBAAM;gBACL,gBAAgB,GAAG,mBAAmB,CAAC,gBAAgB,EAAE,CAAC;aAC3D;YAED,MAAM,QAAQ,GAAG,gBAAgB,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;YAC1D,OAAO,QAAQ,CAAC;QAClB,CAAC;KACF,CAAC;AACJ,CAAC;AAhBD,kDAgBC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { GrantedRole } from '@dereekb/model';
|
|
2
|
-
import { Getter } from '@dereekb/util';
|
|
2
|
+
import { Getter, SetIncludesMode, ArrayOrValue, UsePromiseUseFunction, UsePromiseFunction } from '@dereekb/util';
|
|
3
3
|
import { FirestoreDocument } from '../firestore/accessor/document';
|
|
4
|
-
import { FirestoreModelIdentity, FirestoreModelNames } from '../firestore/collection/collection';
|
|
4
|
+
import { FirestoreModelIdentity, FirestoreModelKey, FirestoreModelNames } from '../firestore/collection/collection';
|
|
5
5
|
import { FirebaseModelCollectionLoader, FirebaseModelLoader, InContextFirebaseModelLoader } from './model/model.loader';
|
|
6
6
|
import { InContextFirebaseModelPermissionService, FirebasePermissionContext, FirebaseModelPermissionService, FirebasePermissionServiceInstanceDelegate, InModelContextFirebaseModelPermissionService, FirebasePermissionErrorContext } from './permission';
|
|
7
7
|
import { ContextGrantedModelRolesReader } from './permission/permission.service.role';
|
|
@@ -14,13 +14,19 @@ export interface FirebaseModelServiceConfig<C extends FirebaseModelServiceContex
|
|
|
14
14
|
export declare function firebaseModelService<C extends FirebaseModelServiceContext, T, D extends FirestoreDocument<T> = FirestoreDocument<T>, R extends GrantedRole = GrantedRole>(config: FirebaseModelServiceConfig<C, T, D, R>): FirebaseModelService<C, T, D, R>;
|
|
15
15
|
export declare type FirebaseModelServiceFactory<C extends FirebaseModelServiceContext, T, D extends FirestoreDocument<T> = FirestoreDocument<T>, R extends GrantedRole = GrantedRole> = Getter<FirebaseModelService<C, T, D, R>>;
|
|
16
16
|
export declare function firebaseModelServiceFactory<C extends FirebaseModelServiceContext, T, D extends FirestoreDocument<T> = FirestoreDocument<T>, R extends GrantedRole = GrantedRole>(config: FirebaseModelServiceConfig<C, T, D, R>): FirebaseModelServiceFactory<C, T, D, R>;
|
|
17
|
-
export declare type LimitedInContextFirebaseModelService<C, T, D extends FirestoreDocument<T> = FirestoreDocument<T>, R extends GrantedRole = GrantedRole> = InContextFirebaseModelPermissionService<C, T, D, R> & InContextFirebaseModelLoader<T, D
|
|
18
|
-
|
|
19
|
-
export declare type InModelContextFirebaseModelService<C, T, D extends FirestoreDocument<T> = FirestoreDocument<T>, R extends GrantedRole = GrantedRole> = InModelContextFirebaseModelPermissionService<C, T, D, R> & {
|
|
20
|
-
roleReader: () => Promise<ContextGrantedModelRolesReader<C, T, D, R>>;
|
|
17
|
+
export declare type LimitedInContextFirebaseModelService<C, T, D extends FirestoreDocument<T> = FirestoreDocument<T>, R extends GrantedRole = GrantedRole> = InContextFirebaseModelPermissionService<C, T, D, R> & InContextFirebaseModelLoader<T, D> & {
|
|
18
|
+
forKey: (key: FirestoreModelKey) => InModelContextFirebaseModelService<C, T, D, R>;
|
|
21
19
|
};
|
|
22
20
|
export declare type InContextFirebaseModelService<C, T, D extends FirestoreDocument<T> = FirestoreDocument<T>, R extends GrantedRole = GrantedRole> = InModelContextFirebaseModelServiceFactory<C, T, D, R> & LimitedInContextFirebaseModelService<C, T, D, R>;
|
|
23
21
|
export declare type InContextFirebaseModelServiceFactory<C, T, D extends FirestoreDocument<T> = FirestoreDocument<T>, R extends GrantedRole = GrantedRole> = (context: C) => InContextFirebaseModelService<C, T, D, R>;
|
|
22
|
+
export declare type InModelContextFirebaseModelServiceFactory<C, T, D extends FirestoreDocument<T> = FirestoreDocument<T>, R extends GrantedRole = GrantedRole> = (modelOrKey: D | FirestoreModelKey) => InModelContextFirebaseModelService<C, T, D, R>;
|
|
23
|
+
export declare type InModelContextFirebaseModelService<C, T, D extends FirestoreDocument<T> = FirestoreDocument<T>, R extends GrantedRole = GrantedRole> = InModelContextFirebaseModelPermissionService<C, T, D, R> & InModelContextFirebaseModelServiceUseFunction<C, T, D, R> & {
|
|
24
|
+
roleReader: () => Promise<ContextGrantedModelRolesReader<C, T, D, R>>;
|
|
25
|
+
requireRole: (roles: ArrayOrValue<R>, setIncludes?: SetIncludesMode) => Promise<ContextGrantedModelRolesReader<C, T, D, R>>;
|
|
26
|
+
requireUse: InModelContextFirebaseModelServiceUseFunction<C, T, D, R>;
|
|
27
|
+
use: UsePromiseFunction<ContextGrantedModelRolesReader<C, T, D, R>>;
|
|
28
|
+
};
|
|
29
|
+
export declare type InModelContextFirebaseModelServiceUseFunction<C, T, D extends FirestoreDocument<T> = FirestoreDocument<T>, R extends GrantedRole = GrantedRole> = (roles: ArrayOrValue<R>, setIncludes?: SetIncludesMode) => UsePromiseFunction<ContextGrantedModelRolesReader<C, T, D, R>>;
|
|
24
30
|
export declare function inContextFirebaseModelServiceFactory<C, T, D extends FirestoreDocument<T> = FirestoreDocument<T>, R extends GrantedRole = GrantedRole>(factory: FirebaseModelServiceGetter<C, T, D, R>): InContextFirebaseModelServiceFactory<C, T, D, R>;
|
|
25
31
|
export declare type FirebaseModelsServiceFactory<C extends FirebaseModelServiceContext, K extends FirestoreModelIdentity = FirestoreModelIdentity> = {
|
|
26
32
|
[J in FirestoreModelNames<K>]: FirebaseModelServiceGetter<C, any>;
|
|
@@ -29,6 +35,7 @@ export declare type FirebaseModelsServiceFactory<C extends FirebaseModelServiceC
|
|
|
29
35
|
* Function that returns a configured service corresponding with the requested function, and for that context.
|
|
30
36
|
*/
|
|
31
37
|
export declare type FirebaseModelsService<X extends FirebaseModelsServiceFactory<C>, C extends FirebaseModelServiceContext> = <K extends keyof X>(type: K, context: C) => X[K] extends FirebaseModelServiceGetter<C, infer T, infer D, infer R> ? InContextFirebaseModelService<C, T, D, R> : never;
|
|
38
|
+
export declare type FirebaseModelsServiceTypes<S extends FirebaseModelsService<any, any>> = S extends FirebaseModelsService<infer X, any> ? keyof X : never;
|
|
32
39
|
/**
|
|
33
40
|
* Creates a new FirebaseModelsService.
|
|
34
41
|
*
|
|
@@ -54,3 +61,17 @@ export declare type InContextFirebaseModelsServiceFactory<Y> = Y extends Firebas
|
|
|
54
61
|
* @returns
|
|
55
62
|
*/
|
|
56
63
|
export declare function inContextFirebaseModelsServiceFactory<X extends FirebaseModelsServiceFactory<C, K>, C extends FirebaseModelServiceContext, K extends FirestoreModelIdentity = FirestoreModelIdentity>(service: FirebaseModelsService<X, C>): InContextFirebaseModelsServiceFactory<FirebaseModelsService<X, C>>;
|
|
64
|
+
export declare type FirebaseModelsServiceSelection<Y extends FirebaseModelsService<any, any>, T extends FirebaseModelsServiceTypes<Y>> = Omit<UseFirebaseModelsServiceSelection<Y, T>, 'roles' | 'rolesSetIncludes'>;
|
|
65
|
+
export declare type FirebaseModelsServiceSelectionResult<Y extends FirebaseModelsService<any, any>, T extends FirebaseModelsServiceTypes<Y>> = Y extends FirebaseModelsService<infer X, infer C> ? (T extends keyof X ? (X[T] extends FirebaseModelServiceGetter<C, infer T, infer D, infer R> ? InModelContextFirebaseModelService<C, T, D, R> : never) : never) : never;
|
|
66
|
+
export declare type FirebaseModelsServiceSelectionResultRolesReader<Y extends FirebaseModelsService<any, any>, T extends FirebaseModelsServiceTypes<Y>> = Y extends FirebaseModelsService<infer X, infer C> ? (T extends keyof X ? (X[T] extends FirebaseModelServiceGetter<C, infer T, infer D, infer R> ? ContextGrantedModelRolesReader<C, T, D, R> : never) : never) : never;
|
|
67
|
+
export declare type FirebaseModelsServiceSelectionResultDocumentType<Y extends FirebaseModelsService<any, any>, T extends FirebaseModelsServiceTypes<Y>> = Y extends FirebaseModelsService<infer X, infer C> ? (T extends keyof X ? (X[T] extends FirebaseModelServiceGetter<C, infer T, infer D> ? D : never) : never) : never;
|
|
68
|
+
export declare type UseFirebaseModelsServiceSelection<Y extends FirebaseModelsService<any, any>, T extends FirebaseModelsServiceTypes<Y>> = Y extends FirebaseModelsService<infer X, infer C> ? X extends FirebaseModelsServiceFactory<C, FirestoreModelIdentity<T>> ? {
|
|
69
|
+
context: C;
|
|
70
|
+
key: FirestoreModelKey;
|
|
71
|
+
roles?: X[T] extends FirebaseModelServiceGetter<C, any, any, infer R> ? ArrayOrValue<R> : never;
|
|
72
|
+
rolesSetIncludes?: SetIncludesMode;
|
|
73
|
+
} : never : never;
|
|
74
|
+
export declare type UseFirebaseModelsServiceSelectionResult<Y extends FirebaseModelsService<any, any>, T extends FirebaseModelsServiceTypes<Y>> = Y extends FirebaseModelsService<infer X, infer C> ? (T extends keyof X ? (X[T] extends FirebaseModelServiceGetter<C, infer T, infer D, infer R> ? UsePromiseFunction<ContextGrantedModelRolesReader<C, T, D, R>> : never) : never) : never;
|
|
75
|
+
export declare type UseFirebaseModelsServiceSelectionUseFunction<Y extends FirebaseModelsService<any, any>, T extends FirebaseModelsServiceTypes<Y>, O> = Y extends FirebaseModelsService<infer X, infer C> ? (T extends keyof X ? (X[T] extends FirebaseModelServiceGetter<C, infer T, infer D, infer R> ? UsePromiseUseFunction<ContextGrantedModelRolesReader<C, T, D, R>, O> : never) : never) : never;
|
|
76
|
+
export declare function selectFromFirebaseModelsService<Y extends FirebaseModelsService<any, any>, T extends FirebaseModelsServiceTypes<Y>>(service: Y, type: T, select: FirebaseModelsServiceSelection<Y, T>): FirebaseModelsServiceSelectionResult<Y, T>;
|
|
77
|
+
export declare function useFirebaseModelsService<Y extends FirebaseModelsService<any, any>, T extends FirebaseModelsServiceTypes<Y>>(service: Y, type: T, select: UseFirebaseModelsServiceSelection<Y, T>): UseFirebaseModelsServiceSelectionResult<Y, T>;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.inContextFirebaseModelsServiceFactory = exports.firebaseModelsService = exports.inContextFirebaseModelServiceFactory = exports.firebaseModelServiceFactory = exports.firebaseModelService = void 0;
|
|
3
|
+
exports.useFirebaseModelsService = exports.selectFromFirebaseModelsService = exports.inContextFirebaseModelsServiceFactory = exports.firebaseModelsService = exports.inContextFirebaseModelServiceFactory = exports.firebaseModelServiceFactory = exports.firebaseModelService = void 0;
|
|
4
4
|
const util_1 = require("@dereekb/util");
|
|
5
5
|
const model_loader_1 = require("./model/model.loader");
|
|
6
6
|
const permission_1 = require("./permission");
|
|
@@ -28,17 +28,28 @@ exports.firebaseModelServiceFactory = firebaseModelServiceFactory;
|
|
|
28
28
|
function inContextFirebaseModelServiceFactory(factory) {
|
|
29
29
|
return (context) => {
|
|
30
30
|
const firebaseModelService = factory();
|
|
31
|
-
const base = (
|
|
32
|
-
const
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
31
|
+
const base = (modelOrKey) => {
|
|
32
|
+
const model = typeof modelOrKey === 'string' ? firebaseModelService.loadModelForKey(modelOrKey, context) : modelOrKey;
|
|
33
|
+
const roleReader = () => (0, permission_service_role_1.contextGrantedModelRolesReader)(inModelContextService);
|
|
34
|
+
const requireRole = (roles, setIncludes = 'all') => roleReader().then((x) => x.assertHasRoles(setIncludes, roles));
|
|
35
|
+
const requireUse = (roles, setIncludes) => (0, util_1.usePromise)(requireRole(roles, setIncludes));
|
|
36
|
+
const inModelContextService = (0, util_1.build)({
|
|
37
|
+
base: requireUse,
|
|
38
|
+
build: (x) => {
|
|
39
|
+
x.model = model;
|
|
40
|
+
x.roleMap = () => service.roleMapForModel(model);
|
|
41
|
+
x.roleReader = roleReader;
|
|
42
|
+
x.requireRole = requireRole;
|
|
43
|
+
x.requireUse = requireUse;
|
|
44
|
+
x.use = (0, util_1.usePromise)(roleReader);
|
|
45
|
+
}
|
|
46
|
+
});
|
|
37
47
|
return inModelContextService;
|
|
38
48
|
};
|
|
39
49
|
const service = (0, util_1.build)({
|
|
40
50
|
base: base,
|
|
41
51
|
build: (x) => {
|
|
52
|
+
x.forKey = (key) => service(firebaseModelService.loadModelForKey(key, context));
|
|
42
53
|
x.roleMapForModel = (model) => firebaseModelService.roleMapForModelContext(model, context);
|
|
43
54
|
x.roleMapForKey = (key) => firebaseModelService.roleMapForKeyContext(key, context);
|
|
44
55
|
x.loadModelForKey = (key) => firebaseModelService.loadModelForKey(key, context);
|
|
@@ -64,13 +75,13 @@ exports.inContextFirebaseModelServiceFactory = inContextFirebaseModelServiceFact
|
|
|
64
75
|
* @returns
|
|
65
76
|
*/
|
|
66
77
|
function firebaseModelsService(services) {
|
|
67
|
-
const
|
|
78
|
+
const firebaseModelsServiceFunction = (type, context) => {
|
|
68
79
|
const firebaseModelService = services[type];
|
|
69
|
-
const contextWithService = Object.assign(Object.assign({}, context), { service:
|
|
80
|
+
const contextWithService = Object.assign(Object.assign({}, context), { service: firebaseModelsServiceFunction });
|
|
70
81
|
const service = inContextFirebaseModelServiceFactory(firebaseModelService)(contextWithService);
|
|
71
82
|
return service;
|
|
72
83
|
};
|
|
73
|
-
return
|
|
84
|
+
return firebaseModelsServiceFunction;
|
|
74
85
|
}
|
|
75
86
|
exports.firebaseModelsService = firebaseModelsService;
|
|
76
87
|
/**
|
|
@@ -86,26 +97,20 @@ function inContextFirebaseModelsServiceFactory(service) {
|
|
|
86
97
|
return inContextFirebaseModelsServiceFactory;
|
|
87
98
|
}
|
|
88
99
|
exports.inContextFirebaseModelsServiceFactory = inContextFirebaseModelsServiceFactory;
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
return inModelContextService;
|
|
105
|
-
};
|
|
106
|
-
}) as unknown as InModelContextFirebaseModelServiceFactory<Z, K>;
|
|
107
|
-
|
|
108
|
-
return inModelContextFirebaseModelsServiceFactory;
|
|
100
|
+
function selectFromFirebaseModelsService(service, type, select) {
|
|
101
|
+
return service(type, select.context).forKey(select.key);
|
|
102
|
+
}
|
|
103
|
+
exports.selectFromFirebaseModelsService = selectFromFirebaseModelsService;
|
|
104
|
+
function useFirebaseModelsService(service, type, select) {
|
|
105
|
+
const inContextModelService = selectFromFirebaseModelsService(service, type, select);
|
|
106
|
+
let result;
|
|
107
|
+
if (select.roles && select.roles.length) {
|
|
108
|
+
result = inContextModelService.requireUse(select.roles, select.rolesSetIncludes);
|
|
109
|
+
}
|
|
110
|
+
else {
|
|
111
|
+
result = inContextModelService.use;
|
|
112
|
+
}
|
|
113
|
+
return result;
|
|
109
114
|
}
|
|
110
|
-
|
|
115
|
+
exports.useFirebaseModelsService = useFirebaseModelsService;
|
|
111
116
|
//# sourceMappingURL=model.service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model.service.js","sourceRoot":"","sources":["../../../../../../../packages/firebase/src/lib/common/model/model.service.ts"],"names":[],"mappings":";;;AACA,
|
|
1
|
+
{"version":3,"file":"model.service.js","sourceRoot":"","sources":["../../../../../../../packages/firebase/src/lib/common/model/model.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,27 +3,32 @@ import { GrantedRole, GrantedRoleMap, GrantedRoleMapReader } from '@dereekb/mode
|
|
|
3
3
|
import { InModelContextFirebaseModelPermissionService } from './permission.service';
|
|
4
4
|
import { SetIncludesMode, ArrayOrValue } from '@dereekb/util';
|
|
5
5
|
import { FirebasePermissionErrorContext } from './permission.context';
|
|
6
|
-
import { FirebaseContextGrantedModelRoles } from './permission';
|
|
7
|
-
export interface ContextGrantedModelRolesReader<C extends FirebasePermissionErrorContext, T, D extends FirestoreDocument<T> = FirestoreDocument<T>, R extends GrantedRole = GrantedRole> extends GrantedRoleMapReader<R> {
|
|
6
|
+
import { FirebaseContextGrantedModelRoles, FirebasePermissionServiceModel } from './permission';
|
|
7
|
+
export interface ContextGrantedModelRolesReader<C extends FirebasePermissionErrorContext, T, D extends FirestoreDocument<T> = FirestoreDocument<T>, R extends GrantedRole = GrantedRole> extends GrantedRoleMapReader<R>, FirebasePermissionServiceModel<T, D> {
|
|
8
8
|
readonly roleMap: GrantedRoleMap<R>;
|
|
9
9
|
readonly contextGrantedModelRoles: FirebaseContextGrantedModelRoles<C, T, D, R>;
|
|
10
|
-
assertHasRole(role: R):
|
|
11
|
-
assertHasRoles(setIncludes: SetIncludesMode, roles: ArrayOrValue<R>):
|
|
12
|
-
assertContainsRoles(setIncludes: SetIncludesMode, roles: ArrayOrValue<R>):
|
|
10
|
+
assertHasRole(role: R): this;
|
|
11
|
+
assertHasRoles(setIncludes: SetIncludesMode, roles: ArrayOrValue<R>): this;
|
|
12
|
+
assertContainsRoles(setIncludes: SetIncludesMode, roles: ArrayOrValue<R>): this;
|
|
13
13
|
throwPermissionError(role?: R): never;
|
|
14
14
|
}
|
|
15
15
|
export declare class ContextGrantedModelRolesReaderInstance<C extends FirebasePermissionErrorContext, T, D extends FirestoreDocument<T> = FirestoreDocument<T>, R extends GrantedRole = GrantedRole> implements ContextGrantedModelRolesReader<C, T, D, R> {
|
|
16
16
|
readonly contextGrantedModelRoles: FirebaseContextGrantedModelRoles<C, T, D, R>;
|
|
17
17
|
private _roleReader;
|
|
18
18
|
constructor(contextGrantedModelRoles: FirebaseContextGrantedModelRoles<C, T, D, R>);
|
|
19
|
+
get permissionServiceModel(): FirebasePermissionServiceModel<T, D>;
|
|
20
|
+
get data(): import("@dereekb/util").Maybe<T>;
|
|
21
|
+
get document(): D;
|
|
22
|
+
get snapshot(): import("../..").DocumentSnapshot<T>;
|
|
23
|
+
get exists(): boolean;
|
|
19
24
|
get roleMap(): GrantedRoleMap<R>;
|
|
20
25
|
hasNoAccess(): boolean;
|
|
21
26
|
hasRole(role: R): boolean;
|
|
22
27
|
hasRoles(setIncludes: SetIncludesMode, roles: ArrayOrValue<R>): boolean;
|
|
23
28
|
containsRoles(setIncludes: SetIncludesMode, roles: ArrayOrValue<R>): boolean;
|
|
24
|
-
assertHasRole(role: R):
|
|
25
|
-
assertHasRoles(setIncludes: SetIncludesMode, roles: ArrayOrValue<R>):
|
|
26
|
-
assertContainsRoles(setIncludes: SetIncludesMode, roles: ArrayOrValue<R>):
|
|
29
|
+
assertHasRole(role: R): this;
|
|
30
|
+
assertHasRoles(setIncludes: SetIncludesMode, roles: ArrayOrValue<R>): this;
|
|
31
|
+
assertContainsRoles(setIncludes: SetIncludesMode, roles: ArrayOrValue<R>): this;
|
|
27
32
|
throwPermissionError(role?: ArrayOrValue<R>): never;
|
|
28
33
|
}
|
|
29
34
|
/**
|
|
@@ -7,6 +7,21 @@ class ContextGrantedModelRolesReaderInstance {
|
|
|
7
7
|
this.contextGrantedModelRoles = contextGrantedModelRoles;
|
|
8
8
|
this._roleReader = (0, model_1.grantedRoleMapReader)(contextGrantedModelRoles.roleMap);
|
|
9
9
|
}
|
|
10
|
+
get permissionServiceModel() {
|
|
11
|
+
return this.contextGrantedModelRoles.data;
|
|
12
|
+
}
|
|
13
|
+
get data() {
|
|
14
|
+
return this.permissionServiceModel.data;
|
|
15
|
+
}
|
|
16
|
+
get document() {
|
|
17
|
+
return this.permissionServiceModel.document;
|
|
18
|
+
}
|
|
19
|
+
get snapshot() {
|
|
20
|
+
return this.permissionServiceModel.snapshot;
|
|
21
|
+
}
|
|
22
|
+
get exists() {
|
|
23
|
+
return this.permissionServiceModel.exists;
|
|
24
|
+
}
|
|
10
25
|
get roleMap() {
|
|
11
26
|
return this.contextGrantedModelRoles.roleMap;
|
|
12
27
|
}
|
|
@@ -26,16 +41,19 @@ class ContextGrantedModelRolesReaderInstance {
|
|
|
26
41
|
if (!this.hasRole(role)) {
|
|
27
42
|
this.throwPermissionError(role);
|
|
28
43
|
}
|
|
44
|
+
return this;
|
|
29
45
|
}
|
|
30
46
|
assertHasRoles(setIncludes, roles) {
|
|
31
47
|
if (!this.hasRoles(setIncludes, roles)) {
|
|
32
48
|
this.throwPermissionError(roles);
|
|
33
49
|
}
|
|
50
|
+
return this;
|
|
34
51
|
}
|
|
35
52
|
assertContainsRoles(setIncludes, roles) {
|
|
36
53
|
if (!this.containsRoles(setIncludes, roles)) {
|
|
37
54
|
this.throwPermissionError(roles);
|
|
38
55
|
}
|
|
56
|
+
return this;
|
|
39
57
|
}
|
|
40
58
|
throwPermissionError(role) {
|
|
41
59
|
var _a, _b, _c;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"permission.service.role.js","sourceRoot":"","sources":["../../../../../../../../packages/firebase/src/lib/common/model/permission/permission.service.role.ts"],"names":[],"mappings":";;;AACA,0CAAyG;AAezG,MAAa,sCAAsC;IAGjD,YAAqB,wBAAsE;QAAtE,6BAAwB,GAAxB,wBAAwB,CAA8C;QACzF,IAAI,CAAC,WAAW,GAAG,IAAA,4BAAoB,EAAC,wBAAwB,CAAC,OAAO,CAAC,CAAC;IAC5E,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,wBAAwB,CAAC,OAAO,CAAC;IAC/C,CAAC;IAED,WAAW;QACT,OAAO,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC;IACxC,CAAC;IAED,OAAO,CAAC,IAAO;QACb,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC;IAED,QAAQ,CAAC,WAA4B,EAAE,KAAsB;QAC3D,OAAO,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;IACvD,CAAC;IAED,aAAa,CAAC,WAA4B,EAAE,KAAsB;QAChE,OAAO,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;IAC5D,CAAC;IAED,aAAa,CAAC,IAAO;QACnB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACvB,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;SACjC;
|
|
1
|
+
{"version":3,"file":"permission.service.role.js","sourceRoot":"","sources":["../../../../../../../../packages/firebase/src/lib/common/model/permission/permission.service.role.ts"],"names":[],"mappings":"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"}
|
package/test/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,10 @@
|
|
|
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
|
+
|
|
5
9
|
# [6.0.0](https://github.com/dereekb/dbx-components/compare/v5.3.0-dev...v6.0.0) (2022-06-03)
|
|
6
10
|
|
|
7
11
|
|
package/test/package.json
CHANGED
|
@@ -1,27 +1,27 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dereekb/firebase/test",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "7.0.0",
|
|
4
4
|
"main": "./src/index.js",
|
|
5
5
|
"typings": "./src/index.d.ts",
|
|
6
6
|
"dependencies": {},
|
|
7
7
|
"peerDependencies": {
|
|
8
|
-
"@dereekb/util/test": "
|
|
9
|
-
"@dereekb/util": "
|
|
8
|
+
"@dereekb/util/test": "7.0.0",
|
|
9
|
+
"@dereekb/util": "7.0.0",
|
|
10
10
|
"make-error": "^1.3.0",
|
|
11
11
|
"extra-set": "^2.2.11",
|
|
12
|
-
"@dereekb/firebase": "
|
|
12
|
+
"@dereekb/firebase": "7.0.0",
|
|
13
13
|
"rxjs": "^7.0.0",
|
|
14
14
|
"rxfire": "^6.0.3",
|
|
15
15
|
"firebase": "^9.8.0",
|
|
16
|
-
"@dereekb/rxjs": "
|
|
16
|
+
"@dereekb/rxjs": "7.0.0",
|
|
17
17
|
"ms": "^3.0.0-canary.1",
|
|
18
|
-
"@dereekb/date": "
|
|
18
|
+
"@dereekb/date": "7.0.0",
|
|
19
19
|
"class-transformer": "^0.5.1",
|
|
20
20
|
"date-fns": "^2.28.0",
|
|
21
21
|
"class-validator": "^0.13.2",
|
|
22
22
|
"date-fns-tz": "^1.3.0",
|
|
23
23
|
"rrule": "git+https://git@github.com/dereekb/rrule.git#17adf5708d6567b4d01a3a8afd106261421ea492",
|
|
24
|
-
"@dereekb/model": "
|
|
24
|
+
"@dereekb/model": "7.0.0",
|
|
25
25
|
"tslib": "^2.0.0"
|
|
26
26
|
}
|
|
27
27
|
}
|