@nx-ddd/firestore 17.1.0 → 17.3.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/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # @NxDDD/Firestroe
1
+ # @NxDDD/Firestore
2
2
  `@nx-ddd/firestore` is a library that wraps Firestore in the Repository pattern. It uses the Adapter pattern to enable the same codebase to work with both FirebaseAdmin and Firebase.
3
3
 
4
4
  ## Install
@@ -12,15 +12,12 @@ $ npm i @nx-ddd/firestore
12
12
 
13
13
  ```ts
14
14
  // libs/common/infrastructure/repositories/user.repository
15
- import 'reflect-metadata';
16
- import '@angular/compiler';
17
15
  import { inject, Injectable } from '@angular/core';
18
16
  import { TransformToDayjs } from '@nx-ddd/common/domain/models';
17
+ import { bootstrap } from '@nx-ddd/core';
18
+ import { FirestoreRepository, Firestore, injectConverter } from '@nx-ddd/firestore';
19
19
  import { IsDayjs } from 'class-validator-extended';
20
20
  import dayjs from 'dayjs';
21
- import { BaseFirestoreRepository, Firestore, injectConverter, pathBuilderFactory } from '@nx-ddd/firestore';
22
- import { FirestoreAdapter } from '@nx-ddd/firestore/adapters/base';
23
- import { bootstrap } from '@nx-ddd/core/v2';
24
21
 
25
22
  export class User {
26
23
  @Firestore.ID() id: string;
@@ -30,11 +27,9 @@ export class User {
30
27
  }
31
28
 
32
29
  @Injectable({providedIn: 'root'})
33
- export class UserRepository extends BaseFirestoreRepository<User> {
34
- protected collectionPath = `users/:id`;
30
+ export class UserRepository extends FirestoreRepository<User> {
31
+ readonly collectionPath = `users/:id`;
35
32
  protected converter = injectConverter(User);
36
- protected pathBuilder = pathBuilderFactory(this.collectionPath);
37
- protected adapter = inject(FirestoreAdapter);
38
33
  }
39
34
  ```
40
35
 
@@ -43,8 +38,17 @@ Use `UserRepository` in NodeJS.
43
38
 
44
39
  ```ts
45
40
  // apps/api/src/app/main.ts
41
+ import 'reflect-metadata';
42
+ import '@angular/compiler';
46
43
  import { provideFirestoreAdapter } from '@nx-ddd/firestore/adapters/admin';
47
44
  import { UserRepository } from 'libs/common/infrastructure/repositories/user.repository';
45
+ import dayjs from 'dayjs';
46
+
47
+ import admin from 'firebase-admin';
48
+
49
+ admin.initializeApp({
50
+ credential: admin.credential.applicationDefault(),
51
+ });
48
52
 
49
53
  bootstrap([
50
54
  provideFirestoreAdapter(),
@@ -67,8 +71,14 @@ Use `UserRepository` in browser.
67
71
 
68
72
  ```ts
69
73
  // apps/app/src/app/main.ts
74
+ import 'reflect-metadata';
75
+ import '@angular/compiler';
70
76
  import { provideFirestoreAdapter } from '@nx-ddd/firestore/adapters/firebase';
71
77
  import { UserRepository } from 'libs/common/infrastructure/repositories/user.repository';
78
+ import { initializeApp } from "firebase/app";
79
+ import dayjs from 'dayjs';
80
+
81
+ const app = initializeApp({...});
72
82
 
