@nx-ddd/firestore 19.0.0-preview.8 → 19.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.
package/README.md CHANGED
@@ -1,96 +1,172 @@
1
- # @NxDDD/Firestore
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.
1
+ # @nx-ddd/firestore
3
2
 
4
- ## Install
5
- ```sh
6
- $ npm i @nx-ddd/firestore
3
+ A Firestore adapter for @nx-ddd/core that provides seamless integration with Firebase Cloud Firestore.
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ npm install @nx-ddd/firestore
9
+ ```
10
+
11
+ ## Features
12
+
13
+ ### 1. Repository Implementation
14
+
15
+ ```typescript
16
+ import { FirestoreRepository } from '@nx-ddd/firestore';
17
+
18
+ @Injectable()
19
+ export class UserFirestoreRepository extends FirestoreRepository<User> implements UserRepository {
20
+ constructor(firestore: Firestore) {
21
+ super(firestore, 'users');
22
+ }
23
+
24
+ async findByEmail(email: string): Promise<User | null> {
25
+ const snapshot = await this.collection
26
+ .where('email', '==', email)
27
+ .limit(1)
28
+ .get();
29
+
30
+ return this.toEntity(snapshot.docs[0]);
31
+ }
32
+ }
33
+ ```
34
+
35
+ ### 2. Entity Mapping
36
+
37
+ ```typescript
38
+ import { FirestoreEntity } from '@nx-ddd/firestore';
39
+
40
+ @FirestoreEntity({
41
+ collection: 'users',
42
+ converters: {
43
+ createdAt: FirestoreTimestampConverter,
44
+ updatedAt: FirestoreTimestampConverter
45
+ }
46
+ })
47
+ export class User extends Entity {
48
+ constructor(
49
+ id: ID,
50
+ public readonly email: string,
51
+ public readonly name: string,
52
+ public readonly createdAt: Date,
53
+ public readonly updatedAt: Date
54
+ ) {
55
+ super(id);
56
+ }
57
+ }
58
+ ```
59
+
60
+ ### 3. Transaction Support
61
+
62
+ ```typescript
63
+ import { FirestoreTransactional } from '@nx-ddd/firestore';
64
+
65
+ @Injectable()
66
+ export class UserService {
67
+ constructor(private readonly firestore: Firestore) {}
68
+
69
+ @FirestoreTransactional()
70
+ async createUserWithProfile(data: UserData): Promise<void> {
71
+ const user = new User(/* ... */);
72
+ const profile = new Profile(/* ... */);
73
+
74
+ await this.userRepository.save(user);
75
+ await this.profileRepository.save(profile);
76
+ }
77
+ }
7
78
  ```
8
79
 
9
- ## Usage
80
+ ### 4. Query Building
10
81
 
