@dereekb/firebase 6.0.0 → 7.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/package.json +6 -5
  3. package/src/lib/client/firestore/driver.query.js +1 -0
  4. package/src/lib/client/firestore/driver.query.js.map +1 -1
  5. package/src/lib/client/function/model.function.factory.d.ts +17 -8
  6. package/src/lib/client/function/model.function.factory.js +4 -0
  7. package/src/lib/client/function/model.function.factory.js.map +1 -1
  8. package/src/lib/common/firestore/accessor/accessor.d.ts +1 -0
  9. package/src/lib/common/firestore/accessor/accessor.js.map +1 -1
  10. package/src/lib/common/firestore/accessor/accessor.wrap.d.ts +23 -0
  11. package/src/lib/common/firestore/accessor/accessor.wrap.js +43 -0
  12. package/src/lib/common/firestore/accessor/accessor.wrap.js.map +1 -0
  13. package/src/lib/common/firestore/accessor/accessor.wrap.modify.d.ts +56 -0
  14. package/src/lib/common/firestore/accessor/accessor.wrap.modify.js +95 -0
  15. package/src/lib/common/firestore/accessor/accessor.wrap.modify.js.map +1 -0
  16. package/src/lib/common/firestore/accessor/document.d.ts +41 -15
  17. package/src/lib/common/firestore/accessor/document.js +25 -11
  18. package/src/lib/common/firestore/accessor/document.js.map +1 -1
  19. package/src/lib/common/firestore/accessor/document.utility.d.ts +4 -0
  20. package/src/lib/common/firestore/accessor/document.utility.js +3 -1
  21. package/src/lib/common/firestore/accessor/document.utility.js.map +1 -1
  22. package/src/lib/common/firestore/accessor/index.d.ts +2 -0
  23. package/src/lib/common/firestore/accessor/index.js +2 -0
  24. package/src/lib/common/firestore/accessor/index.js.map +1 -1
  25. package/src/lib/common/firestore/collection/collection.d.ts +37 -1
  26. package/src/lib/common/firestore/collection/collection.js.map +1 -1
  27. package/src/lib/common/firestore/query/constraint.d.ts +5 -0
  28. package/src/lib/common/firestore/query/constraint.js +8 -2
  29. package/src/lib/common/firestore/query/constraint.js.map +1 -1
  30. package/src/lib/common/firestore/snapshot/snapshot.d.ts +7 -4
  31. package/src/lib/common/firestore/snapshot/snapshot.field.d.ts +45 -5
  32. package/src/lib/common/firestore/snapshot/snapshot.field.js +67 -2
  33. package/src/lib/common/firestore/snapshot/snapshot.field.js.map +1 -1
  34. package/src/lib/common/firestore/snapshot/snapshot.js +2 -1
  35. package/src/lib/common/firestore/snapshot/snapshot.js.map +1 -1
  36. package/src/lib/common/firestore/types.d.ts +2 -2
  37. package/src/lib/common/function/action.d.ts +4 -0
  38. package/src/lib/common/model/function.d.ts +21 -7
  39. package/src/lib/common/model/function.js +17 -2
  40. package/src/lib/common/model/function.js.map +1 -1
  41. package/src/lib/common/model/model/model.loader.d.ts +3 -4
  42. package/src/lib/common/model/model/model.loader.js.map +1 -1
  43. package/src/lib/common/model/model.service.d.ts +27 -6
  44. package/src/lib/common/model/model.service.js +36 -31
  45. package/src/lib/common/model/model.service.js.map +1 -1
  46. package/src/lib/common/model/permission/permission.service.role.d.ts +13 -8
  47. package/src/lib/common/model/permission/permission.service.role.js +18 -0
  48. package/src/lib/common/model/permission/permission.service.role.js.map +1 -1
  49. package/test/CHANGELOG.md +19 -0
  50. package/test/package.json +8 -7
  51. package/test/src/lib/common/firestore.mock.item.d.ts +46 -2
  52. package/test/src/lib/common/firestore.mock.item.fixture.d.ts +2 -0
  53. package/test/src/lib/common/firestore.mock.item.fixture.js +6 -0
  54. package/test/src/lib/common/firestore.mock.item.fixture.js.map +1 -1
  55. package/test/src/lib/common/firestore.mock.item.js +67 -1
  56. package/test/src/lib/common/firestore.mock.item.js.map +1 -1
  57. package/test/src/lib/common/firestore.mock.item.service.d.ts +6 -1
  58. package/test/src/lib/common/firestore.mock.item.service.js +13 -1
  59. package/test/src/lib/common/firestore.mock.item.service.js.map +1 -1
  60. package/test/src/lib/common/test.driver.accessor.js +32 -7
  61. package/test/src/lib/common/test.driver.accessor.js.map +1 -1
  62. package/test/src/lib/common/test.driver.query.js +69 -0
  63. package/test/src/lib/common/test.driver.query.js.map +1 -1
