@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
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../../packages/firebase/src/lib/common/model/model/index.ts"],"names":[],"mappings":";;;AAAA,yDAA+B"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { FirebaseTransactionContext, FirestoreCollectionLike, FirestoreDocument, FirestoreModelKey } from '../../firestore';
|
|
2
|
+
import { InContextModelLoader, ModelLoader } from '@dereekb/model';
|
|
3
|
+
export declare type FirebaseModelLoaderContext = FirebaseTransactionContext;
|
|
4
|
+
export declare type FirebaseModelGetFirestoreCollectionFunction<C extends FirebaseModelLoaderContext, T, D extends FirestoreDocument<T>> = (context: C) => FirestoreCollectionLike<T, D>;
|
|
5
|
+
export interface FirebaseModelCollectionLoader<C extends FirebaseModelLoaderContext, T, D extends FirestoreDocument<T>> {
|
|
6
|
+
getFirestoreCollection: FirebaseModelGetFirestoreCollectionFunction<C, T, D>;
|
|
7
|
+
}
|
|
8
|
+
export interface FirebaseModelLoader<C extends FirebaseModelLoaderContext, T, D extends FirestoreDocument<T>> extends ModelLoader<C, D> {
|
|
9
|
+
/**
|
|
10
|
+
* Loads a FirestoreDocument for the input key.
|
|
11
|
+
*
|
|
12
|
+
* Does not check existence of data on the model.
|
|
13
|
+
*
|
|
14
|
+
* @param key
|
|
15
|
+
* @param context
|
|
16
|
+
*/
|
|
17
|
+
loadModelForKey(key: FirestoreModelKey, context: C): D;
|
|
18
|
+
}
|
|
19
|
+
export declare function firebaseModelLoader<C extends FirebaseModelLoaderContext, T, D extends FirestoreDocument<T>>(getFirestoreCollection: FirebaseModelGetFirestoreCollectionFunction<C, T, D>): FirebaseModelLoader<C, T, D>;
|
|
20
|
+
export interface InContextFirebaseModelLoader<T, D extends FirestoreDocument<T>> extends InContextModelLoader<D> {
|
|
21
|
+
loadModelForKey(key: FirestoreModelKey): D;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Type used to convert a FirebaseModelLoader into an InContextFirebaseModelLoader
|
|
25
|
+
*/
|
|
26
|
+
export declare type AsInContextFirebaseModelLoader<X> = X extends FirebaseModelLoader<infer C, infer T, infer D> ? InContextFirebaseModelLoader<T, D> : never;
|
|
27
|
+
export interface InModelContextFirebaseModelLoader<T, D extends FirestoreDocument<T>> {
|
|
28
|
+
readonly model: D;
|
|
29
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.firebaseModelLoader = void 0;
|
|
4
|
+
function firebaseModelLoader(getFirestoreCollection) {
|
|
5
|
+
return {
|
|
6
|
+
loadModelForKey(key, context) {
|
|
7
|
+
const firestoreCollection = getFirestoreCollection(context);
|
|
8
|
+
let documentAccessor;
|
|
9
|
+
if (context.transaction) {
|
|
10
|
+
documentAccessor = firestoreCollection.documentAccessorForTransaction(context.transaction);
|
|
11
|
+
}
|
|
12
|
+
else {
|
|
13
|
+
documentAccessor = firestoreCollection.documentAccessor();
|
|
14
|
+
}
|
|
15
|
+
const document = documentAccessor.loadDocumentForKey(key);
|
|
16
|
+
return document;
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
exports.firebaseModelLoader = firebaseModelLoader;
|
|
21
|
+
//# sourceMappingURL=model.loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { GrantedRole } from '@dereekb/model';
|
|
2
|
+
import { Getter, SetIncludesMode, ArrayOrValue, UsePromiseUseFunction, UsePromiseFunction } from '@dereekb/util';
|
|
3
|
+
import { FirestoreDocument } from '../firestore/accessor/document';
|
|
4
|
+
import { FirestoreModelIdentity, FirestoreModelKey, FirestoreModelNames } from '../firestore/collection/collection';
|
|
5
|
+
import { FirebaseModelCollectionLoader, FirebaseModelLoader, InContextFirebaseModelLoader } from './model/model.loader';
|
|
6
|
+
import { InContextFirebaseModelPermissionService, FirebasePermissionContext, FirebaseModelPermissionService, FirebasePermissionServiceInstanceDelegate, InModelContextFirebaseModelPermissionService, FirebasePermissionErrorContext } from './permission';
|
|
7
|
+
import { ContextGrantedModelRolesReader } from './permission/permission.service.role';
|
|
8
|
+
export declare type FirebaseModelServiceContext = FirebasePermissionContext & FirebasePermissionErrorContext;
|
|
9
|
+
export interface FirebaseModelService<C extends FirebaseModelServiceContext, T, D extends FirestoreDocument<T> = FirestoreDocument<T>, R extends GrantedRole = GrantedRole> extends FirebaseModelPermissionService<C, T, D, R>, FirebaseModelLoader<C, T, D> {
|
|
10
|
+
}
|
|
11
|
+
export declare type FirebaseModelServiceGetter<C extends FirebaseModelServiceContext, T, D extends FirestoreDocument<T> = FirestoreDocument<T>, R extends GrantedRole = GrantedRole> = Getter<FirebaseModelService<C, T, D, R>>;
|
|
12
|
+
export interface FirebaseModelServiceConfig<C extends FirebaseModelServiceContext, T, D extends FirestoreDocument<T> = FirestoreDocument<T>, R extends GrantedRole = GrantedRole> extends Omit<FirebasePermissionServiceInstanceDelegate<C, T, D, R>, 'loadModelForKey'>, FirebaseModelCollectionLoader<C, T, D> {
|
|
13
|
+
}
|
|
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
|
+
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
|
+
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
|
+
forKey: (key: FirestoreModelKey) => InModelContextFirebaseModelService<C, T, D, R>;
|
|
19
|
+
};
|
|
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>;
|
|
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>>;
|
|
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>;
|
|
31
|
+
export declare type FirebaseModelsServiceFactory<C extends FirebaseModelServiceContext, K extends FirestoreModelIdentity = FirestoreModelIdentity> = {
|
|
32
|
+
[J in FirestoreModelNames<K>]: FirebaseModelServiceGetter<C, any>;
|
|
33
|
+
};
|
|
34
|
+
/**
|
|
35
|
+
* Function that returns a configured service corresponding with the requested function, and for that context.
|
|
36
|
+
*/
|
|
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;
|
|
39
|
+
/**
|
|
40
|
+
* Creates a new FirebaseModelsService.
|
|
41
|
+
*
|
|
42
|
+
* When a context is passed, it is extended and the services are available in the context too as a services function.
|
|
43
|
+
*
|
|
44
|
+
* This allows the services function to reference itself in usage. You do this by creating another type that extends the context. Example:
|
|
45
|
+
*
|
|
46
|
+
* export type DemoFirebaseBaseContext = FirebaseAppModelContext<DemoFirestoreCollections>;
|
|
47
|
+
* ...
|
|
48
|
+
* export const demoFirebaseModelServices = firebaseModelsService<typeof DEMO_FIREBASE_MODEL_SERVICE_FACTORIES, DemoFirebaseBaseContext, DemoFirebaseModelTypes>(DEMO_FIREBASE_MODEL_SERVICE_FACTORIES);
|
|
49
|
+
* export type DemoFirebaseContext = DemoFirebaseBaseContext & { service: typeof demoFirebaseModelServices };
|
|
50
|
+
*
|
|
51
|
+
* @param services
|
|
52
|
+
* @returns
|
|
53
|
+
*/
|
|
54
|
+
export declare function firebaseModelsService<X extends FirebaseModelsServiceFactory<C, K>, C extends FirebaseModelServiceContext, K extends FirestoreModelIdentity = FirestoreModelIdentity>(services: X): FirebaseModelsService<X, C>;
|
|
55
|
+
export declare type InContextFirebaseModelsService<Y> = Y extends FirebaseModelsService<infer X, infer C> ? <K extends keyof X>(type: K) => X[K] extends FirebaseModelServiceGetter<C, infer T, infer D, infer R> ? InContextFirebaseModelService<C, T, D, R> : never : never;
|
|
56
|
+
export declare type InContextFirebaseModelsServiceFactory<Y> = Y extends FirebaseModelsService<infer X, infer C> ? (context: C) => InContextFirebaseModelsService<Y> : never;
|
|
57
|
+
/**
|
|
58
|
+
* Creates a InContextFirebaseModelsServiceFactory for a particular service.
|
|
59
|
+
*
|
|
60
|
+
* @param service
|
|
61
|
+
* @returns
|
|
62
|
+
*/
|
|
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>;
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.useFirebaseModelsService = exports.selectFromFirebaseModelsService = exports.inContextFirebaseModelsServiceFactory = exports.firebaseModelsService = exports.inContextFirebaseModelServiceFactory = exports.firebaseModelServiceFactory = exports.firebaseModelService = void 0;
|
|
4
|
+
const util_1 = require("@dereekb/util");
|
|
5
|
+
const model_loader_1 = require("./model/model.loader");
|
|
6
|
+
const permission_1 = require("./permission");
|
|
7
|
+
const permission_service_role_1 = require("./permission/permission.service.role");
|
|
8
|
+
function firebaseModelService(config) {
|
|
9
|
+
const permissionServiceDelegate = (0, util_1.build)({
|
|
10
|
+
base: (0, model_loader_1.firebaseModelLoader)(config.getFirestoreCollection),
|
|
11
|
+
build: (x) => {
|
|
12
|
+
x.roleMapForModel = config.roleMapForModel;
|
|
13
|
+
}
|
|
14
|
+
});
|
|
15
|
+
const permissionService = (0, permission_1.firebaseModelPermissionService)(permissionServiceDelegate);
|
|
16
|
+
const service = {
|
|
17
|
+
roleMapForModelContext: (model, context) => permissionService.roleMapForModelContext(model, context),
|
|
18
|
+
roleMapForKeyContext: (key, context) => permissionService.roleMapForKeyContext(key, context),
|
|
19
|
+
loadModelForKey: permissionServiceDelegate.loadModelForKey
|
|
20
|
+
};
|
|
21
|
+
return service;
|
|
22
|
+
}
|
|
23
|
+
exports.firebaseModelService = firebaseModelService;
|
|
24
|
+
function firebaseModelServiceFactory(config) {
|
|
25
|
+
return (0, util_1.cachedGetter)(() => firebaseModelService(config));
|
|
26
|
+
}
|
|
27
|
+
exports.firebaseModelServiceFactory = firebaseModelServiceFactory;
|
|
28
|
+
function inContextFirebaseModelServiceFactory(factory) {
|
|
29
|
+
return (context) => {
|
|
30
|
+
const firebaseModelService = factory();
|
|
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
|
+
});
|
|
47
|
+
return inModelContextService;
|
|
48
|
+
};
|
|
49
|
+
const service = (0, util_1.build)({
|
|
50
|
+
base: base,
|
|
51
|
+
build: (x) => {
|
|
52
|
+
x.forKey = (key) => service(firebaseModelService.loadModelForKey(key, context));
|
|
53
|
+
x.roleMapForModel = (model) => firebaseModelService.roleMapForModelContext(model, context);
|
|
54
|
+
x.roleMapForKey = (key) => firebaseModelService.roleMapForKeyContext(key, context);
|
|
55
|
+
x.loadModelForKey = (key) => firebaseModelService.loadModelForKey(key, context);
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
return service;
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
exports.inContextFirebaseModelServiceFactory = inContextFirebaseModelServiceFactory;
|
|
62
|
+
/**
|
|
63
|
+
* Creates a new FirebaseModelsService.
|
|
64
|
+
*
|
|
65
|
+
* When a context is passed, it is extended and the services are available in the context too as a services function.
|
|
66
|
+
*
|
|
67
|
+
* This allows the services function to reference itself in usage. You do this by creating another type that extends the context. Example:
|
|
68
|
+
*
|
|
69
|
+
* export type DemoFirebaseBaseContext = FirebaseAppModelContext<DemoFirestoreCollections>;
|
|
70
|
+
* ...
|
|
71
|
+
* export const demoFirebaseModelServices = firebaseModelsService<typeof DEMO_FIREBASE_MODEL_SERVICE_FACTORIES, DemoFirebaseBaseContext, DemoFirebaseModelTypes>(DEMO_FIREBASE_MODEL_SERVICE_FACTORIES);
|
|
72
|
+
* export type DemoFirebaseContext = DemoFirebaseBaseContext & { service: typeof demoFirebaseModelServices };
|
|
73
|
+
*
|
|
74
|
+
* @param services
|
|
75
|
+
* @returns
|
|
76
|
+
*/
|
|
77
|
+
function firebaseModelsService(services) {
|
|
78
|
+
const firebaseModelsServiceFunction = (type, context) => {
|
|
79
|
+
const firebaseModelService = services[type];
|
|
80
|
+
const contextWithService = Object.assign(Object.assign({}, context), { service: firebaseModelsServiceFunction });
|
|
81
|
+
const service = inContextFirebaseModelServiceFactory(firebaseModelService)(contextWithService);
|
|
82
|
+
return service;
|
|
83
|
+
};
|
|
84
|
+
return firebaseModelsServiceFunction;
|
|
85
|
+
}
|
|
86
|
+
exports.firebaseModelsService = firebaseModelsService;
|
|
87
|
+
/**
|
|
88
|
+
* Creates a InContextFirebaseModelsServiceFactory for a particular service.
|
|
89
|
+
*
|
|
90
|
+
* @param service
|
|
91
|
+
* @returns
|
|
92
|
+
*/
|
|
93
|
+
function inContextFirebaseModelsServiceFactory(service) {
|
|
94
|
+
const inContextFirebaseModelsServiceFactory = (context) => {
|
|
95
|
+
return (type) => service(type, context);
|
|
96
|
+
};
|
|
97
|
+
return inContextFirebaseModelsServiceFactory;
|
|
98
|
+
}
|
|
99
|
+
exports.inContextFirebaseModelsServiceFactory = inContextFirebaseModelsServiceFactory;
|
|
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;
|
|
114
|
+
}
|
|
115
|
+
exports.useFirebaseModelsService = useFirebaseModelsService;
|
|
116
|
+
//# sourceMappingURL=model.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model.service.js","sourceRoot":"","sources":["../../../../../../../packages/firebase/src/lib/common/model/model.service.ts"],"names":[],"mappings":";;;AACA,wCAAkJ;AAGlJ,uDAA6I;AAC7I,6CAA2R;AAC3R,kFAAsH;AAStH,SAAgB,oBAAoB,CAAuI,MAA8C;IACvN,MAAM,yBAAyB,GAAG,IAAA,YAAK,EAAwD;QAC7F,IAAI,EAAE,IAAA,kCAAmB,EAAC,MAAM,CAAC,sBAAsB,CAAC;QACxD,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE;YACX,CAAC,CAAC,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;QAC7C,CAAC;KACF,CAAC,CAAC;IAEH,MAAM,iBAAiB,GAAG,IAAA,2CAA8B,EAAC,yBAAyB,CAAC,CAAC;IAEpF,MAAM,OAAO,GAAqC;QAChD,sBAAsB,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,iBAAiB,CAAC,sBAAsB,CAAC,KAAK,EAAE,OAAO,CAAC;QACpG,oBAAoB,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,GAAG,EAAE,OAAO,CAAC;QAC5F,eAAe,EAAE,yBAAyB,CAAC,eAAe;KAC3D,CAAC;IAEF,OAAO,OAAO,CAAC;AACjB,CAAC;AAjBD,oDAiBC;AAID,SAAgB,2BAA2B,CAAuI,MAA8C;IAC9N,OAAO,IAAA,mBAAY,EAAC,GAAG,EAAE,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC;AAC1D,CAAC;AAFD,kEAEC;AAoBD,SAAgB,oCAAoC,CAAmG,OAA+C;IACpM,OAAO,CAAC,OAAU,EAAE,EAAE;QACpB,MAAM,oBAAoB,GAAG,OAAO,EAAE,CAAC;QAEvC,MAAM,IAAI,GAA0D,CAAC,UAAiC,EAAE,EAAE;YACxG,MAAM,KAAK,GAAG,OAAO,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,oBAAoB,CAAC,eAAe,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;YAEtH,MAAM,UAAU,GAAG,GAAG,EAAE,CAAC,IAAA,wDAA8B,EAAC,qBAAqB,CAAC,CAAC;YAC/E,MAAM,WAAW,GAAG,CAAC,KAAsB,EAAE,cAA+B,KAAK,EAAE,EAAE,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC;YACrJ,MAAM,UAAU,GAAG,CAAC,KAAsB,EAAE,WAA6B,EAAE,EAAE,CAAC,IAAA,iBAAU,EAAC,WAAW,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC;YAE1H,MAAM,qBAAqB,GAAmD,IAAA,YAAK,EAAiD;gBAClI,IAAI,EAAE,UAA4D;gBAClE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE;oBACX,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC;oBAChB,CAAC,CAAC,OAAO,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;oBACjD,CAAC,CAAC,UAAU,GAAG,UAAU,CAAC;oBAC1B,CAAC,CAAC,WAAW,GAAG,WAAW,CAAC;oBAC5B,CAAC,CAAC,UAAU,GAAG,UAAU,CAAC;oBAC1B,CAAC,CAAC,GAAG,GAAG,IAAA,iBAAU,EAAC,UAAU,CAAC,CAAC;gBACjC,CAAC;aACF,CAAC,CAAC;YAEH,OAAO,qBAAqB,CAAC;QAC/B,CAAC,CAAC;QAEF,MAAM,OAAO,GAAG,IAAA,YAAK,EAA4C;YAC/D,IAAI,EAAE,IAAiD;YACvD,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE;gBACX,CAAC,CAAC,MAAM,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,oBAAoB,CAAC,eAAe,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;gBAChF,CAAC,CAAC,eAAe,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,oBAAoB,CAAC,sBAAsB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;gBAC3F,CAAC,CAAC,aAAa,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,oBAAoB,CAAC,oBAAoB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;gBACnF,CAAC,CAAC,eAAe,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,oBAAoB,CAAC,eAAe,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;YAClF,CAAC;SACF,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC;IACjB,CAAC,CAAC;AACJ,CAAC;AAtCD,oFAsCC;AAaD;;;;;;;;;;;;;;GAcG;AACH,SAAgB,qBAAqB,CAAiJ,QAAW;IAC/L,MAAM,6BAA6B,GAAgC,CAAoB,IAAO,EAAE,OAAU,EAAE,EAAE;QAC5G,MAAM,oBAAoB,GAAG,QAAQ,CAAC,IAAI,CAA2C,CAAC;QAEtF,MAAM,kBAAkB,mCACnB,OAAO,KACV,OAAO,EAAE,6BAA6B,GACvC,CAAC;QAEF,MAAM,OAAO,GAAG,oCAAoC,CAAC,oBAAoB,CAAC,CAAC,kBAAkB,CAAC,CAAC;QAC/F,OAAO,OAAc,CAAC;IACxB,CAAC,CAAC;IAEF,OAAO,6BAA6B,CAAC;AACvC,CAAC;AAdD,sDAcC;AAKD;;;;;GAKG;AACH,SAAgB,qCAAqC,CAAiJ,OAAoC;IACxO,MAAM,qCAAqC,GAAuE,CAAoB,OAAU,EAAE,EAAE;QAClJ,OAAO,CAAC,IAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC7C,CAAC,CAAC;IAEF,OAAO,qCAAqC,CAAC;AAC/C,CAAC;AAND,sFAMC;AAsBD,SAAgB,+BAA+B,CAAqF,OAAU,EAAE,IAAO,EAAE,MAA4C;IACnM,OAAO,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAA+C,CAAC;AACxG,CAAC;AAFD,0EAEC;AAED,SAAgB,wBAAwB,CAAqF,OAAU,EAAE,IAAO,EAAE,MAA+C;IAC/L,MAAM,qBAAqB,GAAG,+BAA+B,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IACrF,IAAI,MAAqD,CAAC;IAE1D,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE;QACvC,MAAM,GAAG,qBAAqB,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,gBAAgB,CAAkD,CAAC;KACnI;SAAM;QACL,MAAM,GAAG,qBAAqB,CAAC,GAAoD,CAAC;KACrF;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAXD,4DAWC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
tslib_1.__exportStar(require("./permission"), exports);
|
|
5
|
+
tslib_1.__exportStar(require("./permission.context"), exports);
|
|
6
|
+
tslib_1.__exportStar(require("./permission.service"), exports);
|
|
7
|
+
tslib_1.__exportStar(require("./permission.service.role"), exports);
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../../packages/firebase/src/lib/common/model/permission/index.ts"],"names":[],"mappings":";;;AAAA,uDAA6B;AAC7B,+DAAqC;AACrC,+DAAqC;AACrC,oEAA0C"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { GrantedRole } from '@dereekb/model';
|
|
2
|
+
import { ArrayOrValue } from '@dereekb/util';
|
|
3
|
+
import { FirebaseTransactionContext } from '../../firestore/reference';
|
|
4
|
+
import { FirebaseContextGrantedModelRoles } from './permission';
|
|
5
|
+
export declare type FirebasePermissionContext = FirebaseTransactionContext;
|
|
6
|
+
export declare type FirebasePermissionErrorContextErrorFunction = (firebaseContextGrantedModelRoles: FirebaseContextGrantedModelRoles<FirebasePermissionErrorContext, unknown>, role?: ArrayOrValue<GrantedRole>) => Error;
|
|
7
|
+
export interface FirebasePermissionErrorContext {
|
|
8
|
+
makePermissionError?: FirebasePermissionErrorContextErrorFunction;
|
|
9
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"permission.context.js","sourceRoot":"","sources":["../../../../../../../../packages/firebase/src/lib/common/model/permission/permission.context.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Maybe } from '@dereekb/util';
|
|
2
|
+
import { GrantedRole, ContextGrantedModelRoles } from '@dereekb/model';
|
|
3
|
+
import { DocumentSnapshot, FirestoreDocument } from '../../firestore';
|
|
4
|
+
import { FirebasePermissionErrorContext } from './permission.context';
|
|
5
|
+
export interface FirebasePermissionServiceModel<T, D extends FirestoreDocument<T> = FirestoreDocument<T>> {
|
|
6
|
+
readonly document: D;
|
|
7
|
+
readonly snapshot: DocumentSnapshot<T>;
|
|
8
|
+
readonly exists: boolean;
|
|
9
|
+
readonly data: Maybe<T>;
|
|
10
|
+
}
|
|
11
|
+
export declare type FirebaseContextGrantedModelRoles<C extends FirebasePermissionErrorContext, T, D extends FirestoreDocument<T> = FirestoreDocument<T>, R extends GrantedRole = GrantedRole> = ContextGrantedModelRoles<FirebasePermissionServiceModel<T, D>, C, R>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"permission.js","sourceRoot":"","sources":["../../../../../../../../packages/firebase/src/lib/common/model/permission/permission.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { FirestoreDocument } from './../../firestore';
|
|
2
|
+
import { AbstractModelPermissionService, GrantedRoleMap, InContextModelPermissionService, InModelContextModelPermissionService, ModelPermissionService } from '@dereekb/model';
|
|
3
|
+
import { Maybe, PromiseOrValue } from '@dereekb/util';
|
|
4
|
+
import { FirebaseModelLoader, InModelContextFirebaseModelLoader } from '../model/model.loader';
|
|
5
|
+
import { FirebaseModelContext } from '../context';
|
|
6
|
+
import { FirebasePermissionServiceModel } from './permission';
|
|
7
|
+
export declare type FirebaseModelPermissionService<C extends FirebaseModelContext, T, D extends FirestoreDocument<T> = FirestoreDocument<T>, R extends string = string> = ModelPermissionService<C, D, R, FirebasePermissionServiceModel<T, D>>;
|
|
8
|
+
export interface FirebasePermissionServiceInstanceDelegate<C extends FirebaseModelContext, T, D extends FirestoreDocument<T> = FirestoreDocument<T>, R extends string = string> extends FirebaseModelLoader<C, T, D> {
|
|
9
|
+
roleMapForModel(output: FirebasePermissionServiceModel<T, D>, context: C, model: D): PromiseOrValue<GrantedRoleMap<R>>;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Abstract AbstractModelPermissionService implementation for FirebaseModelsPermissionService.
|
|
13
|
+
*/
|
|
14
|
+
export declare class FirebaseModelPermissionServiceInstance<C extends FirebaseModelContext, T, D extends FirestoreDocument<T> = FirestoreDocument<T>, R extends string = string> extends AbstractModelPermissionService<C, D, R, FirebasePermissionServiceModel<T, D>> implements FirebaseModelPermissionService<C, T, D, R> {
|
|
15
|
+
readonly delegate: FirebasePermissionServiceInstanceDelegate<C, T, D, R>;
|
|
16
|
+
constructor(delegate: FirebasePermissionServiceInstanceDelegate<C, T, D, R>);
|
|
17
|
+
roleMapForModel(output: FirebasePermissionServiceModel<T, D>, context: C, model: D): PromiseOrValue<GrantedRoleMap<R>>;
|
|
18
|
+
protected outputForModel(document: D): Promise<Maybe<FirebasePermissionServiceModel<T, D>>>;
|
|
19
|
+
protected getRoleMapForOutput(output: FirebasePermissionServiceModel<T, D>, context: C, model: D): Promise<import("@dereekb/model").ContextGrantedModelRoles<FirebasePermissionServiceModel<T, D>, C, R>>;
|
|
20
|
+
protected isUsableOutputForRoles(output: FirebasePermissionServiceModel<T, D>): boolean;
|
|
21
|
+
}
|
|
22
|
+
export declare function firebaseModelPermissionService<C extends FirebaseModelContext, T, D extends FirestoreDocument<T> = FirestoreDocument<T>, R extends string = string>(delegate: FirebasePermissionServiceInstanceDelegate<C, T, D, R>): FirebaseModelPermissionServiceInstance<C, T, D, R>;
|
|
23
|
+
export declare type InContextFirebaseModelPermissionService<C, T, D extends FirestoreDocument<T> = FirestoreDocument<T>, R extends string = string> = InContextModelPermissionService<C, D, R, FirebasePermissionServiceModel<T, D>>;
|
|
24
|
+
export declare type InModelContextFirebaseModelPermissionService<C, T, D extends FirestoreDocument<T> = FirestoreDocument<T>, R extends string = string> = InModelContextModelPermissionService<C, D, R, FirebasePermissionServiceModel<T, D>> & InModelContextFirebaseModelLoader<T, D>;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.firebaseModelPermissionService = exports.FirebaseModelPermissionServiceInstance = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const model_1 = require("@dereekb/model");
|
|
6
|
+
/**
|
|
7
|
+
* Abstract AbstractModelPermissionService implementation for FirebaseModelsPermissionService.
|
|
8
|
+
*/
|
|
9
|
+
class FirebaseModelPermissionServiceInstance extends model_1.AbstractModelPermissionService {
|
|
10
|
+
constructor(delegate) {
|
|
11
|
+
super(delegate);
|
|
12
|
+
this.delegate = delegate;
|
|
13
|
+
}
|
|
14
|
+
roleMapForModel(output, context, model) {
|
|
15
|
+
return this.delegate.roleMapForModel(output, context, model);
|
|
16
|
+
}
|
|
17
|
+
outputForModel(document) {
|
|
18
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
19
|
+
const snapshot = yield document.accessor.get();
|
|
20
|
+
const data = snapshot.data();
|
|
21
|
+
const model = { document, snapshot, data, exists: data != null };
|
|
22
|
+
return model;
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
getRoleMapForOutput(output, context, model) {
|
|
26
|
+
const _super = Object.create(null, {
|
|
27
|
+
getRoleMapForOutput: { get: () => super.getRoleMapForOutput }
|
|
28
|
+
});
|
|
29
|
+
var _a, _b;
|
|
30
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
31
|
+
if (context.adminGetsAllowAllRoles && ((_b = (_a = context.auth) === null || _a === void 0 ? void 0 : _a.isAdmin) === null || _b === void 0 ? void 0 : _b.call(_a))) {
|
|
32
|
+
return (0, model_1.fullAccessGrantedModelRoles)(context, output);
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
return _super.getRoleMapForOutput.call(this, output, context, model);
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
isUsableOutputForRoles(output) {
|
|
40
|
+
return output.exists;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
exports.FirebaseModelPermissionServiceInstance = FirebaseModelPermissionServiceInstance;
|
|
44
|
+
function firebaseModelPermissionService(delegate) {
|
|
45
|
+
return new FirebaseModelPermissionServiceInstance(delegate);
|
|
46
|
+
}
|
|
47
|
+
exports.firebaseModelPermissionService = firebaseModelPermissionService;
|
|
48
|
+
//# sourceMappingURL=permission.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"permission.service.js","sourceRoot":"","sources":["../../../../../../../../packages/firebase/src/lib/common/model/permission/permission.service.ts"],"names":[],"mappings":";;;;AACA,0CAA4M;AAY5M;;GAEG;AACH,MAAa,sCAA4J,SAAQ,sCAA6E;IAC5P,YAAqB,QAA+D;QAClF,KAAK,CAAC,QAAQ,CAAC,CAAC;QADG,aAAQ,GAAR,QAAQ,CAAuD;IAEpF,CAAC;IAED,eAAe,CAAC,MAA4C,EAAE,OAAU,EAAE,KAAQ;QAChF,OAAO,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IAC/D,CAAC;IAEe,cAAc,CAAC,QAAW;;YACxC,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;YAC/C,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;YAE7B,MAAM,KAAK,GAAgD,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,IAAI,IAAI,EAAE,CAAC;YAC9G,OAAO,KAAK,CAAC;QACf,CAAC;KAAA;IAEwB,mBAAmB,CAAC,MAA4C,EAAE,OAAU,EAAE,KAAQ;;;;;;YAC7G,IAAI,OAAO,CAAC,sBAAsB,KAAI,MAAA,MAAA,OAAO,CAAC,IAAI,0CAAE,OAAO,kDAAI,CAAA,EAAE;gBAC/D,OAAO,IAAA,mCAA2B,EAAC,OAAO,EAAE,MAAM,CAAC,CAAC;aACrD;iBAAM;gBACL,OAAO,OAAM,mBAAmB,YAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE;aAC1D;;KACF;IAEkB,sBAAsB,CAAC,MAA4C;QACpF,OAAO,MAAM,CAAC,MAAM,CAAC;IACvB,CAAC;CACF;AA5BD,wFA4BC;AAED,SAAgB,8BAA8B,CAAsH,QAA+D;IACjO,OAAO,IAAI,sCAAsC,CAAC,QAAQ,CAAC,CAAC;AAC9D,CAAC;AAFD,wEAEC"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { FirestoreDocument } from '../../firestore/accessor/document';
|
|
2
|
+
import { GrantedRole, GrantedRoleMap, GrantedRoleMapReader } from '@dereekb/model';
|
|
3
|
+
import { InModelContextFirebaseModelPermissionService } from './permission.service';
|
|
4
|
+
import { SetIncludesMode, ArrayOrValue } from '@dereekb/util';
|
|
5
|
+
import { FirebasePermissionErrorContext } from './permission.context';
|
|
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
|
+
readonly roleMap: GrantedRoleMap<R>;
|
|
9
|
+
readonly contextGrantedModelRoles: FirebaseContextGrantedModelRoles<C, T, D, R>;
|
|
10
|
+
assertHasRole(role: R): this;
|
|
11
|
+
assertHasRoles(setIncludes: SetIncludesMode, roles: ArrayOrValue<R>): this;
|
|
12
|
+
assertContainsRoles(setIncludes: SetIncludesMode, roles: ArrayOrValue<R>): this;
|
|
13
|
+
throwPermissionError(role?: R): never;
|
|
14
|
+
}
|
|
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
|
+
readonly contextGrantedModelRoles: FirebaseContextGrantedModelRoles<C, T, D, R>;
|
|
17
|
+
private _roleReader;
|
|
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;
|
|
24
|
+
get roleMap(): GrantedRoleMap<R>;
|
|
25
|
+
hasNoAccess(): boolean;
|
|
26
|
+
hasRole(role: R): boolean;
|
|
27
|
+
hasRoles(setIncludes: SetIncludesMode, roles: ArrayOrValue<R>): boolean;
|
|
28
|
+
containsRoles(setIncludes: SetIncludesMode, roles: ArrayOrValue<R>): boolean;
|
|
29
|
+
assertHasRole(role: R): this;
|
|
30
|
+
assertHasRoles(setIncludes: SetIncludesMode, roles: ArrayOrValue<R>): this;
|
|
31
|
+
assertContainsRoles(setIncludes: SetIncludesMode, roles: ArrayOrValue<R>): this;
|
|
32
|
+
throwPermissionError(role?: ArrayOrValue<R>): never;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Creates a new ContextGrantedModelRolesReader for the input model.
|
|
36
|
+
*/
|
|
37
|
+
export declare function contextGrantedModelRolesReader<C extends FirebasePermissionErrorContext, T, D extends FirestoreDocument<T> = FirestoreDocument<T>, R extends GrantedRole = GrantedRole>(service: InModelContextFirebaseModelPermissionService<C, T, D, R>): Promise<ContextGrantedModelRolesReader<C, T, D, R>>;
|
|
38
|
+
/**
|
|
39
|
+
* Creates the default permission error message.
|
|
40
|
+
*
|
|
41
|
+
* @param contextGrantedModelRoles
|
|
42
|
+
* @param role
|
|
43
|
+
* @returns
|
|
44
|
+
*/
|
|
45
|
+
export declare function contextGrantedModelRolesReaderPermissionErrorMessage(contextGrantedModelRoles: FirebaseContextGrantedModelRoles<FirebasePermissionErrorContext, unknown>, roles?: ArrayOrValue<GrantedRole>): string;
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.contextGrantedModelRolesReaderPermissionErrorMessage = exports.contextGrantedModelRolesReader = exports.ContextGrantedModelRolesReaderInstance = void 0;
|
|
4
|
+
const model_1 = require("@dereekb/model");
|
|
5
|
+
class ContextGrantedModelRolesReaderInstance {
|
|
6
|
+
constructor(contextGrantedModelRoles) {
|
|
7
|
+
this.contextGrantedModelRoles = contextGrantedModelRoles;
|
|
8
|
+
this._roleReader = (0, model_1.grantedRoleMapReader)(contextGrantedModelRoles.roleMap);
|
|
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
|
+
}
|
|
25
|
+
get roleMap() {
|
|
26
|
+
return this.contextGrantedModelRoles.roleMap;
|
|
27
|
+
}
|
|
28
|
+
hasNoAccess() {
|
|
29
|
+
return this._roleReader.hasNoAccess();
|
|
30
|
+
}
|
|
31
|
+
hasRole(role) {
|
|
32
|
+
return this._roleReader.hasRole(role);
|
|
33
|
+
}
|
|
34
|
+
hasRoles(setIncludes, roles) {
|
|
35
|
+
return this._roleReader.hasRoles(setIncludes, roles);
|
|
36
|
+
}
|
|
37
|
+
containsRoles(setIncludes, roles) {
|
|
38
|
+
return this._roleReader.containsRoles(setIncludes, roles);
|
|
39
|
+
}
|
|
40
|
+
assertHasRole(role) {
|
|
41
|
+
if (!this.hasRole(role)) {
|
|
42
|
+
this.throwPermissionError(role);
|
|
43
|
+
}
|
|
44
|
+
return this;
|
|
45
|
+
}
|
|
46
|
+
assertHasRoles(setIncludes, roles) {
|
|
47
|
+
if (!this.hasRoles(setIncludes, roles)) {
|
|
48
|
+
this.throwPermissionError(roles);
|
|
49
|
+
}
|
|
50
|
+
return this;
|
|
51
|
+
}
|
|
52
|
+
assertContainsRoles(setIncludes, roles) {
|
|
53
|
+
if (!this.containsRoles(setIncludes, roles)) {
|
|
54
|
+
this.throwPermissionError(roles);
|
|
55
|
+
}
|
|
56
|
+
return this;
|
|
57
|
+
}
|
|
58
|
+
throwPermissionError(role) {
|
|
59
|
+
var _a, _b, _c;
|
|
60
|
+
const error = (_c = (_b = (_a = this.contextGrantedModelRoles.context).makePermissionError) === null || _b === void 0 ? void 0 : _b.call(_a, this.contextGrantedModelRoles, role)) !== null && _c !== void 0 ? _c : new Error(contextGrantedModelRolesReaderPermissionErrorMessage(this.contextGrantedModelRoles, role));
|
|
61
|
+
throw error;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
exports.ContextGrantedModelRolesReaderInstance = ContextGrantedModelRolesReaderInstance;
|
|
65
|
+
/**
|
|
66
|
+
* Creates a new ContextGrantedModelRolesReader for the input model.
|
|
67
|
+
*/
|
|
68
|
+
function contextGrantedModelRolesReader(service) {
|
|
69
|
+
return service.roleMap().then((x) => new ContextGrantedModelRolesReaderInstance(x));
|
|
70
|
+
}
|
|
71
|
+
exports.contextGrantedModelRolesReader = contextGrantedModelRolesReader;
|
|
72
|
+
/**
|
|
73
|
+
* Creates the default permission error message.
|
|
74
|
+
*
|
|
75
|
+
* @param contextGrantedModelRoles
|
|
76
|
+
* @param role
|
|
77
|
+
* @returns
|
|
78
|
+
*/
|
|
79
|
+
function contextGrantedModelRolesReaderPermissionErrorMessage(contextGrantedModelRoles, roles) {
|
|
80
|
+
var _a, _b;
|
|
81
|
+
let message = `Permissions Error ("${(_a = contextGrantedModelRoles.data) === null || _a === void 0 ? void 0 : _a.document.modelType}":"${(_b = contextGrantedModelRoles.data) === null || _b === void 0 ? void 0 : _b.document.id}")`;
|
|
82
|
+
if (roles && (roles === null || roles === void 0 ? void 0 : roles.length)) {
|
|
83
|
+
message = `${message}: required role(s) "${roles}"`;
|
|
84
|
+
}
|
|
85
|
+
return message;
|
|
86
|
+
}
|
|
87
|
+
exports.contextGrantedModelRolesReaderPermissionErrorMessage = contextGrantedModelRolesReaderPermissionErrorMessage;
|
|
88
|
+
//# sourceMappingURL=permission.service.role.js.map
|
|
@@ -0,0 +1 @@
|
|
|
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,33 @@
|
|
|
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
|
+
|
|
9
|
+
# [6.0.0](https://github.com/dereekb/dbx-components/compare/v5.3.0-dev...v6.0.0) (2022-06-03)
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
### Features
|
|
13
|
+
|
|
14
|
+
* added ContextGrantedModelRolesReader ([6fba1cc](https://github.com/dereekb/dbx-components/commit/6fba1cc637beeff55523df599eb88391352f9f58))
|
|
15
|
+
* added firebaseModelsService ([7432e55](https://github.com/dereekb/dbx-components/commit/7432e55111cec66a239856ecb2db6adfc9e9780d))
|
|
16
|
+
* added loadDocumentForKey to LimitedFirestoreDocumentAccessor ([96958b8](https://github.com/dereekb/dbx-components/commit/96958b89df62dc38136ac2dfcd2ce7c139b6099e))
|
|
17
|
+
* added modelType to FirestoreDocument ([deecb5d](https://github.com/dereekb/dbx-components/commit/deecb5df415ed9d99412c336ba65f4da572bbe44))
|
|
18
|
+
* added OnCallDeleteModel ([358189d](https://github.com/dereekb/dbx-components/commit/358189d6db6ef7d8db93d6dd881d29cc724dd083))
|
|
19
|
+
* added orderByDocumentId, startAtValue, endAtValue constraints ([c846fee](https://github.com/dereekb/dbx-components/commit/c846feef6c26a3818bb006a807b6e931b7b14eaf))
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
### BREAKING CHANGES
|
|
23
|
+
|
|
24
|
+
* model type is now required on FirestoreDocument models
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
# [5.3.0](https://github.com/dereekb/dbx-components/compare/v5.2.1-dev...v5.3.0) (2022-05-30)
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
|
|
5
32
|
## [5.2.1](https://github.com/dereekb/dbx-components/compare/v5.2.0-dev...v5.2.1) (2022-05-29)
|
|
6
33
|
|
|
7
34
|
|
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
|
}
|