@nx-ddd/firestore 17.4.0 → 17.5.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/converter/converter.d.ts +5 -3
- package/converter/converter.js +7 -0
- package/converter/converter.js.map +1 -1
- package/dao/firestore.dao.d.ts +5 -5
- package/dao/firestore.dao.js +2 -1
- package/dao/firestore.dao.js.map +1 -1
- package/package.json +3 -3
- package/query/firestore.query.js +1 -1
- package/query/firestore.query.js.map +1 -1
- package/query/v2/cached-query.d.ts +58 -0
- package/query/v2/cached-query.js +102 -0
- package/query/v2/cached-query.js.map +1 -0
- package/query/v2/index.d.ts +2 -0
- package/query/v2/index.js +3 -0
- package/query/v2/index.js.map +1 -0
- package/query/v2/query.d.ts +27 -0
- package/query/v2/query.js +54 -0
- package/query/v2/query.js.map +1 -0
package/converter/converter.d.ts
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import { DocumentSnapshot } from '../interfaces';
|
|
2
|
-
export interface IFirestoreConverter<
|
|
2
|
+
export interface IFirestoreConverter<E extends {
|
|
3
3
|
id: string;
|
|
4
4
|
}> {
|
|
5
|
-
fromFirestore(doc: DocumentSnapshot<object>):
|
|
6
|
-
toFirestore(entity: Partial<
|
|
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;
|
package/converter/converter.js
CHANGED
|
@@ -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;
|
|
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"}
|
package/dao/firestore.dao.d.ts
CHANGED
|
@@ -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
|
|
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
|
|
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>):
|
|
16
|
+
getCollection(paramMap?: Partial<Entity>): CollectionLike;
|
|
17
17
|
}
|
package/dao/firestore.dao.js
CHANGED
package/dao/firestore.dao.js.map
CHANGED
|
@@ -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,
|
|
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.
|
|
3
|
+
"version": "17.5.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.
|
|
15
|
-
"@nx-ddd/core": "17.
|
|
14
|
+
"@nx-ddd/common": "17.5.0",
|
|
15
|
+
"@nx-ddd/core": "17.5.0",
|
|
16
16
|
"axios": "^1.0.0",
|
|
17
17
|
"class-validator-extended": "^3.2.0",
|
|
18
18
|
"dayjs": "1.11.10",
|
package/query/firestore.query.js
CHANGED
|
@@ -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":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAc,aAAa,EAAE,aAAa,EAAE,EAAE,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAChF,OAAO,EAAE,UAAU,EAAE,oBAAoB,EAAE,GAAG,EAAE,WAAW,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAG1G,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAItC,MAAM,OAAO,cAGX,SAAQ,YAAmC;IAC3C,YACE,OAAyB,EACf,SAAsC,EACtC,WAAyC;QAEnD,KAAK,CAAC,OAAO,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"firestore.query.js","sourceRoot":"","sources":["../../../../../packages/@nx-ddd/firestore/src/lib/query/firestore.query.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAc,aAAa,EAAE,aAAa,EAAE,EAAE,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAChF,OAAO,EAAE,UAAU,EAAE,oBAAoB,EAAE,GAAG,EAAE,WAAW,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAG1G,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAItC,MAAM,OAAO,cAGX,SAAQ,YAAmC;IAC3C,YACE,OAAyB,EACf,SAAsC,EACtC,WAAyC;QAEnD,KAAK,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QAHlB,cAAS,GAAT,SAAS,CAA6B;QACtC,gBAAW,GAAX,WAAW,CAA8B;QAMlC,gBAAW,GAAG,IAAI,aAAa,CAAgC,CAAC,CAAC,CAAC;QAClE,UAAK,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAC9C,SAAS,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,IAAI,CAAC,0BAA0B,CAAC,UAAU,CAAC,CAAC,IAAI,CACxE,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAC7C,CAAC,EACF,WAAW,CAAC,CAAC,CAAC,CACf,CAAA;QATC,IAAI,CAAC,mBAAmB,EAAE,CAAC;IAC7B,CAAC;IAUD,kBAAkB;IAClB,WAAW,CAAC,QAA0B,EAAE,UAA8B,EAAC,MAAM,EAAE,IAAI,EAAC;QAClF,OAAO,EAAE,CAAC,QAAQ,CAAC,CAAC,IAAI,CACtB,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,KAAI,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC,EACxE,SAAS,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAC5B,CAAC;IACJ,CAAC;IAED,aAAa,CAAC,QAA0B;QACtC,OAAO,EAAE,CAAC,QAAQ,CAAC,CAAC,IAAI,CACtB,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,IAAI,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC,EACjE,SAAS,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAC5B,CAAC;IACJ,CAAC;IAED,gBAAgB,CAAC,SAAsB,EAAE,EAAC,KAAK,KAAsB,EAAE;QACrE,MAAM,WAAW,GAAG,IAAI,GAAG,EAAkB,CAAC;QAC9C,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;QACxG,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CACvB,IAAI,CAAC,UAAU,EAAE,EACjB,GAAG;YACD,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,GAAG,EAAE,UAAU,CAAC;YAChD,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,YAAY,EAAE,CAAC,IAAI;QACnB,qBAAqB;QACrB,8CAA8C;QAC9C,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,EAAC,IAAI,EAAE,OAAO,EAAE,EAAC,GAAG,EAAC,EAAC,EAAE,EAAE;YACxD,IAAI,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;gBAC5C,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,GAA4B,CAAC,CAAC,CAAC;aACrF;iBAAM,IAAI,IAAI,KAAK,SAAS,EAAE;gBAC7B,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;aAC5B;QACH,CAAC,CAAC,CAAC,EACH,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,CACrC,CAAC;IACJ,CAAC;IAED,OAAO,CAAC,EAAC,EAAE,EAAkB;QAC3B,IAAI,CAAC,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;QAC1D,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CACpB,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,EAC1D,oBAAoB,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAChF,CAAC;IACJ,CAAC;IAED,SAAS,CAAC,MAAuB;QAC/B,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAa,CAAC,CAAC;QACvC,OAAO,MAAM,CAAC,YAAY,EAAE,CAAC,IAAI,CAC/B,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAE,GAAW,CAAC,CAAC,CACzD,CAAC;IACJ,CAAC;IAED,GAAG,CAAC,EAAC,EAAE,EAAiC;QACtC,OAAO,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAClC,IAAI,CAAC,CAAC,CAAC,EACP,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAC3D,CAAC,CAAC;IACL,CAAC;IAED,IAAI,CAAC,QAA0B;QAC7B,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QACnC,OAAO,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACjD,CAAC;IAES,0BAA0B,CAClC,UAA+E;QAE/E,MAAM,WAAW,GAAG,IAAI,GAAG,EAAe,CAAC;QAC3C,OAAO,UAAU,CAAC,YAAY,EAAE,CAAC,IAAI,CACnC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,EAAC,IAAI,EAAE,OAAO,EAAE,EAAC,GAAG,EAAC,EAAC,EAAE,EAAE;YACxD,IAAI,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;gBAC5C,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,aAAa,CAAE,GAAW,CAAC,CAAC,CAAC;aACrE;iBAAM,IAAI,IAAI,KAAK,SAAS,EAAE;gBAC7B,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;aAC5B;QACH,CAAC,CAAC,CAAC,EACH,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,CACrC,CAAC;IACJ,CAAC;IAES,mBAAmB,CAAC,QAA0B;QACtD,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAChD,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;IACpC,CAAC;IAED,gBAAgB,CAAC,UAA+B;QAC9C,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACpC,CAAC;CACF"}
|
|
@@ -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":"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"}
|
|
@@ -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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"}
|