73
83
  bootstrap([
74
84
  provideFirestoreAdapter(),
@@ -1,7 +1,17 @@
1
1
  import dayjs from 'dayjs';
2
2
  import admin from 'firebase-admin';
3
- import { DocumentReference, FirestoreCollection, FirestoreCollectionGroup } from '../../interfaces';
4
- import { FirestoreAdapter, QueryFn, WhereFilterOp } from '../base';
3
+ import { DocumentData, Transaction } from 'firebase-admin/firestore';
4
+ import { DocumentReference, CollectionReference as _CollectionReference, CollectionGroup as _CollectionGroup, Query as _Query } from '../../interfaces';
5
+ import { FirestoreAdapter, QueryFn as _QueryFn, WhereFilterOp } from '../base';
6
+ type CollectionReference<AppModelType = DocumentData, DbModelType extends DocumentData = DocumentData> = _CollectionReference<AppModelType, DbModelType, admin.firestore.CollectionReference<AppModelType, DbModelType>>;
7
+ type CollectionGroup<AppModelType = DocumentData, DbModelType extends DocumentData = DocumentData> = _CollectionGroup<AppModelType, DbModelType, admin.firestore.CollectionGroup<AppModelType, DbModelType>>;
8
+ type Query<AppModelType = DocumentData, DbModelType extends DocumentData = DocumentData> = _Query<AppModelType, DbModelType, admin.firestore.Query<AppModelType, DbModelType>>;
9
+ type QueryFn<AppModelType = DocumentData, DbModelType extends DocumentData = DocumentData> = _QueryFn<AppModelType, DbModelType, admin.firestore.Query>;
10
+ type Origin<AppModelType = DocumentData, DbModelType extends DocumentData = DocumentData> = admin.firestore.CollectionReference<AppModelType, DbModelType> | admin.firestore.CollectionGroup<AppModelType, DbModelType> | admin.firestore.Query<AppModelType, DbModelType>;
11
+ type CollectionLike<AppModelType = DocumentData, DbModelType extends DocumentData = DocumentData> = CollectionReference<AppModelType, DbModelType> | CollectionGroup<AppModelType, DbModelType> | Query<AppModelType, DbModelType>;
12
+ type InferCollectionLike<O extends Origin> = O extends admin.firestore.CollectionReference<infer A, infer B> ? CollectionReference<A, B> : O extends admin.firestore.CollectionGroup<infer A, infer B> ? CollectionGroup<A, B> : O extends admin.firestore.Query<infer A, infer B> ? Query<A, B> : never;
13
+ export declare function wrapCollectionLike<O extends Origin>(origin: O): InferCollectionLike<O>;
14
+ export declare function unwrapCollectionLike<AppModelType = DocumentData, DbModelType extends DocumentData = DocumentData>(collection: CollectionLike<AppModelType, DbModelType>): Origin<AppModelType, DbModelType>;
5
15
  export declare class AdminFirestoreAdapter extends FirestoreAdapter<dayjs.Dayjs> {
6
16
  protected firestore: admin.firestore.Firestore;
7
17
  get FieldValue(): typeof admin.firestore.FieldValue;
@@ -13,18 +23,17 @@ export declare class AdminFirestoreAdapter extends FirestoreAdapter<dayjs.Dayjs>
13
23
  convertDateToTimestamp(date: dayjs.Dayjs): admin.firestore.Timestamp;
14
24
  convertTimestampToDate(timestamp: admin.firestore.Timestamp): dayjs.Dayjs;
15
25
  doc(path: string): DocumentReference<any, admin.firestore.DocumentReference>;
16
- collection(path: string): FirestoreCollection<any, admin.firestore.CollectionReference>;
17
- collectionGroup(collectionId: string): FirestoreCollectionGroup<any>;
18
- runTransaction(fn: any): Promise<unknown>;
19
- query<Data>(collection: FirestoreCollection<Data>, ...queryFnArray: QueryFn<Data>[]): any;
20
- where<Data>(key: string, evaluation: WhereFilterOp, value: unknown): QueryFn<Data>;
21
- orderBy<Data>(key: string, order?: 'asc' | 'desc'): QueryFn<Data>;
22
- limit<Data>(n: number): QueryFn<Data>;
26
+ collection<AppModelType = DocumentData, DbModelType extends DocumentData = DocumentData>(path: string): CollectionReference<AppModelType, DbModelType>;
27
+ collectionGroup<AppModelType = DocumentData, DbModelType extends DocumentData = DocumentData>(collectionId: string): CollectionGroup<AppModelType, DbModelType>;
28
+ runTransaction<T>(updateFunction: (transaction: Transaction) => Promise<T>): Promise<T>;
29
+ query<AppModelType = DocumentData, DbModelType extends DocumentData = DocumentData>(collection: CollectionLike<AppModelType, DbModelType>, ...queryFnArray: QueryFn<AppModelType, DbModelType>[]): Query<AppModelType, DbModelType>;
30
+ where<AppModelType = DocumentData, DbModelType extends DocumentData = DocumentData>(key: string, evaluation: WhereFilterOp, value: unknown): QueryFn<AppModelType, DbModelType>;
31
+ orderBy<AppModelType = DocumentData, DbModelType extends DocumentData = DocumentData>(key: string, order?: 'asc' | 'desc'): QueryFn<AppModelType, DbModelType>;
32
+ limit<AppModelType = DocumentData, DbModelType extends DocumentData = DocumentData>(n: number): QueryFn<AppModelType, DbModelType>;
23
33
  batch(): admin.firestore.WriteBatch;
24
34
  }
25
- export declare class AdminFirestoreModule {
26
- }
27
35
  export declare function provideFirestoreAdapter(): {
28
36
  provide: typeof FirestoreAdapter;
29
37
  useClass: new () => FirestoreAdapter<any>;
30
38
  };
39
+ export {};
@@ -1,8 +1,29 @@
1
1
  import { __decorate } from "tslib";
2
- import { Injectable, NgModule } from '@angular/core';
2
+ import { Injectable } from '@angular/core';
3
3
  import dayjs from 'dayjs';
4
4
  import admin from 'firebase-admin';
5
+ import { Subject } from 'rxjs';
5
6
  import { FirestoreAdapter, provideFirestoreAdapter as _provideFirestoreAdapter } from '../base';
7
+ export function wrapCollectionLike(origin) {
8
+ return {
9
+ __ref: origin,
10
+ stateChanges: () => {
11
+ const subject = new Subject();
12
+ origin.onSnapshot(snapshot => {
13
+ const actions = snapshot.docChanges().map(change => ({
14
+ type: change.type, payload: { doc: change.doc },
15
+ }));
16
+ subject.next(actions);
17
+ });
18
+ return subject.asObservable();
19
+ },
20
+ get: () => origin.get(),
21
+ count: () => origin.get().then(snapshot => snapshot.size),
22
+ };
23
+ }
24
+ export function unwrapCollectionLike(collection) {
25
+ return collection.__ref;
26
+ }
6
27
  let AdminFirestoreAdapter = class AdminFirestoreAdapter extends FirestoreAdapter {
7
28
  constructor() {
8
29
  super(...arguments);
@@ -47,16 +68,20 @@ let AdminFirestoreAdapter = class AdminFirestoreAdapter extends FirestoreAdapter
47
68
  };
48
69
  }
49
70
  collection(path) {
50
- return this.firestore.collection(path);
71
+ const collectionRef = this.firestore.collection(path);
72
+ return wrapCollectionLike(collectionRef);
51
73
  }
52
74
  collectionGroup(collectionId) {
53
- return this.firestore.collectionGroup(collectionId);
75
+ const collectionRef = this.firestore.collectionGroup(collectionId);
76
+ return wrapCollectionLike(collectionRef);
54
77
  }
55
- runTransaction(fn) {
56
- return this.firestore.runTransaction(fn);
78
+ runTransaction(updateFunction) {
79
+ return this.firestore.runTransaction(updateFunction);
57
80
  }
58
81
  query(collection, ...queryFnArray) {
59
- return queryFnArray.reduce((collectionOrQuery, queryFn) => queryFn(collectionOrQuery), collection);
82
+ const ref = unwrapCollectionLike(collection);
83
+ const query = queryFnArray.reduce((_ref, queryFn) => queryFn(_ref), ref);
84
+ return wrapCollectionLike(query);
60
85
  }
61
86
  where(key, evaluation, value) {
62
87
  return (collection) => collection.where(key, evaluation, value);
@@ -75,16 +100,6 @@ AdminFirestoreAdapter = __decorate([
75
100
  Injectable()
76
101
  ], AdminFirestoreAdapter);
77
102
  export { AdminFirestoreAdapter };
78
- let AdminFirestoreModule = class AdminFirestoreModule {
79
- };
80
- AdminFirestoreModule = __decorate([
81
- NgModule({
82
- providers: [
83
- { provide: FirestoreAdapter, useClass: AdminFirestoreAdapter },
84
- ],
85
- })
86
- ], AdminFirestoreModule);
87
- export { AdminFirestoreModule };
88
103
  export function provideFirestoreAdapter() {
89
104
  return _provideFirestoreAdapter(AdminFirestoreAdapter);
90
105
  }
@@ -1 +1 @@
1
- {"version":3,"file":"admin.adapter.js","sourceRoot":"","sources":["../../../../../../packages/@nx-ddd/firestore/src/lib/adapters/admin/admin.adapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"admin.adapter.js","sourceRoot":"","sources":["../../../../../../packages/@nx-ddd/firestore/src/lib/adapters/admin/admin.adapter.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,MAAM,gBAAgB,CAAC;AACnC,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAQ/B,OAAO,EAAE,gBAAgB,EAAsC,uBAAuB,IAAI,wBAAwB,EAAE,MAAM,SAAS,CAAC;AA2CpI,MAAM,UAAU,kBAAkB,CAAmB,MAAS;IAC5D,OAAO;QACL,KAAK,EAAE,MAAM;QACb,YAAY,EAAE,GAAG,EAAE;YACjB,MAAM,OAAO,GAAG,IAAI,OAAO,EAA+B,CAAC;YAC3D,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;gBAC3B,MAAM,OAAO,GAAG,QAAQ,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;oBACnD,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,EAAC,GAAG,EAAE,MAAM,CAAC,GAAG,EAAC;iBAC9C,CAAC,CAAC,CAAC;gBACJ,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACxB,CAAC,CAAC,CAAC;YACH,OAAO,OAAO,CAAC,YAAY,EAAE,CAAC;QAChC,CAAC;QACD,GAAG,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE;QACvB,KAAK,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC;KACvB,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,oBAAoB,CAIlC,UAAqD;IAErD,OAAO,UAAU,CAAC,KAAK,CAAC;AAC1B,CAAC;AAGM,IAAM,qBAAqB,GAA3B,MAAM,qBAAsB,SAAQ,gBAA6B;IAAjE;;QACK,cAAS,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;IAyG1C,CAAC;IAvGC,IAAI,UAAU;QACZ,OAAO,KAAK,CAAC,SAAS,CAAC,UAAU,CAAC;IACpC,CAAC;IAED,IAAI,SAAS;QACX,OAAO,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC;IACnC,CAAC;IAED,IAAI,SAAS;QACX,OAAO,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC;IACnC,CAAC;IAES,WAAW,CAAC,CAAM;QAC1B,OAAO,CAAC,YAAY,IAAI,CAAC,SAAS,CAAC;IACrC,CAAC;IAES,YAAY,CAAC,CAAM;QAC3B,OAAO,CAAC,YAAY,IAAI,CAAC,UAAU,CAAC;IACtC,CAAC;IAES,MAAM,CAAC,CAAM;QACrB,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC1B,CAAC;IAED,sBAAsB,CAAC,IAAiB;QACtC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE;YACzC,OAAO,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;SAC1D;QACD,MAAM,IAAI,KAAK,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAC;IAC3C,CAAC;IAED,sBAAsB,CAAC,SAAoC;QACzD,OAAO,KAAK,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAA;IAClC,CAAC;IAED,GAAG,CAAC,IAAY;QACd,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACxC,OAAO;YACL,KAAK,EAAE,MAAM;YACb,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC;YAC5D,GAAG,EAAE,CAAC,IAAI,EAAE,OAAQ,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC;YAClD,GAAG,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE;YACvB,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;YACrC,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE;SAC9B,CAAC;IACJ,CAAC;IAED,UAAU,CAGR,IAAY;QACZ,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACtD,OAAO,kBAAkB,CAAC,aAAa,CAAmD,CAAC;IAC7F,CAAC;IAED,eAAe,CAGb,YAAoB;QACpB,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;QACnE,OAAO,kBAAkB,CAAC,aAAa,CAA+C,CAAC;IACzF,CAAC;IAED,cAAc,CAAI,cAAwD;QACxE,OAAO,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;IACvD,CAAC;IAED,KAAK,CAIH,UAAqD,EACrD,GAAG,YAAkD;QAErD,MAAM,GAAG,GAAG,oBAAoB,CAA4B,UAAU,CAAC,CAAC;QACxE,MAAM,KAAK,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;QACzE,OAAO,kBAAkB,CAAC,KAAK,CAAqC,CAAC;IACvE,CAAC;IAED,KAAK,CAGH,GAAW,EAAE,UAAyB,EAAE,KAAc;QACtD,OAAO,CAAC,UAA6C,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;IACrG,CAAC;IAED,OAAO,CAGL,GAAW,EAAE,QAAwB,KAAK;QAC1C,OAAO,CAAC,UAA6C,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC3F,CAAC;IAED,KAAK,CAGH,CAAS;QACT,OAAO,CAAC,UAA6C,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAChF,CAAC;IAED,KAAK;QACH,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;IAChC,CAAC;CACF,CAAA;AA1GY,qBAAqB;IADjC,UAAU,EAAE;GACA,qBAAqB,CA0GjC;;AAED,MAAM,UAAU,uBAAuB;IACrC,OAAO,wBAAwB,CAAC,qBAAqB,CAAC,CAAC;AACzD,CAAC"}
@@ -1,5 +1,5 @@
1
- import type { FirestoreCollection, FirestoreCollectionGroup, FirestoreDocument, ToFirestoreData, Timestamp, FirestoreQuery, FieldValue } from '../../interfaces';
2
- export type QueryFn<Data> = (collection?: any) => any;
1
+ import type { CollectionReference, CollectionGroup, DocumentReference, ToFirestoreData, Timestamp, Query, FieldValue, DocumentData } from '../../interfaces';
2
+ export type QueryFn<AppModelType, DbModelType, R> = (collection?: any) => R;
3
3
  export type WhereFilterOp = '<' | '<=' | '==' | '!=' | '>=' | '>' | 'array-contains' | 'in' | 'array-contains-any' | 'not-in';
4
4
  export declare abstract class FirestoreAdapter<Date = any> {
5
5
  protected abstract isTimestamp(v: any): v is Timestamp;
@@ -10,15 +10,15 @@ export declare abstract class FirestoreAdapter<Date = any> {
10
10
  abstract get Timestamp(): any;
11
11
  abstract get FieldValue(): any;
12
12
  abstract get FieldPath(): any;
13
- abstract doc<Data>(path: string): FirestoreDocument<Data>;
14
- abstract collection<Data>(path: string): FirestoreCollection<Data>;
15
- abstract collectionGroup<Data>(collectionId: string): FirestoreCollectionGroup<Data>;
13
+ abstract doc<AppModelType = DocumentData, DbModelType extends DocumentData = DocumentData>(path: string): DocumentReference<AppModelType>;
14
+ abstract collection<AppModelType = DocumentData, DbModelType extends DocumentData = DocumentData>(path: string): CollectionReference<AppModelType, DbModelType>;
15
+ abstract collectionGroup<AppModelType = DocumentData, DbModelType extends DocumentData = DocumentData>(collectionId: string): CollectionGroup<AppModelType, DbModelType>;
16
+ abstract query<AppModelType = DocumentData, DbModelType extends DocumentData = DocumentData>(collection: CollectionReference<AppModelType, DbModelType>, ...queryFnArray: QueryFn<AppModelType, DbModelType, any>[]): Query<AppModelType, DbModelType>;
17
+ abstract where<AppModelType = DocumentData, DbModelType extends DocumentData = DocumentData>(key: string, evaluation: WhereFilterOp, value: unknown): QueryFn<AppModelType, DbModelType, any>;
18
+ abstract orderBy<AppModelType = DocumentData, DbModelType extends DocumentData = DocumentData>(key: string, order: 'asc' | 'desc'): QueryFn<AppModelType, DbModelType, any>;
19
+ abstract limit<AppModelType = DocumentData, DbModelType extends DocumentData = DocumentData>(n: number): QueryFn<AppModelType, DbModelType, any>;
16
20
  abstract runTransaction(fn: any): any;
17
21
  abstract batch(): any;
18
- abstract query<Data>(collection: FirestoreCollection<Data>, ...queryFnArray: QueryFn<Data>[]): FirestoreQuery<Data>;
19
- abstract where<Data>(key: string, evaluation: WhereFilterOp, value: unknown): QueryFn<Data>;
20
- abstract orderBy<Data>(key: string, order: 'asc' | 'desc'): QueryFn<Data>;
21
- abstract limit<Data>(n: number): QueryFn<Data>;
22
22
  toFirestoreData<Entity>(entity: Entity): ToFirestoreData<Entity, Date>;
23
23
  fromFirestoreData<Entity>(data: ToFirestoreData<Entity, Date>): Entity;
24
24
  toFirestore<T>(obj: object, Entity: new () => T): object;
@@ -1 +1 @@
1
- {"version":3,"file":"base.adapter.js","sourceRoot":"","sources":["../../../../../../packages/@nx-ddd/firestore/src/lib/adapters/base/base.adapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"base.adapter.js","sourceRoot":"","sources":["../../../../../../packages/@nx-ddd/firestore/src/lib/adapters/base/base.adapter.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,20 @@
1
1
  import { FieldValue, Timestamp, FieldPath } from 'firebase/firestore';
2
2
  import dayjs from 'dayjs';
3
- import { FirestoreAdapter, QueryFn, WhereFilterOp } from '../base';
4
- import { FirestoreCollection, FirestoreCollectionGroup, FirestoreDocument } from '../../interfaces';
3
+ import { FirestoreAdapter, QueryFn as _QueryFn, WhereFilterOp } from '../base';
4
+ import type firestore from 'firebase/firestore';
5
+ import { CollectionReference as _CollectionReference, CollectionGroup as _CollectionGroup, Query as _Query, DocumentReference, DocumentData } from '../../interfaces';
6
+ type CollectionReference<AppModelType = DocumentData, DbModelType extends DocumentData = DocumentData> = _CollectionReference<AppModelType, DbModelType, firestore.CollectionReference<AppModelType, DbModelType>>;
7
+ type CollectionGroup<AppModelType = DocumentData, DbModelType extends DocumentData = DocumentData> = _CollectionGroup<AppModelType, DbModelType, firestore.Query<AppModelType, DbModelType>>;
8
+ type Query<AppModelType = DocumentData, DbModelType extends DocumentData = DocumentData> = _Query<AppModelType, DbModelType, firestore.Query<AppModelType, DbModelType>>;
9
+ type QueryFn<AppModelType = DocumentData, DbModelType extends DocumentData = DocumentData> = _QueryFn<AppModelType, DbModelType, firestore.QueryConstraint>;
10
+ type Origin<AppModelType = DocumentData, DbModelType extends DocumentData = DocumentData> = firestore.CollectionReference<AppModelType, DbModelType> | firestore.Query<AppModelType, DbModelType> | firestore.Query<AppModelType, DbModelType>;
11
+ type CollectionLike<AppModelType = DocumentData, DbModelType extends DocumentData = DocumentData> = CollectionReference<AppModelType, DbModelType> | CollectionGroup<AppModelType, DbModelType> | Query<AppModelType, DbModelType>;
12
+ type InferCollectionLike<O extends Origin> = O extends firestore.CollectionReference<infer A, infer B> ? CollectionReference<A, B> : O extends firestore.Query<infer A, infer B> ? CollectionGroup<A, B> : O extends firestore.Query<infer A, infer B> ? Query<A, B> : never;
13
+ export declare function wrapCollectionLike<O extends Origin>(origin: O): InferCollectionLike<O>;
14
+ export declare function unwrapCollectionLike<AppModelType = DocumentData, DbModelType extends DocumentData = DocumentData>(collection: CollectionLike<AppModelType, DbModelType>): Origin<AppModelType, DbModelType>;
5
15
  export declare class FirebaseFirestoreAdapter extends FirestoreAdapter<dayjs.Dayjs> {
6
- firestore: import("@firebase/firestore").Firestore;
7
- constructor(firestore?: import("@firebase/firestore").Firestore);
16
+ firestore: firestore.Firestore;
17
+ constructor(firestore?: firestore.Firestore);
8
18
  get FieldValue(): typeof FieldValue;
9
19
  get Timestamp(): typeof Timestamp;
10
20
  get FieldPath(): FieldPath;
@@ -13,13 +23,14 @@ export declare class FirebaseFirestoreAdapter extends FirestoreAdapter<dayjs.Day
13
23
  protected isDate(v: any): v is dayjs.Dayjs;
14
24
  convertDateToTimestamp(date: dayjs.Dayjs): Timestamp;
15
25
  convertTimestampToDate(timestamp: Timestamp): dayjs.Dayjs;
16
- doc(path: string): FirestoreDocument<any>;
17
- collection(path: string): FirestoreCollection<any>;
18
- collectionGroup(collectionId: string): FirestoreCollectionGroup<any>;
26
+ doc(path: string): DocumentReference<any>;
27
+ collection<AppModelType = DocumentData, DbModelType extends DocumentData = DocumentData>(path: string): CollectionReference<AppModelType, DbModelType>;
28
+ collectionGroup<AppModelType = DocumentData, DbModelType extends DocumentData = DocumentData>(collectionId: string): CollectionGroup<AppModelType, DbModelType>;
29
+ query<AppModelType = DocumentData, DbModelType extends DocumentData = DocumentData>(collection: CollectionReference<AppModelType, DbModelType>, ...queryFnArray: QueryFn[]): Query<AppModelType, DbModelType>;
30
+ where<AppModelType = DocumentData, DbModelType extends DocumentData = DocumentData>(fieldPath: string, opStr: WhereFilterOp, value: unknown): QueryFn;
31
+ orderBy<AppModelType = DocumentData, DbModelType extends DocumentData = DocumentData>(key: string, order?: 'asc' | 'desc'): QueryFn;
32
+ limit<AppModelType = DocumentData, DbModelType extends DocumentData = DocumentData>(n: number): QueryFn;
19
33
  runTransaction(): void;
20
- query<Data>(collection: FirestoreCollection<Data>, ...queryFnArray: QueryFn<Data>[]): any;
21
- where<Data>(fieldPath: string, opStr: WhereFilterOp, value: unknown): QueryFn<Data>;
22
- orderBy<Data>(key: string, order?: 'asc' | 'desc'): QueryFn<Data>;
23
- limit<Data>(n: number): QueryFn<Data>;
24
- batch(): import("@firebase/firestore").WriteBatch;
34
+ batch(): firestore.WriteBatch;
25
35
  }
36
+ export {};
@@ -4,6 +4,26 @@ import dayjs from 'dayjs';
4
4
  import { Subject } from 'rxjs';
5
5
  import { FirestoreAdapter } from '../base';
6
6
  import { Injectable } from '@angular/core';
7
+ export function wrapCollectionLike(origin) {
8
+ return {
9
+ __ref: origin,
10
+ stateChanges: () => {
11
+ const subject = new Subject();
12
+ onSnapshot(origin, (snapshot) => subject.next(snapshot.docChanges().map(change => ({
13
+ type: change.type,
14
+ payload: {
15
+ doc: change.doc
16
+ },
17
+ }))));
18
+ return subject.asObservable();
19
+ },
20
+ get: () => getDocs(origin),
21
+ count: () => getDocs(origin).then(snapshot => snapshot.size),
22
+ };
23
+ }
24
+ export function unwrapCollectionLike(collection) {
25
+ return collection.__ref;
26
+ }
7
27
  let FirebaseFirestoreAdapter = class FirebaseFirestoreAdapter extends FirestoreAdapter {
8
28
  constructor(firestore = getFirestore()) {
9
29
  super();
@@ -44,44 +64,27 @@ let FirebaseFirestoreAdapter = class FirebaseFirestoreAdapter extends FirestoreA
44
64
  delete: () => deleteDoc(docRef),
45
65
  stateChanges: () => {
46
66
  const subject = new Subject();
47
- onSnapshot(docRef, (doc) => subject.next({ id: doc.id, ref: doc.ref, data: () => doc.data() }));
67
+ onSnapshot(docRef, (doc) => subject.next({
68
+ id: doc.id,
69
+ ref: doc.ref,
70
+ data: () => doc.data(),
71
+ get: (fieldPath) => doc.get(fieldPath),
72
+ }));
48
73
  return subject.asObservable();
49
74
  },
50
75
  };
51
76
  }
52
77
  collection(path) {
53
78
  const ref = collection(this.firestore, path);
54
- return {
55
- __ref: ref,
56
- stateChanges: () => {
57
- const subject = new Subject();
58
- onSnapshot(ref, (snapshot) => subject.next(snapshot.docChanges().map(change => ({
59
- type: change.type, payload: { doc: change.doc },
60
- }))));
61
- return subject.asObservable();
62
- },
63
- get: () => getDocs(ref),
64
- };
79
+ return wrapCollectionLike(ref);
65
80
  }
66
81
  collectionGroup(collectionId) {
67
82
  const ref = collectionGroup(this.firestore, collectionId);
68
- return {
69
- __ref: ref,
70
- stateChanges: () => {
71
- const subject = new Subject();
72
- onSnapshot(ref, (snapshot) => subject.next(snapshot.docChanges().map(change => ({
73
- type: change.type, payload: { doc: change.doc },
74
- }))));
75
- return subject.asObservable();
76
- },
77
- get: () => getDocs(ref),
78
- };
79
- }
80
- runTransaction() {
81
- return;
83
+ return wrapCollectionLike(ref);
82
84
  }
83
85
  query(collection, ...queryFnArray) {
84
- return query(collection.__ref, ...queryFnArray.map(queryFn => queryFn()));
86
+ const ref = unwrapCollectionLike(collection);
87
+ return wrapCollectionLike(query(ref, ...queryFnArray.map(queryFn => queryFn())));
85
88
  }
86
89
  where(fieldPath, opStr, value) {
87
90
  return () => where(fieldPath, opStr, value);
@@ -92,6 +95,9 @@ let FirebaseFirestoreAdapter = class FirebaseFirestoreAdapter extends FirestoreA
92
95
  limit(n) {
93
96
  return () => limit(n);
94
97
  }
98
+ runTransaction() {
99
+ throw new Error('FirebaseFirestoreAdapter#runTransaction is not implemented');
100
+ }
95
101
  batch() {
96
102
  return writeBatch(this.firestore);
97
103
  }
@@ -1 +1 @@
1
- {"version":3,"file":"firebase.adapter.js","sourceRoot":"","sources":["../../../../../../packages/@nx-ddd/firestore/src/lib/adapters/firebase/firebase.adapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"firebase.adapter.js","sourceRoot":"","sources":["../../../../../../packages/@nx-ddd/firestore/src/lib/adapters/firebase/firebase.adapter.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,3 @@
1
- import { FirestoreAdapter } from '../adapters/base';
2
1
  import { DocumentSnapshot } from '../interfaces';
3
2
  export interface IFirestoreConverter<Entity extends {
4
3
  id: string;
@@ -6,16 +5,6 @@ export interface IFirestoreConverter<Entity extends {
6
5
  fromFirestore(doc: DocumentSnapshot<object>): Entity;
7
6
  toFirestore(entity: Partial<Entity>): object;
8
7
  }
9
- declare class BasicConverter<E extends {
10
- id: string;
11
- }> {
12
- protected readonly Entity: new () => E;
13
- protected readonly adapter: FirestoreAdapter;
14
- constructor(Entity: new () => E, adapter: FirestoreAdapter);
15
- fromFirestore(doc: DocumentSnapshot<any>): E;
16
- toFirestore(entity: E): object;
17
- }
18
8
  export declare function injectConverter<Entity extends {
19
9
  id: string;
20
- }>(Entity: new () => Entity): BasicConverter<Entity>;
21
- export {};
10
+ }>(Entity: new () => Entity): IFirestoreConverter<Entity>;
@@ -1,6 +1,6 @@
1
1
  import dayjs from 'dayjs';
2
2
  import { FirestoreAdapter } from '../adapters/base';
3
- import { FirestoreCollection, FirestoreCollectionGroup, FirestoreDocument, ToFirestoreData } from '../interfaces';
3
+ import { CollectionReference, CollectionGroup, DocumentReference, ToFirestoreData } from '../interfaces';
4
4
  import { FirestorePathBuilder } from '../path-builder';
5
5
  export declare abstract class FirestoreDAO<Entity extends {
6
6
  id: string;
@@ -8,10 +8,10 @@ export declare abstract class FirestoreDAO<Entity extends {
8
8
  protected adapter: FirestoreAdapter;
9
9
  protected abstract pathBuilder: FirestorePathBuilder<Entity>;
10
10
  constructor(adapter: FirestoreAdapter);
11
- collection(paramMap?: Partial<Entity>): FirestoreCollection<FirestoreData>;
12
- collectionGroup(): FirestoreCollectionGroup<FirestoreData>;
11
+ collection(paramMap?: Partial<Entity>): CollectionReference<FirestoreData>;
12
+ collectionGroup(): CollectionGroup<FirestoreData>;
13
13
  doc(paramMap: Partial<Entity> & {
14
14
  id: string;
15
- }): FirestoreDocument<FirestoreData>;
16
- getCollection(paramMap?: Partial<Entity>): FirestoreCollection<FirestoreData, any>;
15
+ }): DocumentReference<FirestoreData>;
16
+ getCollection(paramMap?: Partial<Entity>): CollectionReference<FirestoreData, import("../interfaces").DocumentData, any>;
17
17
  }
@@ -1,4 +1,8 @@
1
+ import type { QueryDocumentSnapshot } from 'firebase-admin/firestore';
1
2
  import { Observable } from 'rxjs';
3
+ export type DocumentData = {
4
+ [field: string]: any;
5
+ };
2
6
  export interface GetOptions {
3
7
  readonly source?: 'default' | 'server' | 'cache';
4
8
  }
@@ -8,15 +12,17 @@ export interface DocumentChangeAction<T> {
8
12
  doc: DocumentSnapshot<T>;
9
13
  };
10
14
  }
11
- export interface DocumentSnapshot<T> {
15
+ export interface DocumentSnapshot<AppModelType = DocumentData, DbModelType extends DocumentData = DocumentData> {
12
16
  id: string;
13
17
  ref: {
14
18
  path: string;
15
19
  };
16
- data: () => T;
20
+ data: () => AppModelType | undefined;
21
+ get: (fieldPath: string) => any;
22
+ exists?: (() => boolean) | boolean;
17
23
  }
18
- export interface QuerySnapshot<T> {
19
- docs: DocumentSnapshot<T>[];
24
+ export interface QuerySnapshot<AppModelType = DocumentData, DbModelType extends DocumentData = DocumentData> {
25
+ docs: Array<QueryDocumentSnapshot<AppModelType, DbModelType>>;
20
26
  }
21
27
  export interface Timestamp {
22
28
  readonly seconds: number;
@@ -36,28 +42,24 @@ export type FieldValue = any;
36
42
  export type ToFirestoreData<Entity, Date> = {
37
43
  [K in keyof Entity]: Entity[K] extends Date ? Timestamp | FieldValue : Entity[K];
38
44
  };
39
- export interface DocumentReference<DocumentData, OriginalReference = any> {
40
- __ref?: OriginalReference;
45
+ export interface DocumentReference<AppModelType = DocumentData, DbModelType extends DocumentData = DocumentData, Origin = any> {
46
+ __ref?: Origin;
41
47
  exists(): Promise<boolean>;
42
- set(data: DocumentData, options?: any): Promise<void | any>;
43
- get(): Promise<DocumentSnapshot<DocumentData>>;
44
- update(data: DocumentData): Promise<void | any>;
48
+ set(data: AppModelType, options?: any): Promise<void | any>;
49
+ get(): Promise<DocumentSnapshot<AppModelType, DbModelType>>;
50
+ update(data: AppModelType): Promise<void | any>;
45
51
  delete(): Promise<void | any>;
46
- stateChanges?: () => Observable<DocumentSnapshot<DocumentData>>;
52
+ stateChanges?: () => Observable<DocumentSnapshot<AppModelType, DbModelType>>;
47
53
  }
48
- export type FirestoreDocument<DocumentData> = DocumentReference<DocumentData>;
49
- export interface FirestoreCollection<DocumentData, RawFirestoreCollection = any> {
50
- __ref?: RawFirestoreCollection;
51
- stateChanges?: () => Observable<DocumentChangeAction<DocumentData>[]>;
52
- get(options?: GetOptions): Promise<QuerySnapshot<DocumentData>>;
54
+ export interface CollectionReference<AppModelType = DocumentData, DbModelType extends DocumentData = DocumentData, Origin = any> extends Query<AppModelType, DbModelType, Origin> {
53
55
  }
54
- export interface FirestoreCollectionGroup<DocumentData> {
55
- __ref?: any;
56
- stateChanges?: () => Observable<DocumentChangeAction<DocumentData>[]>;
57
- get(options?: GetOptions): Promise<QuerySnapshot<DocumentData>>;
56
+ export interface CollectionGroup<AppModelType = DocumentData, DbModelType extends DocumentData = DocumentData, Origin = any> extends Query<AppModelType, DbModelType, Origin> {
58
57
  }
59
- export interface FirestoreQuery<DocumentData> {
60
- __ref?: any;
58
+ export interface Query<AppModelType = DocumentData, DbModelType extends DocumentData = DocumentData, Origin = any> {
59
+ __ref?: Origin;
61
60
  stateChanges?: () => Observable<DocumentChangeAction<DocumentData>[]>;
62
- get(options?: GetOptions): Promise<QuerySnapshot<DocumentData>>;
61
+ get(options?: GetOptions): Promise<QuerySnapshot<AppModelType, DbModelType>>;
62
+ onSnapshot?(onNext: (snapshot: QuerySnapshot<AppModelType, DbModelType>) => void, onError?: (error: Error) => void): () => void;
63
+ count(): Promise<number>;
63
64
  }
65
+ export type CollectionLike<AppModelType = DocumentData, DbModelType extends DocumentData = DocumentData, Origin = any> = CollectionReference<AppModelType, DbModelType, Origin> | CollectionGroup<AppModelType, DbModelType, Origin> | Query<AppModelType, DbModelType, Origin>;
@@ -1 +1 @@
1
- {"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../../../../packages/@nx-ddd/firestore/src/lib/interfaces/interfaces.ts"],"names":[],"mappings":"AAmBC,CAAC"}
1
+ {"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../../../../packages/@nx-ddd/firestore/src/lib/interfaces/interfaces.ts"],"names":[],"mappings":"AA+BC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nx-ddd/firestore",
3
- "version": "17.1.0",
3
+ "version": "17.3.0",
4
4
  "main": "./index.js",
5
5
  "types": "./index.d.ts",
6
6
  "homepage": "https://github.com/xx-machina/plaform/tree/main/packages/@nx-ddd/firestore",
@@ -11,8 +11,8 @@
11
11
  "peerDependencies": {
12
12
  "@angular/compiler": "^17.0.0",
13
13
  "@angular/core": "^17.0.0",
14
- "@nx-ddd/common": "17.1.0",
15
- "@nx-ddd/core": "17.1.0",
14
+ "@nx-ddd/common": "17.3.0",
15
+ "@nx-ddd/core": "17.3.0",
16
16
  "axios": "^1.0.0",
17
17
  "class-validator-extended": "^3.2.0",
18
18
  "dayjs": "1.11.10",
@@ -4,18 +4,31 @@ type CollectionParamMap<Entity extends {
4
4
  type DocParamMap<Entity extends {
5
5
  id: string;
6
6
  }> = CollectionParamMap<Entity> & Pick<Entity, 'id'>;
7
+ export type ExtractParams<T extends string> = T extends `${infer _Start}:${infer Param}/${infer Rest}` ? {
8
+ [K in Param | keyof ExtractParams<Rest>]: string;
9
+ } : T extends `${infer _Start}:${infer Param}` ? {
10
+ [K in Param]: string;
11
+ } : {};
12
+ export type ColParam<T extends {
13
+ readonly collectionPath: string;
14
+ }> = Omit<ExtractParams<T['collectionPath']>, 'id'>;
15
+ export type DocParam<T extends {
16
+ readonly collectionPath: string;
17
+ }> = ColParam<T> & {
18
+ id: string;
19
+ };
7
20
  export declare class FirestorePathBuilder<Entity extends {
8
21
  id: string;
9
- }> {
22
+ }, Path extends string = string> {
10
23
  private paths;
11
24
  doc(param: DocParamMap<Entity>): string;
12
- collection(param?: CollectionParamMap<Entity>): string;
25
+ collection(param?: Omit<ExtractParams<Path>, 'id'> | {}): string;
13
26
  collectionGroup(): string;
14
27
  constructor(paths: string[]);
15
28
  }
16
- export declare const pathBuilderFactory: <E extends {
29
+ export declare function pathBuilderFactory<E extends {
17
30
  id: string;
18
- }>(path: string) => FirestorePathBuilder<E>;
19
- export declare const parsePath: (path: string) => string[];
31
+ }, Path extends string = string>(path: Path): FirestorePathBuilder<E, Path>;
32
+ export declare function parsePath<Path extends string = string>(path: Path): string[];
20
33
  export declare const resolvePaths: (obj: object, paths: string[]) => string;
21
34
  export {};
@@ -12,16 +12,17 @@ export class FirestorePathBuilder {
12
12
  this.paths = paths;
13
13
  }
14
14
  }
15
- export const pathBuilderFactory = (path) => {
15
+ export function pathBuilderFactory(path) {
16
16
  const paths = parsePath(path);
17
17
  return new FirestorePathBuilder(paths);
18
- };
19
- export const parsePath = (path) => {
18
+ }
19
+ ;
20
+ export function parsePath(path) {
20
21
  const paths = path.split('/').filter(p => p.length);
21
22
  if (!paths[paths.length - 1].startsWith(':'))
22
23
  paths.push(':id');
23
24
  return paths;
24
- };
25
+ }
25
26
  export const resolvePaths = (obj, paths) => {
26
27
  return paths.map((path) => path.startsWith(':') ? resolvePath(obj, path.slice(1)) : path).join('/');
27
28
  };
@@ -1 +1 @@
1
- {"version":3,"file":"path-builder.js","sourceRoot":"","sources":["../../../../../packages/@nx-ddd/firestore/src/lib/path-builder/path-builder.ts"],"names":[],"mappings":"AAGA,MAAM,OAAO,oBAAoB;IAC/B,GAAG,CAAC,KAA0B;QAC5B,OAAO,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACzC,CAAC;IAED,UAAU,CAAC,QAAoC,EAAE;QAC/C,OAAO,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACtD,CAAC;IAED,eAAe;QACb,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAC,CAAC,CAAC,CAAC;IACzC,CAAC;IAED,YAAoB,KAAe;QAAf,UAAK,GAAL,KAAK,CAAU;IAAI,CAAC;CACzC;AAED,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAChC,IAAY,EACa,EAAE;IAC3B,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAC9B,OAAO,IAAI,oBAAoB,CAAC,KAAK,CAAC,CAAC;AACzC,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,IAAY,EAAY,EAAE;IAClD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IACpD,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC9D,OAAO,KAAK,CAAC;AACf,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,GAAW,EAAE,KAAe,EAAU,EAAE;IACnE,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACtG,CAAC,CAAA;AAED,MAAM,WAAW,GAAG,CAAC,GAAW,EAAE,GAAW,EAAE,EAAE;IAC/C,IAAI,CAAC,CAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAG,GAAG,CAAC,CAAA;QAAE,MAAM,IAAI,KAAK,CAAC,sDAAsD,GAAG,cAAc,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACjI,OAAO,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAG,GAAG,CAAC,CAAC;AACpB,CAAC,CAAA"}
1
+ {"version":3,"file":"path-builder.js","sourceRoot":"","sources":["../../../../../packages/@nx-ddd/firestore/src/lib/path-builder/path-builder.ts"],"names":[],"mappings":"AAeA,MAAM,OAAO,oBAAoB;IAI/B,GAAG,CAAC,KAA0B;QAC5B,OAAO,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACzC,CAAC;IAED,UAAU,CAAC,QAA8C,EAAE;QACzD,OAAO,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACtD,CAAC;IAED,eAAe;QACb,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAC,CAAC,CAAC,CAAC;IACzC,CAAC;IAED,YAAoB,KAAe;QAAf,UAAK,GAAL,KAAK,CAAU;IAAI,CAAC;CACzC;AAED,MAAM,UAAU,kBAAkB,CAIhC,IAAU;IAEV,MAAM,KAAK,GAAG,SAAS,CAAO,IAAI,CAAC,CAAC;IACpC,OAAO,IAAI,oBAAoB,CAAC,KAAK,CAAC,CAAC;AACzC,CAAC;AAAA,CAAC;AAEF,MAAM,UAAU,SAAS,CAA+B,IAAU;IAChE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IACpD,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC9D,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,GAAW,EAAE,KAAe,EAAU,EAAE;IACnE,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACtG,CAAC,CAAA;AAED,MAAM,WAAW,GAAG,CAAC,GAAW,EAAE,GAAW,EAAE,EAAE;IAC/C,IAAI,CAAC,CAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAG,GAAG,CAAC,CAAA;QAAE,MAAM,IAAI,KAAK,CAAC,sDAAsD,GAAG,cAAc,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACjI,OAAO,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAG,GAAG,CAAC,CAAC;AACpB,CAAC,CAAA"}
@@ -4,15 +4,14 @@ import { FirestoreAdapter } from '../adapters/base';
4
4
  import { IFirestoreConverter } from '../converter';
5
5
  import { FirestoreDAO } from '../dao';
6
6
  import { FirestorePathBuilder } from '../path-builder';
7
- import { FirestoreCollection, FirestoreCollectionGroup, ToFirestoreData } from '../interfaces';
8
- type FirestoreCollectionType<D> = FirestoreCollection<D> | FirestoreCollectionGroup<D>;
7
+ import { CollectionReference, CollectionGroup, ToFirestoreData, CollectionLike } from '../interfaces';
9
8
  export declare class FirestoreQuery<Entity extends {
10
9
  id: string;
11
10
  } = any, FirestoreData = ToFirestoreData<Entity, dayjs.Dayjs>> extends FirestoreDAO<Entity, FirestoreData> {
12
11
  protected converter: IFirestoreConverter<Entity>;
13
12
  protected pathBuilder: FirestorePathBuilder<Entity>;
14
13
  constructor(adapter: FirestoreAdapter, converter: IFirestoreConverter<Entity>, pathBuilder: FirestorePathBuilder<Entity>);
15
- protected readonly collection$: ReplaySubject<FirestoreCollectionType<FirestoreData>>;
14
+ protected readonly collection$: ReplaySubject<CollectionLike<FirestoreData>>;
16
15
  protected readonly list$: Observable<Entity[]>;
17
16
  /** @deprecated */
18
17
  listChanges(paramMap?: Partial<Entity>, options?: {
@@ -28,8 +27,7 @@ export declare class FirestoreQuery<Entity extends {
28
27
  id: string;
29
28
  }): Promise<Entity>;
30
29
  list(paramMap?: Partial<Entity>): Promise<Entity[]>;
31
- protected listChangesByCollectionRef(collection: FirestoreCollection<FirestoreData> | FirestoreCollectionGroup<FirestoreData>): Observable<Entity[]>;
30
+ protected listChangesByCollectionRef(collection: CollectionReference<FirestoreData> | CollectionGroup<FirestoreData>): Observable<Entity[]>;
32
31
  protected switchCollectionRef(paramMap?: Partial<Entity>): void;
33
- switchCollection(collection: FirestoreCollection<FirestoreData>): void;
32
+ switchCollection(collection: CollectionLike<any>): void;
34
33
  }
35
- export {};
@@ -1 +1 @@
1
- {"version":3,"file":"firestore.query.js","sourceRoot":"","sources":["../../../../../packages/@nx-ddd/firestore/src/lib/query/firestore.query.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"firestore.query.js","sourceRoot":"","sources":["../../../../../packages/@nx-ddd/firestore/src/lib/query/firestore.query.ts"],"names":[],"mappings":"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"}
@@ -1,33 +1,44 @@
1
- import { PartialWithId, Repository } from '@nx-ddd/common/domain/repository';
1
+ import { Repository } from '@nx-ddd/common/domain/repository';
2
2
  import { FirestoreAdapter } from '../adapters/base';
3
3
  import { IFirestoreConverter } from '../converter';
4
- import { FirestorePathBuilder } from '../path-builder';
5
- import { FirestoreCollection, FirestoreCollectionGroup, FirestoreDocument } from '../interfaces';
6
- export declare abstract class BaseFirestoreRepository<Entity extends {
4
+ import { ExtractParams, FirestorePathBuilder } from '../path-builder';
5
+ import { CollectionReference, CollectionGroup, DocumentReference, DocumentSnapshot } from '../interfaces';
6
+ type ColParam<T extends FirestoreRepository<any>> = Omit<ExtractParams<T['collectionPath']>, 'id'>;
7
+ type DocParam<T extends FirestoreRepository<any>> = ColParam<T> & {
8
+ id: string;
9
+ };
10
+ export declare abstract class FirestoreRepository<Entity extends {
7
11
  id: string;
8
12
  }> extends Repository<Entity> {
9
- protected abstract collectionPath: string;
13
+ abstract readonly collectionPath: string;
10
14
  protected abstract converter: IFirestoreConverter<Entity>;
11
- protected pathBuilder: FirestorePathBuilder<Entity>;
12
- protected adapter: FirestoreAdapter;
13
- list(paramMap?: Partial<Entity>, query?: any): Promise<Entity[]>;
14
- get(paramMap?: Partial<Entity>): Promise<Entity>;
15
- save(entity: Entity): Promise<[Entity, boolean]>;
16
- create(entity: Partial<Entity>): Promise<Entity>;
17
- createMany(entities: Partial<Entity>[]): Promise<Entity[]>;
18
- update(entity: PartialWithId<Entity>): Promise<void>;
19
- delete(paramMap: Partial<Entity>): Promise<void>;
20
- bulkWrite(entities: Entity[], timestamps?: string[]): Promise<void>;
21
- bulkCreate(entities: Entity[]): Promise<void>;
22
- bulkUpdate(entities: PartialWithId<Entity>[]): Promise<void>;
23
- protected collection(paramMap?: Partial<Entity>): FirestoreCollection<object>;
24
- protected collectionGroup(): FirestoreCollectionGroup<object>;
25
- protected doc(paramMap: PartialWithId<Entity>): FirestoreDocument<object>;
15
+ get pathBuilder(): FirestorePathBuilder<Entity, typeof this.collectionPath>;
16
+ protected adapter: FirestoreAdapter<any>;
17
+ list(paramMap?: ColParam<this>, query?: any): Promise<Entity[]>;
18
+ count(paramMap?: ColParam<this>): Promise<number>;
19
+ get(paramMap?: DocParam<this>): Promise<Entity>;
20
+ save(entity: DocParam<this> & Entity): Promise<[Entity, boolean]>;
21
+ create(entity: DocParam<this> & Entity): Promise<Entity>;
22
+ createMany(entities: (DocParam<this> & Entity)[]): Promise<Entity[]>;
23
+ update(entity: DocParam<this> & Partial<Entity>): Promise<void>;
24
+ delete(paramMap: DocParam<this>): Promise<void>;
25
+ bulkWrite(entities: (DocParam<this> & Entity)[], timestamps?: string[]): Promise<void>;
26
+ bulkCreate(entities: (DocParam<this> & Entity)[]): Promise<void>;
27
+ bulkUpdate(entities: (DocParam<this> & Partial<Entity>)[]): Promise<void>;
28
+ protected collection(paramMap?: Omit<ExtractParams<typeof this.collectionPath>, 'id'>): CollectionReference<object>;
29
+ protected collectionGroup(): CollectionGroup<object>;
30
+ protected doc(paramMap: DocParam<this>): DocumentReference<object>;
26
31
  protected genId: () => string;
27
- protected _list(collection: FirestoreCollection<object>): Promise<Entity[]>;
28
- protected _get(doc: FirestoreDocument<object>): Promise<Entity>;
29
- protected _save(doc: FirestoreDocument<object>, entity: Entity): Promise<[Entity, boolean]>;
30
- protected _create(doc: FirestoreDocument<object>, entity: Entity): Promise<Entity>;
31
- protected _set(doc: FirestoreDocument<object>, entity: Partial<Entity>, isUpdate?: boolean): Promise<import("../interfaces").DocumentSnapshot<object>>;
32
+ protected _list(collection: CollectionReference<object>): Promise<Entity[]>;
33
+ protected _get(doc: DocumentReference<object>): Promise<Entity>;
34
+ protected _save(doc: DocumentReference<object>, entity: Entity): Promise<[Entity, boolean]>;
35
+ protected _create(doc: DocumentReference<object>, entity: Entity): Promise<Entity>;
36
+ protected _set(doc: DocumentReference<object>, entity: Partial<Entity>, isUpdate?: boolean): Promise<DocumentSnapshot<object, import("../interfaces").DocumentData>>;
32
37
  protected buildServerTimestampObject(keys?: string[]): {};
33
38
  }
39
+ /** @deprecated use FirebaseRepository instaed. */
40
+ export declare abstract class BaseFirestoreRepository<Entity extends {
41
+ id: string;
42
+ }> extends FirestoreRepository<Entity> {
43
+ }
44
+ export {};
@@ -1,8 +1,10 @@
1
1
  import { __awaiter, __decorate } from "tslib";
2
- import { Injectable } from '@angular/core';
2
+ import { inject, Injectable } from '@angular/core';
3
3
  import { Repository } from '@nx-ddd/common/domain/repository';
4
4
  import { toObject } from '@nx-ddd/common/utilities/to-object';
5
5
  import { generateId } from '@nx-ddd/common/utilities';
6
+ import { FirestoreAdapter } from '../adapters/base';
7
+ import { pathBuilderFactory } from '../path-builder';
6
8
  const toPromise = callback => new Promise((resolve, reject) => __awaiter(void 0, void 0, void 0, function* () {
7
9
  try {
8
10
  resolve(callback());
@@ -11,17 +13,34 @@ const toPromise = callback => new Promise((resolve, reject) => __awaiter(void 0,
11
13
  reject(error);
12
14
  }
13
15
  }));
14
- let BaseFirestoreRepository = class BaseFirestoreRepository extends Repository {
16
+ function doesExist(doc) {
17
+ if (typeof doc.exists === 'function') {
18
+ return doc.exists();
19
+ }
20
+ return doc.exists;
21
+ }
22
+ let FirestoreRepository = class FirestoreRepository extends Repository {
15
23
  constructor() {
16
24
  super(...arguments);
25
+ // protected adapter: FirestoreAdapter;
26
+ this.adapter = inject(FirestoreAdapter);
17
27
  this.genId = () => generateId();
18
28
  }
29
+ // protected pathBuilder: FirestorePathBuilder<Entity, typeof this.collectionPath>;
30
+ get pathBuilder() {
31
+ return pathBuilderFactory(this.collectionPath);
32
+ }
19
33
  list(paramMap, query = q => q) {
20
34
  return __awaiter(this, void 0, void 0, function* () {
21
35
  const collection = paramMap ? this.collection(paramMap) : this.collectionGroup();
22
36
  return this._list(query(collection));
23
37
  });
24
38
  }
39
+ count(paramMap) {
40
+ return __awaiter(this, void 0, void 0, function* () {
41
+ return this.collection(paramMap).count();
42
+ });
43
+ }
25
44
  get(paramMap) {
26
45
  return this._get(this.doc(paramMap));
27
46
  }
@@ -78,7 +97,6 @@ let BaseFirestoreRepository = class BaseFirestoreRepository extends Repository {
78
97
  return this.adapter.doc(path);
79
98
  }
80
99
  _list(collection) {
81
- const doesExist = (doc) => typeof doc.exists === 'function' ? doc.exists() : doc.exists;
82
100
  return collection.get().then(({ docs }) => docs.map(doc => {
83
101
  if (!doesExist(doc))
84
102
  return null;
@@ -105,11 +123,15 @@ let BaseFirestoreRepository = class BaseFirestoreRepository extends Repository {
105
123
  }
106
124
  _create(doc, entity) {
107
125
  return __awaiter(this, void 0, void 0, function* () {
108
- const exists = yield doc.exists();
126
+ const exists = yield doc.exists().catch((error) => {
127
+ // MEMO(@nontangent): bunで実行するときだけこのエラーがでるかもしれない。
128
+ if (`${error}`.startsWith('Error: Did not receive document for'))
129
+ return false;
130
+ throw error;
131
+ });
109
132
  if (exists)
110
133
  throw new Error('Document already exists');
111
134
  return doc.set(Object.assign(Object.assign({}, this.converter.toFirestore(entity)), this.buildServerTimestampObject(['createdAt', 'updatedAt']))).then(() => doc.get()).then(doc => this.converter.fromFirestore(doc));
112
- ;
113
135
  });
114
136
  }
115
137
  _set(doc, entity, isUpdate = true) {
@@ -119,6 +141,13 @@ let BaseFirestoreRepository = class BaseFirestoreRepository extends Repository {
119
141
  return keys.reduce((m, k) => (Object.assign(Object.assign({}, m), { [k]: this.adapter.FieldValue.serverTimestamp() })), {});
120
142
  }
121
143
  };
144
+ FirestoreRepository = __decorate([
145
+ Injectable()
146
+ ], FirestoreRepository);
147
+ export { FirestoreRepository };
148
+ /** @deprecated use FirebaseRepository instaed. */
149
+ let BaseFirestoreRepository = class BaseFirestoreRepository extends FirestoreRepository {
150
+ };
122
151
  BaseFirestoreRepository = __decorate([
123
152
  Injectable()
124
153
  ], BaseFirestoreRepository);
@@ -1 +1 @@
1
- {"version":3,"file":"repository.js","sourceRoot":"","sources":["../../../../../packages/@nx-ddd/firestore/src/lib/repository/repository.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAiB,UAAU,EAAE,MAAM,kCAAkC,CAAC;AAC7E,OAAO,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAMtD,MAAM,SAAS,GAAG,QAAQ,CAAC,EAAE,CAAC,IAAI,OAAO,CAA8B,CAAO,OAAO,EAAE,MAAM,EAAE,EAAE;IAC/F,IAAI;QAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;KAAE;IAAC,OAAO,KAAK,EAAE;QAAE,MAAM,CAAC,KAAK,CAAC,CAAC;KAAE;AAC/D,CAAC,CAAA,CAAC,CAAC;AAGI,IAAe,uBAAuB,GAAtC,MAAe,uBAEpB,SAAQ,UAAkB;IAFrB;;QA0FK,UAAK,GAAG,GAAW,EAAE,CAAC,UAAU,EAAE,CAAC;IA8C/C,CAAC;IAhIO,IAAI,CAAC,QAA0B,EAAE,QAAa,CAAC,CAAC,EAAE,CAAC,CAAC;;YACxD,MAAM,UAAU,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;YACjF,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;QACvC,CAAC;KAAA;IAED,GAAG,CAAC,QAA0B;QAC5B,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAe,CAAC,CAAC,CAAC;IAC9C,CAAC;IAED,IAAI,CAAC,MAAc;QACjB,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,iCAAK,MAAM,KAAE,EAAE,EAAE,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,EAAE,KAAI,IAAI,CAAC,KAAK,EAAE,IAAE,CAAC;QACrE,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,CAAC;IAED,MAAM,CAAC,MAAuB;QAC5B,MAAM,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAW,CAAC;QACvC,MAAM,EAAE,GAAG,CAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,EAAE,KAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QACnC,OAAO,SAAS,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,iCAAK,GAAG,KAAE,EAAE,IAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,MAAgB,CAAC,CAAC,CAAC;IAClG,CAAC;IAED,UAAU,CAAC,QAA2B;QACpC,OAAO,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAClE,CAAC;IAEK,MAAM,CAAC,MAA6B;;YACxC,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,iCACvD,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,MAAM,CAAC,GAClC,IAAI,CAAC,0BAA0B,CAAC,CAAC,WAAW,CAAC,CAAC,EACjD,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QACrB,CAAC;KAAA;IAED,MAAM,CAAC,QAAyB;QAC9B,OAAO,IAAI,CAAC,GAAG,CAAC,QAAe,CAAC,CAAC,MAAM,EAAE,CAAC;IAC5C,CAAC;IAED,SAAS,CAAC,QAAkB,EAAE,aAAuB,EAAE;QACrD,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;YACvC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC;YACnC,OAAO,KAAK,CAAC,GAAG,CAAC,GAAG,kCACf,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,MAAM,CAAC,GAClC,IAAI,CAAC,0BAA0B,CAAC,UAAU,CAAC,EAC9C,CAAC;QACL,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;IACpC,CAAC;IAED,UAAU,CAAC,QAAkB;QAC3B,sDAAsD;QACtD,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;YACvC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC;YACnC,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,kCAClB,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,MAAM,CAAC,GAClC,IAAI,CAAC,0BAA0B,CAAC,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC,EAC9D,CAAC;QACL,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;IACpC,CAAC;IAED,UAAU,CAAC,QAAiC;QAC1C,sDAAsD;QACtD,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;YACvC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC;YACnC,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,kCAClB,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,MAAM,CAAC,GAClC,IAAI,CAAC,0BAA0B,CAAC,CAAC,WAAW,CAAC,CAAC,EACjD,CAAC;QACL,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;IACpC,CAAC;IAES,UAAU,CAAC,QAA0B;QAC7C,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAA;QAClD,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAS,IAAI,CAAC,CAAC;IAC/C,CAAC;IAES,eAAe;QACvB,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE,CAAC;QAChD,OAAO,IAAI,CAAC,OAAO,CAAC,eAAe,CAAS,IAAI,CAAC,CAAC;IACpD,CAAC;IAES,GAAG,CAAC,QAA+B;QAC3C,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC5C,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAS,IAAI,CAAC,CAAC;IACxC,CAAC;IAIS,KAAK,CAAC,UAAuC;QACrD,MAAM,SAAS,GAAG,CAAC,GAAQ,EAAE,EAAE,CAAC,OAAO,GAAG,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC;QAC7F,OAAO,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,EAAC,IAAI,EAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;YACtD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC;gBAAE,OAAO,IAAI,CAAC;YACjC,OAAO,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QAC3C,CAAC,CAAC,CAAC,CAAC;IACN,CAAC;IAES,IAAI,CAAC,GAA8B;QAC3C,OAAO,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE;YAC3B,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE;gBAAE,OAAO,IAAI,CAAC;YAC7B,OAAO,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,GAAG,CAAC,CAAA;QAC1C,CAAC,CAAC,CAAC,CAAC;IACN,CAAC;IAEe,KAAK,CAAC,GAA8B,EAAE,MAAc;;YAClE,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,MAAM,EAAE,CAAC;YAClC,IAAI,MAAM,EAAE;gBACV,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;aACvF;iBAAM;gBACL,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;aACjE;QACH,CAAC;KAAA;IAEe,OAAO,CAAC,GAA8B,EAAE,MAAc;;YACpE,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,MAAM,EAAE,CAAC;YAClC,IAAI,MAAM;gBAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;YACvD,OAAO,GAAG,CAAC,GAAG,CAAC,gCACV,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,MAAM,CAAC,GAClC,IAAI,CAAC,0BAA0B,CAAC,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC,CACxD,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC;YAAC,CAAC;QACnF,CAAC;KAAA;IAES,IAAI,CAAC,GAA8B,EAAE,MAAuB,EAAE,QAAQ,GAAG,IAAI;QACrF,OAAO,GAAG,CAAC,GAAG,CAAC,gCACV,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,MAAM,CAAC,GAClC,IAAI,CAAC,0BAA0B,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAC3D,EAAE,EAAC,KAAK,EAAE,QAAQ,EAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;IACrD,CAAC;IAES,0BAA0B,CAAC,OAAiB,CAAC,WAAW,EAAE,WAAW,CAAC;QAC9E,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,iCAAK,CAAC,KAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,eAAe,EAAE,IAAE,EAAE,EAAE,CAAC,CAAC;IAC7F,CAAC;CAEF,CAAA;AAxIqB,uBAAuB;IAD5C,UAAU,EAAE;GACS,uBAAuB,CAwI5C"}
1
+ {"version":3,"file":"repository.js","sourceRoot":"","sources":["../../../../../packages/@nx-ddd/firestore/src/lib/repository/repository.ts"],"names":[],"mappings":"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"}