@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.
- package/adapters/admin/index.d.ts +40 -1
- package/adapters/firebase/index.d.ts +35 -1
- package/{adapters/admin/admin.adapter.js → fesm2022/nx-ddd-firestore-adapters-admin.mjs} +23 -22
- package/fesm2022/nx-ddd-firestore-adapters-admin.mjs.map +1 -0
- package/{adapters/firebase/firebase.adapter.js → fesm2022/nx-ddd-firestore-adapters-firebase.mjs} +20 -23
- package/fesm2022/nx-ddd-firestore-adapters-firebase.mjs.map +1 -0
- package/fesm2022/nx-ddd-firestore.mjs +796 -0
- package/fesm2022/nx-ddd-firestore.mjs.map +1 -0
- package/index.d.ts +424 -7
- package/package.json +26 -19
- package/README.md +0 -96
- package/adapters/admin/admin.adapter.d.ts +0 -39
- package/adapters/admin/admin.adapter.js.map +0 -1
- package/adapters/admin/index.js +0 -2
- package/adapters/admin/index.js.map +0 -1
- package/adapters/base/base.adapter.d.ts +0 -34
- package/adapters/base/base.adapter.js +0 -173
- package/adapters/base/base.adapter.js.map +0 -1
- package/adapters/base/index.d.ts +0 -1
- package/adapters/base/index.js +0 -2
- package/adapters/base/index.js.map +0 -1
- package/adapters/firebase/firebase.adapter.d.ts +0 -36
- package/adapters/firebase/firebase.adapter.js.map +0 -1
- package/adapters/firebase/index.js +0 -2
- package/adapters/firebase/index.js.map +0 -1
- package/adapters/index.d.ts +0 -1
- package/adapters/index.js +0 -2
- package/adapters/index.js.map +0 -1
- package/converter/converter.d.ts +0 -12
- package/converter/converter.js +0 -28
- package/converter/converter.js.map +0 -1
- package/converter/index.d.ts +0 -1
- package/converter/index.js +0 -2
- package/converter/index.js.map +0 -1
- package/dao/firestore.dao.d.ts +0 -17
- package/dao/firestore.dao.js +0 -22
- package/dao/firestore.dao.js.map +0 -1
- package/dao/index.d.ts +0 -1
- package/dao/index.js +0 -2
- package/dao/index.js.map +0 -1
- package/decorators/decorators.d.ts +0 -77
- package/decorators/decorators.js +0 -30
- package/decorators/decorators.js.map +0 -1
- package/decorators/index.d.ts +0 -1
- package/decorators/index.js +0 -2
- package/decorators/index.js.map +0 -1
- package/index.js +0 -8
- package/index.js.map +0 -1
- package/interfaces/index.d.ts +0 -1
- package/interfaces/index.js +0 -2
- package/interfaces/index.js.map +0 -1
- package/interfaces/interfaces.d.ts +0 -63
- package/interfaces/interfaces.js +0 -2
- package/interfaces/interfaces.js.map +0 -1
- package/path-builder/index.d.ts +0 -1
- package/path-builder/index.js +0 -2
- package/path-builder/index.js.map +0 -1
- package/path-builder/path-builder.d.ts +0 -34
- package/path-builder/path-builder.js +0 -33
- package/path-builder/path-builder.js.map +0 -1
- package/query/firestore.query.d.ts +0 -33
- package/query/firestore.query.js +0 -75
- package/query/firestore.query.js.map +0 -1
- package/query/index.d.ts +0 -1
- package/query/index.js +0 -2
- package/query/index.js.map +0 -1
- package/query/v2/cached-query.d.ts +0 -58
- package/query/v2/cached-query.js +0 -102
- package/query/v2/cached-query.js.map +0 -1
- package/query/v2/index.d.ts +0 -2
- package/query/v2/index.js +0 -3
- package/query/v2/index.js.map +0 -1
- package/query/v2/query.d.ts +0 -27
- package/query/v2/query.js +0 -60
- package/query/v2/query.js.map +0 -1
- package/repository/index.d.ts +0 -1
- package/repository/index.js +0 -2
- package/repository/index.js.map +0 -1
- package/repository/repository.d.ts +0 -45
- package/repository/repository.js +0 -163
- package/repository/repository.js.map +0 -1
- package/testing/common.d.ts +0 -7
- package/testing/common.js +0 -19
- package/testing/common.js.map +0 -1
- package/testing/index.d.ts +0 -1
- package/testing/index.js +0 -2
- package/testing/index.js.map +0 -1
package/interfaces/interfaces.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../../../../packages/@nx-ddd/firestore/src/lib/interfaces/interfaces.ts"],"names":[],"mappings":""}
|
package/path-builder/index.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './path-builder';
|
package/path-builder/index.js
DELETED
|
@@ -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
|
-
}
|
package/query/firestore.query.js
DELETED
|
@@ -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
package/query/index.js.map
DELETED
|
@@ -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 {};
|
package/query/v2/cached-query.js
DELETED
|
@@ -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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"}
|
package/query/v2/index.d.ts
DELETED
package/query/v2/index.js
DELETED
package/query/v2/index.js.map
DELETED
|
@@ -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"}
|
package/query/v2/query.d.ts
DELETED
|
@@ -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
|
package/query/v2/query.js.map
DELETED
|
@@ -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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"}
|
package/repository/index.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './repository';
|
package/repository/index.js
DELETED
package/repository/index.js.map
DELETED
|
@@ -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 {};
|