@@ -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 aspecific function for deleting models.
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":";;;AAEA;;GAEG;AACU,QAAA,6BAA6B,GAAG,aAAa,CAAC;AAM3D;;GAEG;AACU,QAAA,6BAA6B,GAAG,aAAa,CAAC"}
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: ModelKey, context: C): D;
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: ModelKey): D;
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":";;;AAwBA,SAAgB,mBAAmB,CAA0E,sBAA4E;IACvL,OAAO;QACL,eAAe,CAAC,GAAa,EAAE,OAAU;YACvC,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
+ {"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
- export declare type InModelContextFirebaseModelServiceFactory<C, T, D extends FirestoreDocument<T> = FirestoreDocument<T>, R extends GrantedRole = GrantedRole> = (model: D) => InModelContextFirebaseModelService<C, T, D, R>;
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 = (model) => {
32
- const inModelContextService = {
33
- model,
34
- roleMap: () => service.roleMapForModel(model),
35
- roleReader: () => (0, permission_service_role_1.contextGrantedModelRolesReader)(inModelContextService)
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 firebaseModelsService = (type, context) => {
78
+ const firebaseModelsServiceFunction = (type, context) => {
68
79
  const firebaseModelService = services[type];
69
- const contextWithService = Object.assign(Object.assign({}, context), { service: firebaseModelsService });
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 firebaseModelsService;
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
- // TODO: there may be a way to set this up, and it would be ideal (to just pass in the model and get the model's collection name and return a properly typed object) but the collection name isn't available in typing so
91
- export interface InModelContextFirebaseModelsService<C, T, D extends FirestoreDocument<T> = FirestoreDocument<T>, R extends GrantedRole = GrantedRole> extends InModelContextFirebaseModelPermissionService<C, T, D, R> {}
92
- export type InModelContextFirebaseModelsServiceFactory<Z, K extends FirestoreModelIdentity = FirestoreModelIdentity> = Z extends InContextFirebaseModelsService<infer 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> ? (model: D) => InModelContextFirebaseModelsService<C, T, D, R> : never : never) : never) : never;
93
-
94
- export function inModelContextFirebaseModelsServiceFactory<Z extends InContextFirebaseModelsService<FirebaseModelsService<X, C>>, X extends FirebaseModelsServiceFactory<C, K>, C extends FirebaseModelServiceContext, K extends FirestoreModelIdentity = FirestoreModelIdentity>(firebaseModelsService: Z): InModelContextFirebaseModelsServiceFactory<FirebaseModelsService<X, C>, K> {
95
- // the typings break down here when getting the intended FirestoreDocument type, but the InModelContextFirebaseModelServiceFactory will infer the correct typings in use.
96
- const inModelContextFirebaseModelsServiceFactory: InModelContextFirebaseModelsServiceFactory<Z, K> = (<K extends keyof X, T, D extends FirestoreDocument<T>, R extends GrantedRole = GrantedRole>(model: D) => {
97
-
98
- firebaseModelsService(model.modelType as K)
99
-
100
- const inModelContextService: InModelContextFirebaseModelService<C, T, D, R> = {
101
- roleMap: () => typeService.roleMapForModel(model)
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":"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"}
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): void;
11
- assertHasRoles(setIncludes: SetIncludesMode, roles: ArrayOrValue<R>): void;
12
- assertContainsRoles(setIncludes: SetIncludesMode, roles: ArrayOrValue<R>): void;
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): void;
25
- assertHasRoles(setIncludes: SetIncludesMode, roles: ArrayOrValue<R>): void;
26
- assertContainsRoles(setIncludes: SetIncludesMode, roles: ArrayOrValue<R>): void;
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;IACH,CAAC;IAED,cAAc,CAAC,WAA4B,EAAE,KAAsB;QACjE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAC,EAAE;YACtC,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;SAClC;IACH,CAAC;IAED,mBAAmB,CAAC,WAA4B,EAAE,KAAsB;QACtE,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,KAAK,CAAC,EAAE;YAC3C,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;SAClC;IACH,CAAC;IAED,oBAAoB,CAAC,IAAsB;;QACzC,MAAM,KAAK,GAAG,MAAA,MAAA,MAAA,IAAI,CAAC,wBAAwB,CAAC,OAAO,EAAC,mBAAmB,mDAAG,IAAI,CAAC,wBAAwB,EAAE,IAAI,CAAC,mCAAI,IAAI,KAAK,CAAC,oDAAoD,CAAC,IAAI,CAAC,wBAAwB,EAAE,IAAI,CAAC,CAAC,CAAC;QACvN,MAAM,KAAK,CAAC;IACd,CAAC;CACF;AAjDD,wFAiDC;AAED;;GAEG;AACH,SAAgB,8BAA8B,CAA0I,OAAiE;IACvP,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,sCAAsC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtF,CAAC;AAFD,wEAEC;AAED;;;;;;GAMG;AACH,SAAgB,oDAAoD,CAAC,wBAAmG,EAAE,KAAiC;;IACzM,IAAI,OAAO,GAAG,uBAAuB,MAAA,wBAAwB,CAAC,IAAI,0CAAE,QAAQ,CAAC,SAAS,MAAM,MAAA,wBAAwB,CAAC,IAAI,0CAAE,QAAQ,CAAC,EAAE,IAAI,CAAC;IAE3I,IAAI,KAAK,KAAI,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,MAAM,CAAA,EAAE;QAC1B,OAAO,GAAG,GAAG,OAAO,uBAAuB,KAAK,GAAG,CAAC;KACrD;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AARD,oHAQC"}
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,25 @@
2
2
 
3
3
  This file was generated using [@jscutlery/semver](https://github.com/jscutlery/semver).
4
4
 
5
+ # [7.1.0](https://github.com/dereekb/dbx-components/compare/v7.0.1-dev...v7.1.0) (2022-06-06)
6
+
7
+
8
+ ### Features
9
+
10
+ * added interceptAccessorFactory() ([9833539](https://github.com/dereekb/dbx-components/commit/98335398eaa6a3ee363bdf64a440d5438bbefb24))
11
+ * added loadDocumentForId() to FirestoreDocumentAccessor ([3728145](https://github.com/dereekb/dbx-components/commit/372814540064ff4b40be032d57ddda12a8698d53))
12
+ * added whereDocumentId() ([7f5f5b8](https://github.com/dereekb/dbx-components/commit/7f5f5b8a56b2e0ad2e43308cfd87b4f8b8503c59))
13
+
14
+
15
+
16
+ ## [7.0.1](https://github.com/dereekb/dbx-components/compare/v7.0.0-dev...v7.0.1) (2022-06-05)
17
+
18
+
19
+
20
+ # [7.0.0](https://github.com/dereekb/dbx-components/compare/v6.0.0-dev...v7.0.0) (2022-06-05)
21
+
22
+
23
+
5
24
  # [6.0.0](https://github.com/dereekb/dbx-components/compare/v5.3.0-dev...v6.0.0) (2022-06-03)
6
25
 
7
26
 
package/test/package.json CHANGED
@@ -1,27 +1,28 @@
1
1
  {
2
2
  "name": "@dereekb/firebase/test",
3
- "version": "6.0.0",
3
+ "version": "7.1.0",
4
4
  "main": "./src/index.js",
5
5
  "typings": "./src/index.d.ts",
6
6
  "dependencies": {},
7
7
  "peerDependencies": {
8
- "@dereekb/util/test": "6.0.0",
9
- "@dereekb/util": "6.0.0",
8
+ "@dereekb/util/test": "7.1.0",
9
+ "@dereekb/util": "7.1.0",
10
10
  "make-error": "^1.3.0",
11
+ "ts-essentials": "^9.1.2",
11
12
  "extra-set": "^2.2.11",
12
- "@dereekb/firebase": "6.0.0",
13
+ "@dereekb/firebase": "7.1.0",
13
14
  "rxjs": "^7.0.0",
14
15
  "rxfire": "^6.0.3",
15
16
  "firebase": "^9.8.0",
16
- "@dereekb/rxjs": "6.0.0",
17
+ "@dereekb/rxjs": "7.1.0",
17
18
  "ms": "^3.0.0-canary.1",
18
- "@dereekb/date": "6.0.0",
19
+ "@dereekb/date": "7.1.0",
19
20
  "class-transformer": "^0.5.1",
20
21
  "date-fns": "^2.28.0",
21
22
  "class-validator": "^0.13.2",
22
23
  "date-fns-tz": "^1.3.0",
23
24
  "rrule": "git+https://git@github.com/dereekb/rrule.git#17adf5708d6567b4d01a3a8afd106261421ea492",
24
- "@dereekb/model": "6.0.0",
25
+ "@dereekb/model": "7.1.0",
25
26
  "tslib": "^2.0.0"
26
27
  }
27
28
  }
@@ -1,7 +1,7 @@
1
1
  import { Maybe } from '@dereekb/util';
2
- import { CollectionReference, FirestoreCollection, FirestoreContext, AbstractFirestoreDocument, SingleItemFirestoreCollection, FirestoreCollectionWithParent, AbstractFirestoreDocumentWithParent, ExpectedFirestoreModelData, FirestoreModelData, CollectionGroup, FirestoreCollectionGroup, FirestoreModelIdentity } from '@dereekb/firebase';
2
+ import { CollectionReference, FirestoreCollection, FirestoreContext, AbstractFirestoreDocument, SingleItemFirestoreCollection, FirestoreCollectionWithParent, AbstractFirestoreDocumentWithParent, ExpectedFirestoreModelData, FirestoreModelData, CollectionGroup, FirestoreCollectionGroup, FirestoreModelIdentity, UserRelated, UserRelatedById } from '@dereekb/firebase';
3
3
  import { GrantedReadRole } from '@dereekb/model';
4
- export declare type MockItemTypes = typeof mockItemIdentity | typeof mockItemPrivateIdentity | typeof mockItemSubItemIdentity | typeof mockItemDeepSubItemIdentity;
4
+ export declare type MockItemTypes = typeof mockItemIdentity | typeof mockItemPrivateIdentity | typeof mockItemUserIdentity | typeof mockItemSubItemIdentity | typeof mockItemDeepSubItemIdentity;
5
5
  export declare const mockItemIdentity: FirestoreModelIdentity<"mockItem">;
6
6
  /**
7
7
  * Converted data for a test item in our firestore collection.
@@ -92,6 +92,50 @@ export declare function mockItemPrivateFirestoreCollection(firestoreContext: Fir
92
92
  export declare function mockItemPrivateCollectionReference(context: FirestoreContext): CollectionGroup<MockItemPrivate>;
93
93
  export declare type MockItemPrivateFirestoreCollectionGroup = FirestoreCollectionGroup<MockItemPrivate, MockItemPrivateDocument>;
94
94
  export declare function mockItemPrivateFirestoreCollectionGroup(firestoreContext: FirestoreContext): MockItemPrivateFirestoreCollectionGroup;
95
+ export declare const mockItemUserIdentity: FirestoreModelIdentity<"mockItemUser">;
96
+ /**
97
+ * An item associated per user to this item.
98
+ */
99
+ export interface MockItemUser extends UserRelated, UserRelatedById {
100
+ name: string;
101
+ }
102
+ export declare type MockItemUserRoles = GrantedReadRole | 'admin';
103
+ /**
104
+ * FirestoreDocument for MockItem
105
+ */
106
+ export declare class MockItemUserDocument extends AbstractFirestoreDocument<MockItemUser, MockItemUserDocument> {
107
+ get modelIdentity(): FirestoreModelIdentity<"mockItemUser">;
108
+ }
109
+ export declare type MockItemUserData = FirestoreModelData<MockItemUser, {}>;
110
+ /**
111
+ * Firestore collection path name.
112
+ */
113
+ export declare const mockItemUserCollectionName = "mockItemUser";
114
+ export declare const mockItemUserIdentifier = "0";
115
+ /**
116
+ * Used to build a FirestoreDataConverter. Fields are configured via configuration. See the SnapshotConverterFunctions for more info.
117
+ */
118
+ export declare const mockItemUserConverter: import("@dereekb/firebase").SnapshotConverterFunctions<{
119
+ name: string;
120
+ uid: string;
121
+ }, Partial<import("@dereekb/util").ReplaceType<{
122
+ name: string;
123
+ uid: string;
124
+ }, import("@dereekb/util").MaybeMap<object>, any>>>;
125
+ /**
126
+ * Used to build a mockItemCollection from a firestore instance with a converter setup.
127
+ *
128
+ * @param firestore
129
+ * @returns
130
+ */
131
+ export declare function mockItemUserCollectionReferenceFactory(context: FirestoreContext): (parent: MockItemDocument) => CollectionReference<MockItemUser>;
132
+ export declare const mockItemUserAccessorFactory: import("@dereekb/firebase").InterceptAccessorFactoryFunction<MockItemUser, import("@dereekb/firebase").DocumentData>;
133
+ export declare type MockItemUserFirestoreCollection = FirestoreCollectionWithParent<MockItemUser, MockItem, MockItemUserDocument>;
134
+ export declare type MockItemUserFirestoreCollectionFactory = (parent: MockItemDocument) => MockItemUserFirestoreCollection;
135
+ export declare function mockItemUserFirestoreCollection(firestoreContext: FirestoreContext): MockItemUserFirestoreCollectionFactory;
136
+ export declare function mockItemUserCollectionReference(context: FirestoreContext): CollectionGroup<MockItemUser>;
137
+ export declare type MockItemUserFirestoreCollectionGroup = FirestoreCollectionGroup<MockItemUser, MockItemUserDocument>;
138
+ export declare function mockItemUserFirestoreCollectionGroup(firestoreContext: FirestoreContext): MockItemUserFirestoreCollectionGroup;
95
139
  export declare const mockItemSubItemIdentity: FirestoreModelIdentity<"mockItemSub">;
96
140
  /**
97
141
  * Data for a sub item in our firestore collection.
@@ -10,6 +10,8 @@ export declare class MockItemCollectionFixtureInstance {
10
10
  get mockItemPrivateCollection(): import("./firestore.mock.item").MockItemPrivateFirestoreCollectionFactory;
11
11
  get mockItemSubItemCollection(): import("./firestore.mock.item").MockItemSubItemFirestoreCollectionFactory;
12
12
  get mockItemSubItemCollectionGroup(): import("./firestore.mock.item").MockItemSubItemFirestoreCollectionGroup;
13
+ get mockItemUserCollection(): import("./firestore.mock.item").MockItemUserFirestoreCollectionFactory;
14
+ get mockItemUserCollectionGroup(): import("./firestore.mock.item").MockItemUserFirestoreCollectionGroup;
13
15
  get mockItemDeepSubItemCollection(): import("./firestore.mock.item").MockItemDeepSubItemFirestoreCollectionFactory;
14
16
  get mockItemDeepSubItemCollectionGroup(): import("./firestore.mock.item").MockItemDeepSubItemFirestoreCollectionGroup;
15
17
  constructor(fixture: MockItemCollectionFixture);
@@ -24,6 +24,12 @@ class MockItemCollectionFixtureInstance {
24
24
  get mockItemSubItemCollectionGroup() {
25
25
  return this.collections.mockItemSubItemCollectionGroup;
26
26
  }
27
+ get mockItemUserCollection() {
28
+ return this.collections.mockItemUserCollectionFactory;
29
+ }
30
+ get mockItemUserCollectionGroup() {
31
+ return this.collections.mockItemUserCollectionGroup;
32
+ }
27
33
  get mockItemDeepSubItemCollection() {
28
34
  return this.collections.mockItemDeepSubItemCollectionFactory;
29
35
  }
@@ -1 +1 @@
1
- {"version":3,"file":"firestore.mock.item.fixture.js","sourceRoot":"","sources":["../../../../../../../packages/firebase/test/src/lib/common/firestore.mock.item.fixture.ts"],"names":[],"mappings":";;;AACA,6CAAkJ;AAGlJ,+EAAwE;AAExE,kCAAkC;AAClC,MAAa,iCAAiC;IA8B5C,YAAqB,OAAkC;QAAlC,YAAO,GAAP,OAAO,CAA2B;QA7B9C,gBAAW,GAAG,IAAA,qDAAuB,EAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IA6BlB,CAAC;IA3B3D,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC;IAC7C,CAAC;IACD,IAAI,mBAAmB;QACrB,OAAO,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC;IAC7C,CAAC;IAED,IAAI,yBAAyB;QAC3B,OAAO,IAAI,CAAC,WAAW,CAAC,gCAAgC,CAAC;IAC3D,CAAC;IAED,IAAI,yBAAyB;QAC3B,OAAO,IAAI,CAAC,WAAW,CAAC,gCAAgC,CAAC;IAC3D,CAAC;IAED,IAAI,8BAA8B;QAChC,OAAO,IAAI,CAAC,WAAW,CAAC,8BAA8B,CAAC;IACzD,CAAC;IAED,IAAI,6BAA6B;QAC/B,OAAO,IAAI,CAAC,WAAW,CAAC,oCAAoC,CAAC;IAC/D,CAAC;IAED,IAAI,kCAAkC;QACpC,OAAO,IAAI,CAAC,WAAW,CAAC,kCAAkC,CAAC;IAC7D,CAAC;CAGF;AA/BD,8EA+BC;AAED;;GAEG;AACH,MAAa,yBAA0B,SAAQ,yCAAkG;CAAG;AAApJ,8DAAoJ;AAIpJ,SAAgB,uBAAuB,CAAC,MAAgD;IACtF,OAAO,IAAA,yCAAkC,EAAC;QACxC,WAAW,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,yBAAyB,CAAC,OAAO,CAAC;QAChE,YAAY,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,iCAAiC,CAAC,IAAI,CAAC;QACnE,gBAAgB,EAAE,CAAC,QAA2C,EAAE,EAAE;YAChE,qDAAqD;QACvD,CAAC;QACD,sEAAsE;KACvE,CAAC,CAAC;AACL,CAAC;AATD,0DASC"}
1
+ {"version":3,"file":"firestore.mock.item.fixture.js","sourceRoot":"","sources":["../../../../../../../packages/firebase/test/src/lib/common/firestore.mock.item.fixture.ts"],"names":[],"mappings":";;;AACA,6CAAkJ;AAGlJ,+EAAwE;AAExE,kCAAkC;AAClC,MAAa,iCAAiC;IAsC5C,YAAqB,OAAkC;QAAlC,YAAO,GAAP,OAAO,CAA2B;QArC9C,gBAAW,GAAG,IAAA,qDAAuB,EAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAqClB,CAAC;IAnC3D,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC;IAC7C,CAAC;IACD,IAAI,mBAAmB;QACrB,OAAO,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC;IAC7C,CAAC;IAED,IAAI,yBAAyB;QAC3B,OAAO,IAAI,CAAC,WAAW,CAAC,gCAAgC,CAAC;IAC3D,CAAC;IAED,IAAI,yBAAyB;QAC3B,OAAO,IAAI,CAAC,WAAW,CAAC,gCAAgC,CAAC;IAC3D,CAAC;IAED,IAAI,8BAA8B;QAChC,OAAO,IAAI,CAAC,WAAW,CAAC,8BAA8B,CAAC;IACzD,CAAC;IAED,IAAI,sBAAsB;QACxB,OAAO,IAAI,CAAC,WAAW,CAAC,6BAA6B,CAAC;IACxD,CAAC;IAED,IAAI,2BAA2B;QAC7B,OAAO,IAAI,CAAC,WAAW,CAAC,2BAA2B,CAAC;IACtD,CAAC;IAED,IAAI,6BAA6B;QAC/B,OAAO,IAAI,CAAC,WAAW,CAAC,oCAAoC,CAAC;IAC/D,CAAC;IAED,IAAI,kCAAkC;QACpC,OAAO,IAAI,CAAC,WAAW,CAAC,kCAAkC,CAAC;IAC7D,CAAC;CAGF;AAvCD,8EAuCC;AAED;;GAEG;AACH,MAAa,yBAA0B,SAAQ,yCAAkG;CAAG;AAApJ,8DAAoJ;AAIpJ,SAAgB,uBAAuB,CAAC,MAAgD;IACtF,OAAO,IAAA,yCAAkC,EAAC;QACxC,WAAW,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,yBAAyB,CAAC,OAAO,CAAC;QAChE,YAAY,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,iCAAiC,CAAC,IAAI,CAAC;QACnE,gBAAgB,EAAE,CAAC,QAA2C,EAAE,EAAE;YAChE,qDAAqD;QACvD,CAAC;QACD,sEAAsE;KACvE,CAAC,CAAC;AACL,CAAC;AATD,0DASC"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.mockItemDeepSubItemFirestoreCollectionGroup = exports.mockItemDeepSubItemCollectionReference = exports.mockItemDeepSubItemFirestoreCollection = exports.mockItemDeepSubItemCollectionReferenceFactory = exports.mockItemDeepSubItemConverter = exports.MockItemDeepSubItemDocument = exports.mockItemDeepSubItemIdentity = exports.mockItemSubItemFirestoreCollectionGroup = exports.mockItemSubItemCollectionReference = exports.mockItemSubItemFirestoreCollection = exports.mockItemSubItemCollectionReferenceFactory = exports.mockItemSubItemConverter = exports.MockItemSubItemDocument = exports.mockItemSubItemIdentity = exports.mockItemPrivateFirestoreCollectionGroup = exports.mockItemPrivateCollectionReference = exports.mockItemPrivateFirestoreCollection = exports.mockItemPrivateCollectionReferenceFactory = exports.mockItemPrivateConverter = exports.mockItemPrivateIdentifier = exports.mockItemPrivateCollectionName = exports.MockItemPrivateDocument = exports.mockItemPrivateIdentity = exports.mockItemFirestoreCollection = exports.mockItemCollectionReference = exports.mockItemConverter = exports.MockItemDocument = exports.mockItemIdentity = void 0;
3
+ exports.mockItemDeepSubItemFirestoreCollectionGroup = exports.mockItemDeepSubItemCollectionReference = exports.mockItemDeepSubItemFirestoreCollection = exports.mockItemDeepSubItemCollectionReferenceFactory = exports.mockItemDeepSubItemConverter = exports.MockItemDeepSubItemDocument = exports.mockItemDeepSubItemIdentity = exports.mockItemSubItemFirestoreCollectionGroup = exports.mockItemSubItemCollectionReference = exports.mockItemSubItemFirestoreCollection = exports.mockItemSubItemCollectionReferenceFactory = exports.mockItemSubItemConverter = exports.MockItemSubItemDocument = exports.mockItemSubItemIdentity = exports.mockItemUserFirestoreCollectionGroup = exports.mockItemUserCollectionReference = exports.mockItemUserFirestoreCollection = exports.mockItemUserAccessorFactory = exports.mockItemUserCollectionReferenceFactory = exports.mockItemUserConverter = exports.mockItemUserIdentifier = exports.mockItemUserCollectionName = exports.MockItemUserDocument = exports.mockItemUserIdentity = exports.mockItemPrivateFirestoreCollectionGroup = exports.mockItemPrivateCollectionReference = exports.mockItemPrivateFirestoreCollection = exports.mockItemPrivateCollectionReferenceFactory = exports.mockItemPrivateConverter = exports.mockItemPrivateIdentifier = exports.mockItemPrivateCollectionName = exports.MockItemPrivateDocument = exports.mockItemPrivateIdentity = exports.mockItemFirestoreCollection = exports.mockItemCollectionReference = exports.mockItemConverter = exports.MockItemDocument = exports.mockItemIdentity = void 0;
4
4
  const util_1 = require("@dereekb/util");
5
5
  const firebase_1 = require("@dereekb/firebase");
6
6
  // MARK: Mock Item
@@ -103,6 +103,72 @@ function mockItemPrivateFirestoreCollectionGroup(firestoreContext) {
103
103
  });
104
104
  }
105
105
  exports.mockItemPrivateFirestoreCollectionGroup = mockItemPrivateFirestoreCollectionGroup;
106
+ // MARK: MockItemUser
107
+ exports.mockItemUserIdentity = (0, firebase_1.firestoreModelIdentity)('mockItemUser');
108
+ /**
109
+ * FirestoreDocument for MockItem
110
+ */
111
+ class MockItemUserDocument extends firebase_1.AbstractFirestoreDocument {
112
+ get modelIdentity() {
113
+ return exports.mockItemUserIdentity;
114
+ }
115
+ }
116
+ exports.MockItemUserDocument = MockItemUserDocument;
117
+ /**
118
+ * Firestore collection path name.
119
+ */
120
+ exports.mockItemUserCollectionName = 'mockItemUser';
121
+ exports.mockItemUserIdentifier = '0';
122
+ /**
123
+ * Used to build a FirestoreDataConverter. Fields are configured via configuration. See the SnapshotConverterFunctions for more info.
124
+ */
125
+ exports.mockItemUserConverter = (0, firebase_1.snapshotConverterFunctions)({
126
+ fieldConversions: (0, util_1.modelFieldConversions)({
127
+ uid: (0, firebase_1.firestoreString)(),
128
+ name: (0, firebase_1.firestoreString)()
129
+ })
130
+ });
131
+ /**
132
+ * Used to build a mockItemCollection from a firestore instance with a converter setup.
133
+ *
134
+ * @param firestore
135
+ * @returns
136
+ */
137
+ function mockItemUserCollectionReferenceFactory(context) {
138
+ return (parent) => {
139
+ return context.subcollection(parent.documentRef, exports.mockItemUserCollectionName).withConverter(exports.mockItemUserConverter);
140
+ };
141
+ }
142
+ exports.mockItemUserCollectionReferenceFactory = mockItemUserCollectionReferenceFactory;
143
+ exports.mockItemUserAccessorFactory = (0, firebase_1.copyUserRelatedDataAccessorFactoryFunction)();
144
+ function mockItemUserFirestoreCollection(firestoreContext) {
145
+ const factory = mockItemUserCollectionReferenceFactory(firestoreContext);
146
+ return (parent) => {
147
+ return firestoreContext.firestoreCollectionWithParent({
148
+ itemsPerPage: 50,
149
+ collection: factory(parent),
150
+ accessorFactory: exports.mockItemUserAccessorFactory,
151
+ makeDocument: (a, d) => new MockItemUserDocument(a, d),
152
+ firestoreContext,
153
+ parent
154
+ });
155
+ };
156
+ }
157
+ exports.mockItemUserFirestoreCollection = mockItemUserFirestoreCollection;
158
+ function mockItemUserCollectionReference(context) {
159
+ return context.collectionGroup(exports.mockItemUserCollectionName).withConverter(exports.mockItemUserConverter);
160
+ }
161
+ exports.mockItemUserCollectionReference = mockItemUserCollectionReference;
162
+ function mockItemUserFirestoreCollectionGroup(firestoreContext) {
163
+ return firestoreContext.firestoreCollectionGroup({
164
+ itemsPerPage: 50,
165
+ queryLike: mockItemUserCollectionReference(firestoreContext),
166
+ accessorFactory: exports.mockItemUserAccessorFactory,
167
+ makeDocument: (accessor, documentAccessor) => new MockItemUserDocument(accessor, documentAccessor),
168
+ firestoreContext
169
+ });
170
+ }
171
+ exports.mockItemUserFirestoreCollectionGroup = mockItemUserFirestoreCollectionGroup;
106
172
  // MARK: MockItemSubItem
107
173
  exports.mockItemSubItemIdentity = (0, firebase_1.firestoreModelIdentity)('mockItemSub');
108
174
  /**