11
- ### Common
82
+ ```typescript
83
+ import { FirestoreQueryBuilder } from '@nx-ddd/firestore';
12
84
 
13
- ```ts
14
- // libs/common/infrastructure/repositories/user.repository
15
- import { inject, Injectable } from '@angular/core';
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
- import { IsDayjs } from 'class-validator-extended';
20
- import dayjs from 'dayjs';
85
+ @Injectable()
86
+ export class UserQueryService {
87
+ constructor(private readonly builder: FirestoreQueryBuilder) {}
21
88
 
22
- export class User {
23
- @Firestore.ID() id: string;
24
- @Firestore.String() name: string;
25
- @Firestore.Timestamp() @IsDayjs() @TransformToDayjs() createdAt: dayjs.Dayjs;
26
- @Firestore.Timestamp() @IsDayjs() @TransformToDayjs() updatedAt: dayjs.Dayjs;
89
+ async findActiveUsers(): Promise<User[]> {
90
+ return this.builder
91
+ .collection('users')
92
+ .where('status', '==', 'active')
93
+ .orderBy('lastLoginAt', 'desc')
94
+ .limit(10)
95
+ .execute();
96
+ }
27
97
  }
98
+ ```
99
+
100
+ ## Advanced Features
101
+
102
+ ### 1. Batch Operations
103
+
104
+ ```typescript
105
+ import { FirestoreBatch } from '@nx-ddd/firestore';
28
106
 
29
- @Injectable({providedIn: 'root'})
30
- export class UserRepository extends FirestoreRepository<User> {
31
- readonly collectionPath = `users/:id`;
32
- protected converter = injectConverter(User);
107
+ @Injectable()
108
+ export class UserBatchService {
109
+ constructor(private readonly batch: FirestoreBatch) {}
110
+
111
+ async deactivateUsers(userIds: string[]): Promise<void> {
112
+ this.batch.begin();
113
+
114
+ for (const id of userIds) {
115
+ this.batch.update(`users/${id}`, { status: 'inactive' });
116
+ }
117
+
118
+ await this.batch.commit();
119
+ }
33
120
  }
34
121
  ```
35
122
 
36
- ### Firebase Admin (in NodeJS)
37
- Use `UserRepository` in NodeJS.
38
-
39
- ```ts
40
- // apps/api/src/app/main.ts
41
- import 'reflect-metadata';
42
- import '@angular/compiler';
43
- import { provideFirestoreAdapter } from '@nx-ddd/firestore/adapters/admin';
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
- });
52
-
53
- bootstrap([
54
- provideFirestoreAdapter(),
55
- ]).then(async (injector) => {
56
- const repository = injector.get(UserRepository);
57
- await repository.create({
58
- id: '0001',
59
- name: 'test',
60
- createdAt: dayjs('2022-01-01'),
61
- updatedAt: dayjs('2022-01-01'),
62
- });
63
- const user = await repository.get({id: '0001'});
64
- console.debug('user:', user);
65
- });
123
+ ### 2. Real-time Updates
124
+
125
+ ```typescript
126
+ import { FirestoreObservable } from '@nx-ddd/firestore';
127
+
128
+ @Injectable()
129
+ export class UserStreamService {
130
+ constructor(private readonly observable: FirestoreObservable) {}
131
+
132
+ watchUserChanges(userId: string): Observable<User> {
133
+ return this.observable
134
+ .document(`users/${userId}`)
135
+ .valueChanges()
136
+ .pipe(
137
+ map(data => new User(data))
138
+ );
139
+ }
140
+ }
66
141
  ```
67
142
 
