@nx-ddd/firestore 17.4.0 → 17.6.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.
@@ -1,9 +1,11 @@
1
1
  import { DocumentSnapshot } from '../interfaces';
2
- export interface IFirestoreConverter<Entity extends {
2
+ export interface IFirestoreConverter<E extends {
3
3
  id: string;
4
4
  }> {
5
- fromFirestore(doc: DocumentSnapshot<object>): Entity;
6
- toFirestore(entity: Partial<Entity>): object;
5
+ fromFirestore(doc: DocumentSnapshot<object>): E;
6
+ toFirestore(entity: Partial<E>): object;
7
+ fromObject?(obj: object): E;
8
+ toObject?(entity: E): object;
7
9
  }
8
10
  export declare function injectConverter<Entity extends {
9
11
  id: string;
@@ -1,6 +1,7 @@
1
1
  import { inject } from '@angular/core';
2
2
  import { plainToInstanceWithValid } from '@nx-ddd/core/util';
3
3
  import { FirestoreAdapter } from '../adapters/base';
4
+ import { instanceToPlain } from 'class-transformer';
4
5
  class BasicConverter {
5
6
  constructor(Entity, adapter) {
6
7
  this.Entity = Entity;
@@ -13,6 +14,12 @@ class BasicConverter {
13
14
  toFirestore(entity) {
14
15
  return this.adapter.toFirestore(entity, this.Entity);
15
16
  }
17
+ fromObject(obj) {
18
+ return plainToInstanceWithValid(this.Entity, obj);
19
+ }
20
+ toObject(entity) {
21
+ return instanceToPlain(entity);
22
+ }
16
23
  }
17
24
  export function injectConverter(Entity) {
18
25
  const adapter = inject(FirestoreAdapter);
@@ -1 +1 @@
1
- {"version":3,"file":"converter.js","sourceRoot":"","sources":["../../../../../packages/@nx-ddd/firestore/src/lib/converter/converter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAQpD,MAAM,cAAc;IAClB,YACqB,MAAmB,EACnB,OAAyB;QADzB,WAAM,GAAN,MAAM,CAAa;QACnB,YAAO,GAAP,OAAO,CAAkB;IAC1C,CAAC;IAEL,aAAa,CAAC,GAA0B;QACtC,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,iCAClC,GAAG,CAAC,IAAI,EAAE,KACb,EAAE,EAAE,GAAG,CAAC,EAAE,KACT,IAAI,CAAC,MAAM,CAAC,CAAC;QAChB,OAAO,wBAAwB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACrD,CAAC;IAED,WAAW,CAAC,MAAS;QACnB,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,MAAa,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAC9D,CAAC;CACF;AAED,MAAM,UAAU,eAAe,CAC7B,MAAwB;IAExB,MAAM,OAAO,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;IACzC,OAAO,IAAI,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAC7C,CAAC"}
1
+ {"version":3,"file":"converter.js","sourceRoot":"","sources":["../../../../../packages/@nx-ddd/firestore/src/lib/converter/converter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AASpD,MAAM,cAAc;IAClB,YACqB,MAAmB,EACnB,OAAyB;QADzB,WAAM,GAAN,MAAM,CAAa;QACnB,YAAO,GAAP,OAAO,CAAkB;IAC1C,CAAC;IAEL,aAAa,CAAC,GAA0B;QACtC,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,iCAClC,GAAG,CAAC,IAAI,EAAE,KACb,EAAE,EAAE,GAAG,CAAC,EAAE,KACT,IAAI,CAAC,MAAM,CAAC,CAAC;QAChB,OAAO,wBAAwB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACrD,CAAC;IAED,WAAW,CAAC,MAAS;QACnB,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IACvD,CAAC;IAED,UAAU,CAAC,GAAW;QACpB,OAAO,wBAAwB,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACpD,CAAC;IAED,QAAQ,CAAC,MAAS;QAChB,OAAO,eAAe,CAAC,MAAM,CAAC,CAAC;IACjC,CAAC;CACF;AAED,MAAM,UAAU,eAAe,CAC7B,MAAwB;IAExB,MAAM,OAAO,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;IACzC,OAAO,IAAI,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAC7C,CAAC"}
@@ -1,17 +1,17 @@
1
1
  import dayjs from 'dayjs';
2
2
  import { FirestoreAdapter } from '../adapters/base';
3
- import { CollectionReference, CollectionGroup, DocumentReference, ToFirestoreData } from '../interfaces';
3
+ import { CollectionReference, CollectionGroup, DocumentReference, ToFirestoreData, CollectionLike } from '../interfaces';
4
4
  import { FirestorePathBuilder } from '../path-builder';
5
- export declare abstract class FirestoreDAO<Entity extends {
5
+ export declare class FirestoreDAO<Entity extends {
6
6
  id: string;
7
7
  }, FirestoreData = ToFirestoreData<Entity, dayjs.Dayjs>> {
8
8
  protected adapter: FirestoreAdapter;
9
- protected abstract pathBuilder: FirestorePathBuilder<Entity>;
10
- constructor(adapter: FirestoreAdapter);
9
+ protected pathBuilder: FirestorePathBuilder<Entity>;
10
+ constructor(adapter: FirestoreAdapter, pathBuilder: FirestorePathBuilder<Entity>);
11
11
  collection(paramMap?: Partial<Entity>): CollectionReference<FirestoreData>;
12
12
  collectionGroup(): CollectionGroup<FirestoreData>;
13
13
  doc(paramMap: Partial<Entity> & {
14
14
  id: string;
15
15
  }): DocumentReference<FirestoreData>;
16
- getCollection(paramMap?: Partial<Entity>): CollectionReference<FirestoreData, import("../interfaces").DocumentData, any>;
16
+ getCollection(paramMap?: Partial<Entity>): CollectionLike;
17
17
  }
@@ -1,6 +1,7 @@
1
1
  export class FirestoreDAO {
2
- constructor(adapter) {
2
+ constructor(adapter, pathBuilder) {
3
3
  this.adapter = adapter;
4
+ this.pathBuilder = pathBuilder;
4
5
  }
5
6
  collection(paramMap) {
6
7
  const path = this.pathBuilder.collection(paramMap);
@@ -1 +1 @@
1
- {"version":3,"file":"firestore.dao.js","sourceRoot":"","sources":["../../../../../packages/@nx-ddd/firestore/src/lib/dao/firestore.dao.ts"],"names":[],"mappings":"AAMA,MAAM,OAAgB,YAAY;IAMhC,YACY,OAAyB;QAAzB,YAAO,GAAP,OAAO,CAAkB;IACjC,CAAC;IAEL,UAAU,CAAC,QAA0B;QACnC,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAA;QAClD,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAgB,IAAI,CAAC,CAAC;IACtD,CAAC;IAED,eAAe;QACb,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE,CAAC;QAChD,OAAO,IAAI,CAAC,OAAO,CAAC,eAAe,CAAgB,IAAI,CAAC,CAAC;IAC3D,CAAC;IAED,GAAG,CAAC,QAAwC;QAC1C,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC5C,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAgB,IAAI,CAAC,CAAC;IAC/C,CAAC;IAED,aAAa,CAAC,QAA0B;QACtC,OAAO,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;IACvE,CAAC;CACF"}
1
+ {"version":3,"file":"firestore.dao.js","sourceRoot":"","sources":["../../../../../packages/@nx-ddd/firestore/src/lib/dao/firestore.dao.ts"],"names":[],"mappings":"AAMA,MAAM,OAAO,YAAY;IAKvB,YACY,OAAyB,EACzB,WAAyC;QADzC,YAAO,GAAP,OAAO,CAAkB;QACzB,gBAAW,GAAX,WAAW,CAA8B;IACjD,CAAC;IAEL,UAAU,CAAC,QAA0B;QACnC,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAA;QAClD,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAgB,IAAI,CAAC,CAAC;IACtD,CAAC;IAED,eAAe;QACb,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE,CAAC;QAChD,OAAO,IAAI,CAAC,OAAO,CAAC,eAAe,CAAgB,IAAI,CAAC,CAAC;IAC3D,CAAC;IAED,GAAG,CAAC,QAAwC;QAC1C,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC5C,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAgB,IAAI,CAAC,CAAC;IAC/C,CAAC;IAED,aAAa,CAAC,QAA0B;QACtC,OAAO,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;IACvE,CAAC;CACF"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nx-ddd/firestore",
3
- "version": "17.4.0",
3
+ "version": "17.6.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.4.0",
15
- "@nx-ddd/core": "17.4.0",
14
+ "@nx-ddd/common": "17.6.0",
15
+ "@nx-ddd/core": "17.6.0",
16
16
  "axios": "^1.0.0",
17
17
  "class-validator-extended": "^3.2.0",
18
18
  "dayjs": "1.11.10",
@@ -4,7 +4,7 @@ import { catchError, distinctUntilChanged, map, shareReplay, switchMap, take, ta
4
4
  import { FirestoreDAO } from '../dao';
5
5
  export class FirestoreQuery extends FirestoreDAO {
6
6
  constructor(adapter, converter, pathBuilder) {
7
- super(adapter);
7
+ super(adapter, pathBuilder);
8
8
  this.converter = converter;
9
9
  this.pathBuilder = pathBuilder;
10
10
  this.collection$ = new ReplaySubject(1);
@@ -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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"}
@@ -0,0 +1,58 @@
1
+ import { FirestoreQuery } from "./query";
2
+ import { ExtractParams } from "@nx-ddd/firestore/path-builder";
3
+ import Dexie from 'dexie';
4
+ import { Observable } from 'rxjs';
5
+ import dayjs from "dayjs";
6
+ import { CollectionLike } from "@nx-ddd/firestore/interfaces";
7
+ type ColParam<T extends {
8
+ readonly collectionPath: string;
9
+ }> = Omit<ExtractParams<T['collectionPath']>, 'id'>;
10
+ interface EntityData {
11
+ id: string;
12
+ value: string;
13
+ collectionPath: string;
14
+ updatedAt: string;
15
+ }
16
+ declare class DexieAdapter<E extends {
17
+ id: string;
18
+ updatedAt: dayjs.Dayjs;
19
+ }> extends Dexie {
20
+ entities: Dexie.Table<EntityData, string>;
21
+ constructor();
22
+ count$(): Observable<number>;
23
+ getLastUpdatedAt$(collectionPath: string): Observable<dayjs.Dayjs>;
24
+ bulkPut(collectionPath: string, entities: E[]): Promise<string>;
25
+ listChanges(collectionPath: string): Observable<E[]>;
26
+ }
27
+ declare class FirestoreIndexedDbCached<E extends {
28
+ id: string;
29
+ updatedAt: dayjs.Dayjs;
30
+ }> {
31
+ protected collectionPath: string;
32
+ constructor(collectionPath: string);
33
+ readonly adapter: DexieAdapter<E>;
34
+ getLastUpdatedAt$(): Observable<dayjs.Dayjs>;
35
+ setMany(entities: E[]): Promise<string>;
36
+ listChanges(): Observable<E[]>;
37
+ }
38
+ export declare abstract class CachedFirestoreQuery<E extends {
39
+ id: string;
40
+ updatedAt: dayjs.Dayjs;
41
+ } = any> extends FirestoreQuery<E> {
42
+ protected _cached: FirestoreIndexedDbCached<E>;
43
+ protected get cached(): FirestoreIndexedDbCached<E>;
44
+ protected readonly config: {
45
+ throttleTime: number;
46
+ loadChunkSize: number;
47
+ };
48
+ listChanges(paramMap?: ColParam<this>): Observable<E[]>;
49
+ protected _listChange(paramMap?: ColParam<this>): Observable<E[]>;
50
+ protected _listChangesAfter(collection: CollectionLike, updatedAt: dayjs.Dayjs, { limit }?: {
51
+ limit?: number;
52
+ }): Observable<E[]>;
53
+ progressChanges(): Observable<{
54
+ cloud: number;
55
+ local: number;
56
+ }>;
57
+ }
58
+ export {};
@@ -0,0 +1,102 @@
1
+ import { __awaiter, __decorate } from "tslib";
2
+ import { Injectable } from "@angular/core";
3
+ import { FirestoreQuery } from "./query";
4
+ import Dexie, { liveQuery } from 'dexie';
5
+ import { catchError, combineLatest, distinctUntilChanged, map, NEVER, Observable, of, retry, switchMap, tap, throttleTime } from 'rxjs';
6
+ import dayjs from "dayjs";
7
+ function fromDexie(observable) {
8
+ return new Observable(subscriber => observable.subscribe(subscriber));
9
+ }
10
+ class DexieAdapter extends Dexie {
11
+ constructor() {
12
+ super('@nx-ddd/firestore/cached-query');
13
+ this.version(3).stores({ entities: '++id' });
14
+ }
15
+ count$() {
16
+ return fromDexie(liveQuery(() => this.entities.count()));
17
+ }
18
+ getLastUpdatedAt$(collectionPath) {
19
+ return of(null).pipe(switchMap((() => fromDexie(liveQuery(() => this.entities.toArray())))), map((entities) => entities.filter(entity => entity.collectionPath === collectionPath)), map(entities => entities.sort((a, b) => {
20
+ if (!(a === null || a === void 0 ? void 0 : a.updatedAt))
21
+ return -1;
22
+ if (!(b === null || b === void 0 ? void 0 : b.updatedAt))
23
+ return 1;
24
+ return dayjs(a === null || a === void 0 ? void 0 : a.updatedAt).diff(dayjs(b === null || b === void 0 ? void 0 : b.updatedAt));
25
+ }).at(-1)), map(entity => (entity === null || entity === void 0 ? void 0 : entity.updatedAt) ? dayjs(entity === null || entity === void 0 ? void 0 : entity.updatedAt) : dayjs('1970-01-01')), distinctUntilChanged((pre, cur) => pre.isSame(cur)));
26
+ }
27
+ bulkPut(collectionPath, entities) {
28
+ return __awaiter(this, void 0, void 0, function* () {
29
+ return this.entities.bulkPut(entities.map(entity => {
30
+ const key = `${entity.id}`;
31
+ return {
32
+ id: key,
33
+ collectionPath,
34
+ value: JSON.stringify(entity),
35
+ updatedAt: entity.updatedAt.toISOString(),
36
+ };
37
+ }));
38
+ });
39
+ }
40
+ listChanges(collectionPath) {
41
+ return of(null).pipe(switchMap(() => fromDexie(liveQuery(() => this.entities.toArray()))), map((entities) => entities.filter(entity => entity.collectionPath === collectionPath)), map((entities) => entities.map(entity => JSON.parse(entity.value))));
42
+ }
43
+ }
44
+ class FirestoreIndexedDbCached {
45
+ constructor(collectionPath) {
46
+ this.collectionPath = collectionPath;
47
+ this.adapter = new DexieAdapter();
48
+ }
49
+ getLastUpdatedAt$() {
50
+ return this.adapter.getLastUpdatedAt$(this.collectionPath);
51
+ }
52
+ setMany(entities) {
53
+ return __awaiter(this, void 0, void 0, function* () {
54
+ return this.adapter.bulkPut(this.collectionPath, entities);
55
+ });
56
+ }
57
+ listChanges() {
58
+ return this.adapter.listChanges(this.collectionPath);
59
+ }
60
+ }
61
+ let CachedFirestoreQuery = class CachedFirestoreQuery extends FirestoreQuery {
62
+ constructor() {
63
+ super(...arguments);
64
+ this.config = {
65
+ throttleTime: 5000,
66
+ loadChunkSize: 1000,
67
+ };
68
+ }
69
+ get cached() {
70
+ var _a;
71
+ return (_a = this._cached) !== null && _a !== void 0 ? _a : (this._cached = new FirestoreIndexedDbCached(this.collectionPath));
72
+ }
73
+ listChanges(paramMap) {
74
+ const collection = this.dao.getCollection(paramMap);
75
+ return this.cached.getLastUpdatedAt$().pipe(switchMap((lastUpdatedAt) => this._listChangesAfter(collection, lastUpdatedAt, {
76
+ limit: this.config.loadChunkSize,
77
+ }).pipe(retry(3), tap((updated) => this.cached.setMany(updated)), tap((updated) => console.log('updated:', updated)), catchError((error) => (console.error(error), NEVER)))), switchMap(() => this.cached.listChanges()), map((entities) => entities.map(entity => this.converter.fromObject(entity))), throttleTime(this.config.throttleTime));
78
+ }
79
+ _listChange(paramMap) {
80
+ return of(paramMap).pipe(map((paramMap) => this.dao.getCollection(paramMap)), map((collection) => this.adapter.query(collection, this.adapter.limit(10))), switchMap((collection) => this.getListChanges$ByCollectionLike(collection)));
81
+ }
82
+ _listChangesAfter(collection, updatedAt, { limit } = {}) {
83
+ const updatedAtTs = dayjs.isDayjs(updatedAt) ? this.adapter.convertDateToTimestamp(updatedAt) : updatedAt;
84
+ const query = this.adapter.query(collection, ...[
85
+ this.adapter.where('updatedAt', '>', updatedAtTs),
86
+ this.adapter.orderBy('updatedAt', 'asc'),
87
+ limit ? this.adapter.limit(limit) : undefined,
88
+ ].filter(Boolean));
89
+ return this.getListChanges$ByCollectionLike(query);
90
+ }
91
+ progressChanges() {
92
+ return combineLatest({
93
+ cloud: this.count(),
94
+ local: this.listChanges().pipe(map(items => items.length)),
95
+ });
96
+ }
97
+ };
98
+ CachedFirestoreQuery = __decorate([
99
+ Injectable()
100
+ ], CachedFirestoreQuery);
101
+ export { CachedFirestoreQuery };
102
+ //# sourceMappingURL=cached-query.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cached-query.js","sourceRoot":"","sources":["../../../../../../packages/@nx-ddd/firestore/src/lib/query/v2/cached-query.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAEzC,OAAO,KAAK,EAAE,EAAE,SAAS,EAAiC,MAAM,OAAO,CAAC;AACxE,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,oBAAoB,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,MAAM,CAAC;AACxI,OAAO,KAAK,MAAM,OAAO,CAAC;AAM1B,SAAS,SAAS,CAAI,UAA8B;IAClD,OAAO,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;AACxE,CAAC;AASD,MAAM,YAA6D,SAAQ,KAAK;IAG9E;QACE,KAAK,CAAC,gCAAgC,CAAC,CAAC;QACxC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;IAC/C,CAAC;IAED,MAAM;QACJ,OAAO,SAAS,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAC3D,CAAC;IAED,iBAAiB,CAAC,cAAsB;QACtC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAClB,SAAS,CAAC,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,EACtE,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,cAAc,KAAK,cAAc,CAAC,CAAC,EACtF,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACrC,IAAI,CAAC,CAAA,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,SAAS,CAAA;gBAAE,OAAO,CAAC,CAAC,CAAC;YAC7B,IAAI,CAAC,CAAA,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,SAAS,CAAA;gBAAE,OAAO,CAAC,CAAC;YAC5B,OAAO,KAAK,CAAC,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,SAAS,CAAC,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EACV,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,SAAS,EAAC,CAAC,CAAC,KAAK,CAAC,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,EACjF,oBAAoB,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CACpD,CAAC;IACJ,CAAC;IAEK,OAAO,CAAC,cAAsB,EAAE,QAAa;;YACjD,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;gBACjD,MAAM,GAAG,GAAG,GAAG,MAAM,CAAC,EAAE,EAAE,CAAC;gBAC3B,OAAO;oBACL,EAAE,EAAE,GAAG;oBACP,cAAc;oBACd,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;oBAC7B,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,WAAW,EAAE;iBAC1C,CAAC;YACJ,CAAC,CAAC,CAAC,CAAC;QACN,CAAC;KAAA;IAED,WAAW,CAAC,cAAsB;QAChC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAClB,SAAS,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EACpE,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,cAAc,KAAK,cAAc,CAAC,CAAC,EACtF,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAM,CAAC,CAAC,CACzE,CAAC;IACJ,CAAC;CACF;AAED,MAAM,wBAAwB;IAC5B,YAAsB,cAAsB;QAAtB,mBAAc,GAAd,cAAc,CAAQ;QAEnC,YAAO,GAAG,IAAI,YAAY,EAAK,CAAC;IAFO,CAAC;IAIjD,iBAAiB;QACf,OAAO,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAC7D,CAAC;IAEK,OAAO,CAAC,QAAa;;YACzB,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;QAC7D,CAAC;KAAA;IAED,WAAW;QACT,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACvD,CAAC;CACF;AAGM,IAAe,oBAAoB,GAAnC,MAAe,oBAA2E,SAAQ,cAAiB;IAAnH;;QAMc,WAAM,GAAG;YAC1B,YAAY,EAAE,IAAK;YACnB,aAAa,EAAE,IAAK;SACrB,CAAC;IA8CJ,CAAC;IArDC,IAAc,MAAM;;QAClB,aAAO,IAAI,CAAC,OAAO,oCAAZ,IAAI,CAAC,OAAO,GAAK,IAAI,wBAAwB,CAAI,IAAI,CAAC,cAAc,CAAC,EAAC;IAC/E,CAAC;IAOQ,WAAW,CAAC,QAAyB;QAC5C,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,QAAe,CAAC,CAAC;QAC3D,OAAO,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC,IAAI,CACzC,SAAS,CAAC,CAAC,aAAa,EAAE,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE,aAAa,EAAE;YAC7E,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa;SACjC,CAAC,CAAC,IAAI,CACL,KAAK,CAAC,CAAC,CAAC,EACR,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,EAC9C,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,EAClD,UAAU,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC,CACrD,CAAC,EACF,SAAS,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,EAC1C,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAC5E,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CACvC,CAAC;IACJ,CAAC;IAES,WAAW,CAAC,QAAyB;QAC7C,OAAO,EAAE,CAAC,QAAQ,CAAC,CAAC,IAAI,CACtB,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,QAAe,CAAC,CAAC,EAC1D,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAC3E,SAAS,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,IAAI,CAAC,+BAA+B,CAAC,UAAU,CAAC,CAAC,CAC5E,CAAC;IACJ,CAAC;IAES,iBAAiB,CAAC,UAA0B,EAAE,SAAsB,EAAE,EAAC,KAAK,KAAsB,EAAE;QAC5G,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;QACzG,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAC9B,UAAU,EACV,GAAG;YACD,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,GAAG,EAAE,WAAW,CAAC;YACjD,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,CAAC;YACxC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS;SAC9C,CAAC,MAAM,CAAC,OAAO,CAAC,CAClB,CAAC;QACF,OAAO,IAAI,CAAC,+BAA+B,CAAC,KAAK,CAAC,CAAC;IACrD,CAAC;IAED,eAAe;QACb,OAAO,aAAa,CAAC;YACnB,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;YACnB,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;SAC3D,CAAC,CAAC;IACL,CAAC;CACF,CAAA;AAvDqB,oBAAoB;IADzC,UAAU,EAAE;GACS,oBAAoB,CAuDzC"}
@@ -0,0 +1,2 @@
1
+ export * from './query';
2
+ export * from './cached-query';
@@ -0,0 +1,3 @@
1
+ export * from './query';
2
+ export * from './cached-query';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/@nx-ddd/firestore/src/lib/query/v2/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,gBAAgB,CAAC"}
@@ -0,0 +1,27 @@
1
+ import { FirestoreAdapter } from '@nx-ddd/firestore/adapters';
2
+ import { IFirestoreConverter } from '@nx-ddd/firestore/converter';
3
+ import { FirestoreDAO } from '@nx-ddd/firestore/dao';
4
+ import { CollectionLike, DocumentReference } from '@nx-ddd/firestore/interfaces';
5
+ import { ExtractParams, FirestorePathBuilder } from '@nx-ddd/firestore/path-builder';
6
+ import { Observable } from 'rxjs';
7
+ type ColParam<T extends FirestoreQuery<any>> = Omit<ExtractParams<T['collectionPath']>, 'id'>;
8
+ type DocParam<T extends FirestoreQuery<any>> = ColParam<T> & {
9
+ id: string;
10
+ };
11
+ export declare abstract class FirestoreQuery<Entity extends {
12
+ id: string;
13
+ } = any> {
14
+ abstract readonly collectionPath: string;
15
+ abstract readonly converter: IFirestoreConverter<Entity>;
16
+ protected readonly adapter: FirestoreAdapter<any>;
17
+ get pathBuilder(): FirestorePathBuilder<Entity, typeof this.collectionPath>;
18
+ protected get dao(): FirestoreDAO<Entity, import("@nx-ddd/firestore/interfaces").ToFirestoreData<Entity, import("dayjs").Dayjs>>;
19
+ count(paramMap?: ColParam<this>): Promise<number>;
20
+ changes(params: DocParam<this>): Observable<Entity>;
21
+ get(paramMap: DocParam<this>): Promise<Entity>;
22
+ list(paramMap?: ColParam<this>): Promise<Entity[]>;
23
+ listChanges(paramMap?: ColParam<this>): Observable<Entity[]>;
24
+ protected getChanges$ByDocument(doc: DocumentReference): Observable<Entity>;
25
+ protected getListChanges$ByCollectionLike(collection: CollectionLike): Observable<Entity[]>;
26
+ }
27
+ export {};
@@ -0,0 +1,54 @@
1
+ import { __decorate } from "tslib";
2
+ import { inject, Injectable } from '@angular/core';
3
+ import { FirestoreAdapter } from '@nx-ddd/firestore/adapters';
4
+ import { FirestoreDAO } from '@nx-ddd/firestore/dao';
5
+ import { pathBuilderFactory } from '@nx-ddd/firestore/path-builder';
6
+ import { lastValueFrom, map, of, switchMap, take, tap } from 'rxjs';
7
+ let FirestoreQuery = class FirestoreQuery {
8
+ constructor() {
9
+ this.adapter = inject(FirestoreAdapter);
10
+ }
11
+ get pathBuilder() {
12
+ return pathBuilderFactory(this.collectionPath);
13
+ }
14
+ get dao() {
15
+ return new FirestoreDAO(this.adapter, this.pathBuilder);
16
+ }
17
+ count(paramMap) {
18
+ return this.dao.getCollection(paramMap).count();
19
+ }
20
+ changes(params) {
21
+ const docRef = this.dao.doc(params);
22
+ return docRef.stateChanges().pipe(map((doc) => this.converter.fromFirestore(doc)));
23
+ }
24
+ get(paramMap) {
25
+ return lastValueFrom(this.changes(paramMap).pipe(take(1)));
26
+ }
27
+ list(paramMap) {
28
+ return lastValueFrom(this.listChanges(paramMap).pipe(take(1)));
29
+ }
30
+ listChanges(paramMap) {
31
+ return of(paramMap).pipe(map((paramMap) => this.dao.getCollection(paramMap)), switchMap((collection) => {
32
+ return this.getListChanges$ByCollectionLike(collection);
33
+ }));
34
+ }
35
+ getChanges$ByDocument(doc) {
36
+ return doc.stateChanges().pipe(map((doc) => this.converter.fromFirestore(doc)));
37
+ }
38
+ getListChanges$ByCollectionLike(collection) {
39
+ const entitiesMap = new Map();
40
+ return collection.stateChanges().pipe(tap(actions => actions.forEach(({ type, payload: { doc } }) => {
41
+ if (new Set(['added', 'modified']).has(type)) {
42
+ entitiesMap.set(doc.id, this.converter.fromFirestore(doc));
43
+ }
44
+ else if (type === 'removed') {
45
+ entitiesMap.delete(doc.id);
46
+ }
47
+ })), map(() => [...entitiesMap.values()]));
48
+ }
49
+ };
50
+ FirestoreQuery = __decorate([
51
+ Injectable()
52
+ ], FirestoreQuery);
53
+ export { FirestoreQuery };
54
+ //# sourceMappingURL=query.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query.js","sourceRoot":"","sources":["../../../../../../packages/@nx-ddd/firestore/src/lib/query/v2/query.ts"],"names":[],"mappings":"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"}