@nx-ddd/firestore 18.13.0-preview-v19f.1 → 19.0.0-preview-merge-graphql-enhanced-to-graphql.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (87) hide show
  1. package/adapters/admin/index.d.ts +40 -1
  2. package/adapters/firebase/index.d.ts +35 -1
  3. package/{adapters/admin/admin.adapter.js → fesm2022/nx-ddd-firestore-adapters-admin.mjs} +23 -22
  4. package/fesm2022/nx-ddd-firestore-adapters-admin.mjs.map +1 -0
  5. package/{adapters/firebase/firebase.adapter.js → fesm2022/nx-ddd-firestore-adapters-firebase.mjs} +20 -23
  6. package/fesm2022/nx-ddd-firestore-adapters-firebase.mjs.map +1 -0
  7. package/fesm2022/nx-ddd-firestore.mjs +796 -0
  8. package/fesm2022/nx-ddd-firestore.mjs.map +1 -0
  9. package/index.d.ts +424 -7
  10. package/package.json +26 -19
  11. package/README.md +0 -96
  12. package/adapters/admin/admin.adapter.d.ts +0 -39
  13. package/adapters/admin/admin.adapter.js.map +0 -1
  14. package/adapters/admin/index.js +0 -2
  15. package/adapters/admin/index.js.map +0 -1
  16. package/adapters/base/base.adapter.d.ts +0 -34
  17. package/adapters/base/base.adapter.js +0 -173
  18. package/adapters/base/base.adapter.js.map +0 -1
  19. package/adapters/base/index.d.ts +0 -1
  20. package/adapters/base/index.js +0 -2
  21. package/adapters/base/index.js.map +0 -1
  22. package/adapters/firebase/firebase.adapter.d.ts +0 -36
  23. package/adapters/firebase/firebase.adapter.js.map +0 -1
  24. package/adapters/firebase/index.js +0 -2
  25. package/adapters/firebase/index.js.map +0 -1
  26. package/adapters/index.d.ts +0 -1
  27. package/adapters/index.js +0 -2
  28. package/adapters/index.js.map +0 -1
  29. package/converter/converter.d.ts +0 -12
  30. package/converter/converter.js +0 -28
  31. package/converter/converter.js.map +0 -1
  32. package/converter/index.d.ts +0 -1
  33. package/converter/index.js +0 -2
  34. package/converter/index.js.map +0 -1
  35. package/dao/firestore.dao.d.ts +0 -17
  36. package/dao/firestore.dao.js +0 -22
  37. package/dao/firestore.dao.js.map +0 -1
  38. package/dao/index.d.ts +0 -1
  39. package/dao/index.js +0 -2
  40. package/dao/index.js.map +0 -1
  41. package/decorators/decorators.d.ts +0 -77
  42. package/decorators/decorators.js +0 -30
  43. package/decorators/decorators.js.map +0 -1
  44. package/decorators/index.d.ts +0 -1
  45. package/decorators/index.js +0 -2
  46. package/decorators/index.js.map +0 -1
  47. package/index.js +0 -8
  48. package/index.js.map +0 -1
  49. package/interfaces/index.d.ts +0 -1
  50. package/interfaces/index.js +0 -2
  51. package/interfaces/index.js.map +0 -1
  52. package/interfaces/interfaces.d.ts +0 -63
  53. package/interfaces/interfaces.js +0 -2
  54. package/interfaces/interfaces.js.map +0 -1
  55. package/path-builder/index.d.ts +0 -1
  56. package/path-builder/index.js +0 -2
  57. package/path-builder/index.js.map +0 -1
  58. package/path-builder/path-builder.d.ts +0 -34
  59. package/path-builder/path-builder.js +0 -33
  60. package/path-builder/path-builder.js.map +0 -1
  61. package/query/firestore.query.d.ts +0 -33
  62. package/query/firestore.query.js +0 -75
  63. package/query/firestore.query.js.map +0 -1
  64. package/query/index.d.ts +0 -1
  65. package/query/index.js +0 -2
  66. package/query/index.js.map +0 -1
  67. package/query/v2/cached-query.d.ts +0 -58
  68. package/query/v2/cached-query.js +0 -102
  69. package/query/v2/cached-query.js.map +0 -1
  70. package/query/v2/index.d.ts +0 -2
  71. package/query/v2/index.js +0 -3
  72. package/query/v2/index.js.map +0 -1
  73. package/query/v2/query.d.ts +0 -27
  74. package/query/v2/query.js +0 -60
  75. package/query/v2/query.js.map +0 -1
  76. package/repository/index.d.ts +0 -1
  77. package/repository/index.js +0 -2
  78. package/repository/index.js.map +0 -1
  79. package/repository/repository.d.ts +0 -45
  80. package/repository/repository.js +0 -163
  81. package/repository/repository.js.map +0 -1
  82. package/testing/common.d.ts +0 -7
  83. package/testing/common.js +0 -19
  84. package/testing/common.js.map +0 -1
  85. package/testing/index.d.ts +0 -1
  86. package/testing/index.js +0 -2
  87. package/testing/index.js.map +0 -1
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=interfaces.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../../../../packages/@nx-ddd/firestore/src/lib/interfaces/interfaces.ts"],"names":[],"mappings":""}
@@ -1 +0,0 @@
1
- export * from './path-builder';
@@ -1,2 +0,0 @@
1
- export * from './path-builder';
2
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/@nx-ddd/firestore/src/lib/path-builder/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC"}
@@ -1,34 +0,0 @@
1
- type CollectionParamMap<Entity extends {
2
- id: string;
3
- }> = Partial<Entity>;
4
- type DocParamMap<Entity extends {
5
- id: string;
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
- };
20
- export declare class FirestorePathBuilder<Entity extends {
21
- id: string;
22
- }, Path extends string = string> {
23
- private paths;
24
- doc(param: DocParamMap<Entity>): string;
25
- collection(param?: Omit<ExtractParams<Path>, 'id'> | {}): string;
26
- collectionGroup(): string;
27
- constructor(paths: string[]);
28
- }
29
- export declare function pathBuilderFactory<E extends {
30
- id: string;
31
- }, Path extends string = string>(path: Path): FirestorePathBuilder<E, Path>;
32
- export declare function parsePath<Path extends string = string>(path: Path): string[];
33
- export declare const resolvePaths: (obj: object, paths: string[]) => string;
34
- export {};
@@ -1,33 +0,0 @@
1
- export class FirestorePathBuilder {
2
- doc(param) {
3
- return resolvePaths(param, this.paths);
4
- }
5
- collection(param = {}) {
6
- return resolvePaths(param, this.paths.slice(0, -1));
7
- }
8
- collectionGroup() {
9
- return this.paths[this.paths.length - 2];
10
- }
11
- constructor(paths) {
12
- this.paths = paths;
13
- }
14
- }
15
- export function pathBuilderFactory(path) {
16
- const paths = parsePath(path);
17
- return new FirestorePathBuilder(paths);
18
- }
19
- export function parsePath(path) {
20
- const paths = path.split('/').filter(p => p.length);
21
- if (!paths[paths.length - 1].startsWith(':'))
22
- paths.push(':id');
23
- return paths;
24
- }
25
- export const resolvePaths = (obj, paths) => {
26
- return paths.map((path) => path.startsWith(':') ? resolvePath(obj, path.slice(1)) : path).join('/');
27
- };
28
- const resolvePath = (obj, key) => {
29
- if (!(obj === null || obj === void 0 ? void 0 : obj[key]))
30
- throw new Error(`Invalid key is detected in resolving paths, key: \`${key}\`, obj: \`${JSON.stringify(obj)}\``);
31
- return obj === null || obj === void 0 ? void 0 : obj[key];
32
- };
33
- //# sourceMappingURL=path-builder.js.map
@@ -1 +0,0 @@
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;AAED,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"}
@@ -1,33 +0,0 @@
1
- import dayjs from 'dayjs';
2
- import { Observable, ReplaySubject } from 'rxjs';
3
- import { FirestoreAdapter } from '../adapters/base';
4
- import { IFirestoreConverter } from '../converter';
5
- import { FirestoreDAO } from '../dao';
6
- import { FirestorePathBuilder } from '../path-builder';
7
- import { CollectionReference, CollectionGroup, ToFirestoreData, CollectionLike } from '../interfaces';
8
- export declare class FirestoreQuery<Entity extends {
9
- id: string;
10
- } = any, FirestoreData = ToFirestoreData<Entity, dayjs.Dayjs>> extends FirestoreDAO<Entity, FirestoreData> {
11
- protected converter: IFirestoreConverter<Entity>;
12
- protected pathBuilder: FirestorePathBuilder<Entity>;
13
- constructor(adapter: FirestoreAdapter, converter: IFirestoreConverter<Entity>, pathBuilder: FirestorePathBuilder<Entity>);
14
- protected readonly collection$: ReplaySubject<CollectionLike<FirestoreData>>;
15
- protected readonly list$: Observable<Entity[]>;
16
- /** @deprecated */
17
- listChanges(paramMap?: Partial<Entity>, options?: {
18
- switch?: boolean;
19
- }): Observable<Entity[]>;
20
- listChangesV2(paramMap?: Partial<Entity>): Observable<Entity[]>;
21
- listChangesAfter(updatedAt: dayjs.Dayjs, { limit }?: {
22
- limit?: number;
23
- }): Observable<Entity[]>;
24
- changes({ id }: Partial<Entity>): Observable<Entity>;
25
- changesV2(params: Partial<Entity>): Observable<Entity>;
26
- get({ id }: Partial<Entity> & {
27
- id: string;
28
- }): Promise<Entity>;
29
- list(paramMap?: Partial<Entity>): Promise<Entity[]>;
30
- protected listChangesByCollectionRef(collection: CollectionReference<FirestoreData> | CollectionGroup<FirestoreData>): Observable<Entity[]>;
31
- protected switchCollectionRef(paramMap?: Partial<Entity>): void;
32
- switchCollection(collection: CollectionLike<any>): void;
33
- }
@@ -1,75 +0,0 @@
1
- import dayjs from 'dayjs';
2
- import { ReplaySubject, lastValueFrom, of, throwError } from 'rxjs';
3
- import { catchError, distinctUntilChanged, map, shareReplay, switchMap, take, tap } from 'rxjs/operators';
4
- import { FirestoreDAO } from '../dao';
5
- export class FirestoreQuery extends FirestoreDAO {
6
- constructor(adapter, converter, pathBuilder) {
7
- super(adapter, pathBuilder);
8
- this.converter = converter;
9
- this.pathBuilder = pathBuilder;
10
- this.collection$ = new ReplaySubject(1);
11
- this.list$ = this.collection$.pipe(switchMap((collection) => this.listChangesByCollectionRef(collection).pipe(catchError(error => throwError(() => error)))), shareReplay(1));
12
- this.switchCollectionRef();
13
- }
14
- /** @deprecated */
15
- listChanges(paramMap, options = { switch: true }) {
16
- return of(paramMap).pipe(tap((paramMap) => (options === null || options === void 0 ? void 0 : options.switch) && this.switchCollectionRef(paramMap)), switchMap(() => this.list$));
17
- }
18
- listChangesV2(paramMap) {
19
- return of(paramMap).pipe(tap((paramMap) => paramMap && this.switchCollectionRef(paramMap)), switchMap(() => this.list$));
20
- }
21
- listChangesAfter(updatedAt, { limit } = {}) {
22
- const entitiesMap = new Map();
23
- const _updatedAt = dayjs.isDayjs(updatedAt) ? this.adapter.convertDateToTimestamp(updatedAt) : updatedAt;
24
- return this.adapter.query(this.collection(), ...[
25
- this.adapter.where('updatedAt', '>', _updatedAt),
26
- this.adapter.orderBy('updatedAt', 'asc'),
27
- limit ? this.adapter.limit(limit) : undefined,
28
- ].filter(Boolean)).stateChanges().pipe(
29
- // bufferTime(1_000),
30
- // map(zippedActions => zippedActions.flat()),
31
- tap(actions => actions.forEach(({ type, payload: { doc } }) => {
32
- if (new Set(['added', 'modified']).has(type)) {
33
- entitiesMap.set(doc.id, this.converter.fromFirestore(doc));
34
- }
35
- else if (type === 'removed') {
36
- entitiesMap.delete(doc.id);
37
- }
38
- })), map(() => [...entitiesMap.values()]));
39
- }
40
- changes({ id }) {
41
- if (!id)
42
- throw new Error(`Invalid Id. it must be Truthy`);
43
- return this.list$.pipe(map(entities => entities.find(entity => entity.id === id)), distinctUntilChanged((pre, cur) => JSON.stringify(pre) === JSON.stringify(cur)));
44
- }
45
- changesV2(params) {
46
- const docRef = this.doc(params);
47
- return docRef.stateChanges().pipe(map((doc) => this.converter.fromFirestore(doc)));
48
- }
49
- get({ id }) {
50
- return lastValueFrom(this.list$.pipe(take(1), map(entities => entities.find(entity => entity.id === id))));
51
- }
52
- list(paramMap) {
53
- this.switchCollectionRef(paramMap);
54
- return lastValueFrom(this.list$.pipe(take(1)));
55
- }
56
- listChangesByCollectionRef(collection) {
57
- const entitiesMap = new Map();
58
- return collection.stateChanges().pipe(tap(actions => actions.forEach(({ type, payload: { doc } }) => {
59
- if (new Set(['added', 'modified']).has(type)) {
60
- entitiesMap.set(doc.id, this.converter.fromFirestore(doc));
61
- }
62
- else if (type === 'removed') {
63
- entitiesMap.delete(doc.id);
64
- }
65
- })), map(() => [...entitiesMap.values()]));
66
- }
67
- switchCollectionRef(paramMap) {
68
- const collection = this.getCollection(paramMap);
69
- this.switchCollection(collection);
70
- }
71
- switchCollection(collection) {
72
- this.collection$.next(collection);
73
- }
74
- }
75
- //# sourceMappingURL=firestore.query.js.map
@@ -1 +0,0 @@
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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"}
package/query/index.d.ts DELETED
@@ -1 +0,0 @@
1
- export * from './firestore.query';
package/query/index.js DELETED
@@ -1,2 +0,0 @@
1
- export * from './firestore.query';
2
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/@nx-ddd/firestore/src/lib/query/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC"}
@@ -1,58 +0,0 @@
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 {};
@@ -1,102 +0,0 @@
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
@@ -1 +0,0 @@
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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"}
@@ -1,2 +0,0 @@
1
- export * from './query';
2
- export * from './cached-query';
package/query/v2/index.js DELETED
@@ -1,3 +0,0 @@
1
- export * from './query';
2
- export * from './cached-query';
3
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
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"}
@@ -1,27 +0,0 @@
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
- protected 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 {};
package/query/v2/query.js DELETED
@@ -1,60 +0,0 @@
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 { catchError, lastValueFrom, map, NEVER, 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)), catchError((error) => {
37
- console.error(error);
38
- return NEVER;
39
- }));
40
- }
41
- getListChanges$ByCollectionLike(collection) {
42
- const entitiesMap = new Map();
43
- return collection.stateChanges().pipe(tap(actions => actions.forEach(({ type, payload: { doc } }) => {
44
- if (new Set(['added', 'modified']).has(type)) {
45
- entitiesMap.set(doc.id, this.converter.fromFirestore(doc));
46
- }
47
- else if (type === 'removed') {
48
- entitiesMap.delete(doc.id);
49
- }
50
- })), map(() => [...entitiesMap.values()]), catchError((error) => {
51
- console.error(error);
52
- return NEVER;
53
- }));
54
- }
55
- };
56
- FirestoreQuery = __decorate([
57
- Injectable()
58
- ], FirestoreQuery);
59
- export { FirestoreQuery };
60
- //# sourceMappingURL=query.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"query.js","sourceRoot":"","sources":["../../../../../../packages/@nx-ddd/firestore/src/lib/query/v2/query.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- export * from './repository';
@@ -1,2 +0,0 @@
1
- export * from './repository';
2
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/@nx-ddd/firestore/src/lib/repository/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC"}
@@ -1,45 +0,0 @@
1
- import { Repository } from '@nx-ddd/common/domain/repository';
2
- import { FirestoreAdapter } from '../adapters/base';
3
- import { IFirestoreConverter } from '../converter';
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 {
11
- id: string;
12
- }> extends Repository<Entity> {
13
- abstract readonly collectionPath: string;
14
- protected abstract converter: IFirestoreConverter<Entity>;
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
- bulkDelete(paramMaps: DocParam<this>[]): Promise<void>;
29
- protected collection(paramMap?: Omit<ExtractParams<typeof this.collectionPath>, 'id'>): CollectionReference<object>;
30
- protected collectionGroup(): CollectionGroup<object>;
31
- protected doc(paramMap: DocParam<this>): DocumentReference<object>;
32
- protected genId: () => string;
33
- protected _list(collection: CollectionReference<object>): Promise<Entity[]>;
34
- protected _get(doc: DocumentReference<object>): Promise<Entity>;
35
- protected _save(doc: DocumentReference<object>, entity: Entity): Promise<[Entity, boolean]>;
36
- protected _create(doc: DocumentReference<object>, entity: Entity): Promise<Entity>;
37
- protected _set(doc: DocumentReference<object>, entity: Partial<Entity>, isUpdate?: boolean): Promise<DocumentSnapshot<object, import("../interfaces").DocumentData>>;
38
- protected buildServerTimestampObject(keys?: string[]): {};
39
- }
40
- /** @deprecated use FirebaseRepository instaed. */
41
- export declare abstract class BaseFirestoreRepository<Entity extends {
42
- id: string;
43
- }> extends FirestoreRepository<Entity> {
44
- }
45
- export {};