143
+ ### 3. Sub-collections
144
+
145
+ ```typescript
146
+ import { FirestoreSubCollection } from '@nx-ddd/firestore';
68
147
 
69
- ### Firebase (in Browser)
70
- Use `UserRepository` in browser.
71
-
72
- ```ts
73
- // apps/app/src/app/main.ts
74
- import 'reflect-metadata';
75
- import '@angular/compiler';
76
- import { provideFirestoreAdapter } from '@nx-ddd/firestore/adapters/firebase';
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({...});
82
-
83
- bootstrap([
84
- provideFirestoreAdapter(),
85
- ]).then(async (injector) => {
86
- const repository = injector.get(UserRepository);
87
- await repository.create({
88
- id: '0001',
89
- name: 'test',
90
- createdAt: dayjs('2022-01-01'),
91
- updatedAt: dayjs('2022-01-01'),
92
- });
93
- const user = await repository.get({id: '0001'});
94
- console.debug('user:', user);
95
- });
148
+ @Injectable()
149
+ export class UserDocumentRepository extends FirestoreRepository<UserDocument> {
150
+ constructor(firestore: Firestore) {
151
+ super(firestore, 'users/:userId/documents');
152
+ }
153
+
154
+ async findUserDocuments(userId: string): Promise<UserDocument[]> {
155
+ return this.find({ userId });
156
+ }
157
+ }
96
158
  ```
159
+
160
+ ## Best Practices
161
+
162
+ 1. Use repository pattern for data access
163
+ 2. Implement proper error handling
164
+ 3. Use transactions for atomic operations
165
+ 4. Leverage batch operations for bulk updates
166
+ 5. Consider real-time updates when appropriate
167
+ 6. Structure collections and sub-collections carefully
168
+ 7. Implement proper security rules
169
+
170
+ ## License
171
+
172
+ MIT
@@ -1,4 +1,3 @@
1
- import dayjs from 'dayjs';
2
1
  import admin from 'firebase-admin';
3
2
  import { DocumentData, Transaction } from 'firebase-admin/firestore';
4
3
  import { DocumentReference, CollectionReference as _CollectionReference, CollectionGroup as _CollectionGroup, Query as _Query } from '../../interfaces';
@@ -12,16 +11,14 @@ type CollectionLike<AppModelType = DocumentData, DbModelType extends DocumentDat
12
11
  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
12
  export declare function wrapCollectionLike<O extends Origin>(origin: O): InferCollectionLike<O>;
14
13
  export declare function unwrapCollectionLike<AppModelType = DocumentData, DbModelType extends DocumentData = DocumentData>(collection: CollectionLike<AppModelType, DbModelType>): Origin<AppModelType, DbModelType>;
15
- export declare class AdminFirestoreAdapter extends FirestoreAdapter<dayjs.Dayjs> {
14
+ export declare class AdminFirestoreAdapter<Date> extends FirestoreAdapter<Date> {
16
15
  protected firestore: admin.firestore.Firestore;
17
16
  get FieldValue(): typeof admin.firestore.FieldValue;
18
17
  get Timestamp(): typeof admin.firestore.Timestamp;
19
18
  get FieldPath(): typeof admin.firestore.FieldPath;
20
19
  protected isTimestamp(v: any): v is admin.firestore.Timestamp;
21
20
  protected isFieldValue(v: any): v is admin.firestore.FieldValue;
22
- protected isDate(v: any): v is dayjs.Dayjs;
23
- convertDateToTimestamp(date: dayjs.Dayjs): admin.firestore.Timestamp;
24
- convertTimestampToDate(timestamp: admin.firestore.Timestamp): dayjs.Dayjs;
21
+ convertDateToTimestamp(date: Date): admin.firestore.Timestamp;
25
22
  doc(path: string): DocumentReference<any, admin.firestore.DocumentReference>;
26
23
  collection<AppModelType = DocumentData, DbModelType extends DocumentData = DocumentData>(path: string): CollectionReference<AppModelType, DbModelType>;
27
24
  collectionGroup<AppModelType = DocumentData, DbModelType extends DocumentData = DocumentData>(collectionId: string): CollectionGroup<AppModelType, DbModelType>;
@@ -1,6 +1,5 @@
1
1
  import { __decorate } from "tslib";
2
2
  import { Injectable } from '@angular/core';
3
- import dayjs from 'dayjs';
4
3
  import admin from 'firebase-admin';
5
4
  import { Subject } from 'rxjs';
6
5
  import { FirestoreAdapter, provideFirestoreAdapter as _provideFirestoreAdapter } from '../base';
@@ -44,18 +43,12 @@ let AdminFirestoreAdapter = class AdminFirestoreAdapter extends FirestoreAdapter
44
43
  isFieldValue(v) {
45
44
  return v instanceof this.FieldValue;
46
45
  }
47
- isDate(v) {
48
- return dayjs.isDayjs(v);
49
- }
50
46
  convertDateToTimestamp(date) {
51
- if (dayjs.isDayjs(date) && date.isValid()) {
52
- return admin.firestore.Timestamp.fromDate(date.toDate());
47
+ if (this.dateAdapter.isDate(date) && this.dateAdapter.isValid(date)) {
48
+ return admin.firestore.Timestamp.fromDate(this.dateAdapter.getJsDate(date));
53
49
  }
54
50
  throw new Error(`Invalid date: ${date}`);
55
51
  }
56
- convertTimestampToDate(timestamp) {
57
- return dayjs(timestamp.toDate());
58
- }
59
52
  doc(path) {
60
53
  const docRef = this.firestore.doc(path);
61
54
  return {
@@ -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,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,qBAA4B,SAAQ,gBAAsB;IAAhE;;QACK,cAAS,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;IAiG1C,CAAC;IA/FC,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;IAED,sBAAsB,CAAC,IAAU;QAC/B,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YACpE,OAAO,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;QAC9E,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAC;IAC3C,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;AAlGY,qBAAqB;IADjC,UAAU,EAAE;GACA,qBAAqB,CAkGjC;;AAED,MAAM,UAAU,uBAAuB;IACrC,OAAO,wBAAwB,CAAC,qBAAqB,CAAC,CAAC;AACzD,CAAC"}
@@ -1,12 +1,11 @@
1
1
  import type { CollectionReference, CollectionGroup, DocumentReference, ToFirestoreData, Timestamp, Query, FieldValue, DocumentData } from '../../interfaces';
2
+ import { DateAdapter } from '../dayjs';
2
3
  export type QueryFn<AppModelType, DbModelType, R> = (collection?: any) => R;
3
4
  export type WhereFilterOp = '<' | '<=' | '==' | '!=' | '>=' | '>' | 'array-contains' | 'in' | 'array-contains-any' | 'not-in';
4
5
  export declare abstract class FirestoreAdapter<Date = any> {
6
+ protected dateAdapter: DateAdapter;
5
7
  protected abstract isTimestamp(v: any): v is Timestamp;
6
8
  protected abstract isFieldValue(v: any): v is FieldValue;
7
- protected abstract isDate(v: any): v is Date;
8
- abstract convertTimestampToDate(timestamp: Timestamp): Date;
9
- abstract convertDateToTimestamp(date: Date): Timestamp;
10
9
  abstract get Timestamp(): any;
11
10
  abstract get FieldValue(): any;
12
11
  abstract get FieldPath(): any;
@@ -27,6 +26,8 @@ export declare abstract class FirestoreAdapter<Date = any> {
27
26
  * @description FirestoreのUpdateは通常のオブジェクトでは孫以下のプロパティが既存データとマージされないので、パスに変換する必要がある。
28
27
  */
29
28
  flattenForUpdate(obj: any): any;
29
+ convertDateToTimestamp(date: Date): Timestamp;
30
+ convertTimestampToDate(timestamp: Timestamp): Date;
30
31
  }
31
32
  export declare function provideFirestoreAdapter(useClass: new () => FirestoreAdapter): {
32
33
  provide: typeof FirestoreAdapter;
@@ -1,12 +1,16 @@
1
1
  import { __decorate } from "tslib";
2
- import { Injectable } from '@angular/core';
2
+ import { inject, Injectable } from '@angular/core';
3
3
  import { getFirestoreAnnotations } from '../../decorators/decorators';
4
- import { walkObj } from '@nx-ddd/core/util/walk-obj';
4
+ import { walkObj } from '@nx-ddd/core';
5
5
  import { get } from 'lodash-es';
6
+ import { DateAdapter } from '../dayjs';
6
7
  let FirestoreAdapter = class FirestoreAdapter {
8
+ constructor() {
9
+ this.dateAdapter = inject(DateAdapter);
10
+ }
7
11
  //** @deprecated */
8
12
  toFirestoreData(entity) {
9
- return Object.entries(entity).reduce((pre, [k, v]) => (Object.assign(Object.assign({}, pre), { [k]: this.isDate(v) ? this.convertDateToTimestamp(v) : v })), {});
13
+ return Object.entries(entity).reduce((pre, [k, v]) => (Object.assign(Object.assign({}, pre), { [k]: this.dateAdapter.isDate(v) ? this.convertDateToTimestamp(v) : v })), {});
10
14
  }
11
15
  //** @deprecated */
12
16
  fromFirestoreData(data) {
@@ -33,8 +37,10 @@ let FirestoreAdapter = class FirestoreAdapter {
33
37
  case 'timestamp': {
34
38
  if (typeof _value === 'undefined')
35
39
  break;
36
- if (!this.isDate(_value))
40
+ if (!this.dateAdapter.isDate(_value)) {
41
+ console.error('[FirestoreAdapter] _value:', _value);
37
42
  throw new Error(`Invalid Date Type: ${_value}`);
43
+ }
38
44
  newObj[annotation.fieldName] = this.convertDateToTimestamp(_value);
39
45
  break;
40
46
  }
@@ -47,7 +53,11 @@ let FirestoreAdapter = class FirestoreAdapter {
47
53
  const Type = annotation.childType();
48
54
  if (typeof _value === 'undefined')
49
55
  break;
50
- const value = _value.map(v => {
56
+ if (!Array.isArray(_value)) {
57
+ newObj[annotation.fieldName] = [];
58
+ break;
59
+ }
60
+ const value = (_value !== null && _value !== void 0 ? _value : []).map(v => {
51
61
  switch (Type) {
52
62
  case String:
53
63
  case Number:
@@ -162,6 +172,12 @@ let FirestoreAdapter = class FirestoreAdapter {
162
172
  });
163
173
  return newObj;
164
174
  }
175
+ convertDateToTimestamp(date) {
176
+ return this.Timestamp.fromDate(date);
177
+ }
178
+ convertTimestampToDate(timestamp) {
179
+ return this.dateAdapter.convertToDate(timestamp.toDate());
180
+ }
165
181
  };
166
182
  FirestoreAdapter = __decorate([
167
183
  Injectable()
@@ -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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"}
@@ -0,0 +1,15 @@
1
+ import dayjs from 'dayjs';
2
+ export declare class DateAdapter {
3
+ isDate<D>(value: any): value is D;
4
+ isValid(value: any): boolean;
5
+ getJsDate<D>(value: any): D;
6
+ convertToDate<D>(value: Date): D;
7
+ }
8
+ export declare class DayjsAdapter {
9
+ private readonly dateAdapter;
10
+ constructor(dateAdapter: DateAdapter);
11
+ isDayjs(value: any): value is dayjs.Dayjs;
12
+ isValid(value: any): boolean;
13
+ getJsDate(value: dayjs.Dayjs): Date;
14
+ convertToDayjs<D>(value: any): D;
15
+ }
@@ -0,0 +1,44 @@
1
+ import { __decorate, __metadata } from "tslib";
2
+ import { Injectable } from '@angular/core';
3
+ import dayjs from 'dayjs';
4
+ let DateAdapter = class DateAdapter {
5
+ isDate(value) {
6
+ return value instanceof Date || dayjs.isDayjs(value);
7
+ }
8
+ isValid(value) {
9
+ return this.isDate(value) && !isNaN(value.getTime());
10
+ }
11
+ getJsDate(value) {
12
+ return value;
13
+ }
14
+ convertToDate(value) {
15
+ return value;
16
+ }
17
+ };
18
+ DateAdapter = __decorate([
19
+ Injectable({ providedIn: 'root' })
20
+ ], DateAdapter);
21
+ export { DateAdapter };
22
+ let DayjsAdapter = class DayjsAdapter {
23
+ constructor(dateAdapter) {
24
+ this.dateAdapter = dateAdapter;
25
+ }
26
+ isDayjs(value) {
27
+ return dayjs.isDayjs(value);
28
+ }
29
+ isValid(value) {
30
+ return this.isDayjs(value) && value.isValid();
31
+ }
32
+ getJsDate(value) {
33
+ return value.toDate();
34
+ }
35
+ convertToDayjs(value) {
36
+ return dayjs(value);
37
+ }
38
+ };
39
+ DayjsAdapter = __decorate([
40
+ Injectable({ providedIn: 'root' }),
41
+ __metadata("design:paramtypes", [DateAdapter])
42
+ ], DayjsAdapter);
43
+ export { DayjsAdapter };
44
+ //# sourceMappingURL=dayjs.adatper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dayjs.adatper.js","sourceRoot":"","sources":["../../../../../../packages/@nx-ddd/firestore/src/lib/adapters/dayjs/dayjs.adatper.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,KAAK,MAAM,OAAO,CAAC;AAGnB,IAAM,WAAW,GAAjB,MAAM,WAAW;IACtB,MAAM,CAAI,KAAU;QAClB,OAAO,KAAK,YAAY,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACvD,CAAC;IAED,OAAO,CAAC,KAAU;QAChB,OAAO,IAAI,CAAC,MAAM,CAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IAC7D,CAAC;IAED,SAAS,CAAI,KAAU;QACrB,OAAO,KAAU,CAAC;IACpB,CAAC;IAED,aAAa,CAAI,KAAW;QAC1B,OAAO,KAAU,CAAC;IACpB,CAAC;CACF,CAAA;AAhBY,WAAW;IADvB,UAAU,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC;GACtB,WAAW,CAgBvB;;AAGM,IAAM,YAAY,GAAlB,MAAM,YAAY;IACvB,YAA6B,WAAwB;QAAxB,gBAAW,GAAX,WAAW,CAAa;IAAG,CAAC;IAEzD,OAAO,CAAC,KAAU;QAChB,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;IAED,OAAO,CAAC,KAAU;QAChB,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;IAChD,CAAC;IAED,SAAS,CAAC,KAAkB;QAC1B,OAAO,KAAK,CAAC,MAAM,EAAE,CAAC;IACxB,CAAC;IAED,cAAc,CAAI,KAAU;QAC1B,OAAO,KAAK,CAAC,KAAK,CAAM,CAAC;IAC3B,CAAC;CACF,CAAA;AAlBY,YAAY;IADxB,UAAU,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC;qCAES,WAAW;GAD1C,YAAY,CAkBxB"}
@@ -0,0 +1 @@
1
+ export * from './dayjs.adatper';
@@ -0,0 +1,2 @@
1
+ export * from './dayjs.adatper';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/@nx-ddd/firestore/src/lib/adapters/dayjs/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC"}
@@ -1,5 +1,4 @@
1
1
  import { FieldValue, Timestamp, FieldPath } from 'firebase/firestore';
2
- import dayjs from 'dayjs';
3
2
  import { FirestoreAdapter, QueryFn as _QueryFn, WhereFilterOp } from '../base';
4
3
  import type firestore from 'firebase/firestore';
5
4
  import { CollectionReference as _CollectionReference, CollectionGroup as _CollectionGroup, Query as _Query, DocumentReference, DocumentData } from '../../interfaces';
@@ -12,7 +11,7 @@ type CollectionLike<AppModelType = DocumentData, DbModelType extends DocumentDat
12
11
  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
12
  export declare function wrapCollectionLike<O extends Origin>(origin: O): InferCollectionLike<O>;
14
13
  export declare function unwrapCollectionLike<AppModelType = DocumentData, DbModelType extends DocumentData = DocumentData>(collection: CollectionLike<AppModelType, DbModelType>): Origin<AppModelType, DbModelType>;
15
- export declare class FirebaseFirestoreAdapter extends FirestoreAdapter<dayjs.Dayjs> {
14
+ export declare class FirebaseFirestoreAdapter<D> extends FirestoreAdapter<D> {
16
15
  firestore: firestore.Firestore;
17
16
  constructor(firestore?: firestore.Firestore);
18
17
  get FieldValue(): typeof FieldValue;
@@ -20,9 +19,6 @@ export declare class FirebaseFirestoreAdapter extends FirestoreAdapter<dayjs.Day
20
19
  get FieldPath(): FieldPath;
21
20
  protected isTimestamp(v: any): v is Timestamp;
22
21
  protected isFieldValue(v: any): v is FieldValue;
23
- protected isDate(v: any): v is dayjs.Dayjs;
24
- convertDateToTimestamp(date: dayjs.Dayjs): Timestamp;
25
- convertTimestampToDate(timestamp: Timestamp): dayjs.Dayjs;
26
22
  doc(path: string): DocumentReference<any>;
27
23
  collection<AppModelType = DocumentData, DbModelType extends DocumentData = DocumentData>(path: string): CollectionReference<AppModelType, DbModelType>;
28
24
  collectionGroup<AppModelType = DocumentData, DbModelType extends DocumentData = DocumentData>(collectionId: string): CollectionGroup<AppModelType, DbModelType>;
@@ -1,6 +1,5 @@
1
1
  import { __decorate, __metadata } from "tslib";
2
2
  import { doc, collection, collectionGroup, FieldValue, Timestamp, setDoc, getDoc, getDocs, getFirestore, onSnapshot, deleteDoc, writeBatch, query, orderBy, limit, updateDoc, where, FieldPath } from 'firebase/firestore';
3
- import dayjs from 'dayjs';
4
3
  import { Subject } from 'rxjs';
5
4
  import { FirestoreAdapter } from '../base';
6
5
  import { Injectable } from '@angular/core';
@@ -44,15 +43,6 @@ let FirebaseFirestoreAdapter = class FirebaseFirestoreAdapter extends FirestoreA
44
43
  isFieldValue(v) {
45
44
  return v instanceof this.FieldValue;
46
45
  }
47
- isDate(v) {
48
- return dayjs.isDayjs(v);
49
- }
50
- convertDateToTimestamp(date) {
51
- return Timestamp.fromDate(date.toDate());
52
- }
53
- convertTimestampToDate(timestamp) {
54
- return dayjs(timestamp.toDate());
55
- }
56
46
  doc(path) {
57
47
  const docRef = doc(this.firestore, path);
58
48
  return {
@@ -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,12 +1,17 @@
1
+ import { FirestoreAdapter } from '../adapters/base';
1
2
  import { DocumentSnapshot } from '../interfaces';
2
3
  export interface IFirestoreConverter<E extends {
3
4
  id: string;
4
5
  }> {
5
6
  fromFirestore(doc: DocumentSnapshot<object>): E;
7
+ fromFirestoreMany(docs: DocumentSnapshot<object>[]): E[];
6
8
  toFirestore(entity: Partial<E>): object;
7
9
  fromObject?(obj: object): E;
8
10
  toObject?(entity: E): object;
9
11
  }
12
+ export declare function getConverter<Entity extends {
13
+ id: string;
14
+ }>(Entity: new () => Entity, adapter?: FirestoreAdapter): IFirestoreConverter<Entity>;
10
15
  export declare function injectConverter<Entity extends {
11
16
  id: string;
12
17
  }>(Entity: new () => Entity): IFirestoreConverter<Entity>;
@@ -1,28 +1,31 @@
1
1
  import { inject } from '@angular/core';
2
- import { plainToInstanceWithValid } from '@nx-ddd/core/util';
2
+ import { plainToInstanceWithValid } from '@nx-ddd/core';
3
3
  import { FirestoreAdapter } from '../adapters/base';
4
- import { instanceToPlain } from 'class-transformer';
4
+ class FirestoreHelper {
5
+ static fromFirestore(doc, Entity, adapter) {
6
+ const data = adapter.fromFirestore(Object.assign(Object.assign({}, doc.data()), { id: doc.id }), Entity);
7
+ return plainToInstanceWithValid(Entity, data);
8
+ }
9
+ }
5
10
  class BasicConverter {
6
11
  constructor(Entity, adapter) {
7
12
  this.Entity = Entity;
8
13
  this.adapter = adapter;
9
14
  }
10
15
  fromFirestore(doc) {
11
- const data = this.adapter.fromFirestore(Object.assign(Object.assign({}, doc.data()), { id: doc.id }), this.Entity);
12
- return plainToInstanceWithValid(this.Entity, data);
16
+ return this.adapter.fromFirestore(Object.assign(Object.assign({}, doc.data()), { id: doc.id }), this.Entity);
17
+ }
18
+ fromFirestoreMany(docs) {
19
+ return docs.map(doc => this.fromFirestore(doc));
13
20
  }
14
21
  toFirestore(entity) {
15
22
  return this.adapter.toFirestore(entity, this.Entity);
16
23
  }
17
- fromObject(obj) {
18
- return plainToInstanceWithValid(this.Entity, obj);
19
- }
20
- toObject(entity) {
21
- return instanceToPlain(entity);
22
- }
23
24
  }
24
- export function injectConverter(Entity) {
25
- const adapter = inject(FirestoreAdapter);
25
+ export function getConverter(Entity, adapter = inject(FirestoreAdapter)) {
26
26
  return new BasicConverter(Entity, adapter);
27
27
  }
28
+ export function injectConverter(Entity) {
29
+ return getConverter(Entity, inject(FirestoreAdapter));
30
+ }
28
31
  //# sourceMappingURL=converter.js.map