@nx-ddd/firestore 16.2.0 → 16.3.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/README.md +76 -6
- package/adapters/admin/admin.adapter.d.ts +16 -12
- package/adapters/admin/admin.adapter.js +25 -23
- package/adapters/admin/admin.adapter.js.map +1 -1
- package/adapters/admin/index.js +1 -4
- package/adapters/admin/index.js.map +1 -1
- package/adapters/base/base.adapter.d.ts +8 -4
- package/adapters/base/base.adapter.js +80 -51
- package/adapters/base/base.adapter.js.map +1 -1
- package/adapters/base/index.js +1 -4
- package/adapters/base/index.js.map +1 -1
- package/adapters/firebase/firebase.adapter.d.ts +2 -2
- package/adapters/firebase/firebase.adapter.js +43 -41
- package/adapters/firebase/firebase.adapter.js.map +1 -1
- package/adapters/firebase/index.js +1 -4
- package/adapters/firebase/index.js.map +1 -1
- package/adapters/index.d.ts +0 -2
- package/adapters/index.js +1 -6
- package/adapters/index.js.map +1 -1
- package/converter/converter.d.ts +18 -12
- package/converter/converter.js +14 -28
- package/converter/converter.js.map +1 -1
- package/converter/index.js +1 -4
- package/converter/index.js.map +1 -1
- package/dao/firestore.dao.js +1 -5
- package/dao/firestore.dao.js.map +1 -1
- package/dao/index.js +1 -4
- package/dao/index.js.map +1 -1
- package/decorators/decorators.d.ts +4 -4
- package/decorators/decorators.js +26 -33
- package/decorators/decorators.js.map +1 -1
- package/decorators/index.js +1 -4
- package/decorators/index.js.map +1 -1
- package/index.d.ts +1 -0
- package/index.js +7 -9
- package/index.js.map +1 -1
- package/interfaces/index.js +1 -4
- package/interfaces/index.js.map +1 -1
- package/interfaces/interfaces.js +1 -2
- package/interfaces/interfaces.js.map +1 -1
- package/package.json +11 -5
- package/path-builder/index.js +1 -4
- package/path-builder/index.js.map +1 -1
- package/path-builder/path-builder.js +7 -14
- package/path-builder/path-builder.js.map +1 -1
- package/query/firestore.query.d.ts +8 -3
- package/query/firestore.query.js +37 -17
- package/query/firestore.query.js.map +1 -1
- package/query/index.js +1 -4
- package/query/index.js.map +1 -1
- package/repository/index.d.ts +0 -1
- package/repository/index.js +1 -5
- package/repository/index.js.map +1 -1
- package/repository/repository.d.ts +12 -14
- package/repository/repository.js +26 -24
- package/repository/repository.js.map +1 -1
- package/testing/common.d.ts +1 -0
- package/testing/common.js +15 -15
- package/testing/common.js.map +1 -1
- package/testing/index.d.ts +0 -2
- package/testing/index.js +1 -6
- package/testing/index.js.map +1 -1
- package/repository/decorator.d.ts +0 -8
- package/repository/decorator.js +0 -41
- package/repository/decorator.js.map +0 -1
- package/testing/domain.d.ts +0 -12
- package/testing/domain.js +0 -22
- package/testing/domain.js.map +0 -1
- package/testing/repository.d.ts +0 -6
- package/testing/repository.js +0 -24
- package/testing/repository.js.map +0 -1
|
@@ -1,12 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.resolvePaths = exports.parsePath = exports.pathBuilderFactory = exports.FirestorePathBuilder = void 0;
|
|
4
|
-
class FirestorePathBuilder {
|
|
1
|
+
export class FirestorePathBuilder {
|
|
5
2
|
doc(param) {
|
|
6
|
-
return
|
|
3
|
+
return resolvePaths(param, this.paths);
|
|
7
4
|
}
|
|
8
5
|
collection(param = {}) {
|
|
9
|
-
return
|
|
6
|
+
return resolvePaths(param, this.paths.slice(0, -1));
|
|
10
7
|
}
|
|
11
8
|
collectionGroup() {
|
|
12
9
|
return this.paths[this.paths.length - 2];
|
|
@@ -15,23 +12,19 @@ class FirestorePathBuilder {
|
|
|
15
12
|
this.paths = paths;
|
|
16
13
|
}
|
|
17
14
|
}
|
|
18
|
-
|
|
19
|
-
const
|
|
20
|
-
const paths = (0, exports.parsePath)(path);
|
|
15
|
+
export const pathBuilderFactory = (path) => {
|
|
16
|
+
const paths = parsePath(path);
|
|
21
17
|
return new FirestorePathBuilder(paths);
|
|
22
18
|
};
|
|
23
|
-
|
|
24
|
-
const parsePath = (path) => {
|
|
19
|
+
export const parsePath = (path) => {
|
|
25
20
|
const paths = path.split('/').filter(p => p.length);
|
|
26
21
|
if (!paths[paths.length - 1].startsWith(':'))
|
|
27
22
|
paths.push(':id');
|
|
28
23
|
return paths;
|
|
29
24
|
};
|
|
30
|
-
|
|
31
|
-
const resolvePaths = (obj, paths) => {
|
|
25
|
+
export const resolvePaths = (obj, paths) => {
|
|
32
26
|
return paths.map((path) => path.startsWith(':') ? resolvePath(obj, path.slice(1)) : path).join('/');
|
|
33
27
|
};
|
|
34
|
-
exports.resolvePaths = resolvePaths;
|
|
35
28
|
const resolvePath = (obj, key) => {
|
|
36
29
|
if (!(obj === null || obj === void 0 ? void 0 : obj[key]))
|
|
37
30
|
throw new Error(`Invalid key is detected in resolving paths, key: \`${key}\`, obj: \`${JSON.stringify(obj)}\``);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"path-builder.js","sourceRoot":"","sources":["../../../../../packages/@nx-ddd/firestore/src/lib/path-builder/path-builder.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"path-builder.js","sourceRoot":"","sources":["../../../../../packages/@nx-ddd/firestore/src/lib/path-builder/path-builder.ts"],"names":[],"mappings":"AAGA,MAAM,OAAO,oBAAoB;IAC/B,GAAG,CAAC,KAA0B;QAC5B,OAAO,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACzC,CAAC;IAED,UAAU,CAAC,QAAoC,EAAE;QAC/C,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,CAAC,MAAM,kBAAkB,GAAG,CAChC,IAAY,EACa,EAAE;IAC3B,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAC9B,OAAO,IAAI,oBAAoB,CAAC,KAAK,CAAC,CAAC;AACzC,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,IAAY,EAAY,EAAE;IAClD,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,CAAA;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,7 +1,7 @@
|
|
|
1
1
|
import dayjs from 'dayjs';
|
|
2
2
|
import { Observable, ReplaySubject } from 'rxjs';
|
|
3
3
|
import { FirestoreAdapter } from '../adapters/base';
|
|
4
|
-
import {
|
|
4
|
+
import { IFirestoreConverter } from '../converter';
|
|
5
5
|
import { FirestoreDAO } from '../dao';
|
|
6
6
|
import { FirestorePathBuilder } from '../path-builder';
|
|
7
7
|
import { FirestoreCollection, FirestoreCollectionGroup, ToFirestoreData } from '../interfaces';
|
|
@@ -9,14 +9,19 @@ type FirestoreCollectionType<D> = FirestoreCollection<D> | FirestoreCollectionGr
|
|
|
9
9
|
export declare class FirestoreQuery<Entity extends {
|
|
10
10
|
id: string;
|
|
11
11
|
} = any, FirestoreData = ToFirestoreData<Entity, dayjs.Dayjs>> extends FirestoreDAO<Entity, FirestoreData> {
|
|
12
|
-
protected converter:
|
|
12
|
+
protected converter: IFirestoreConverter<Entity>;
|
|
13
13
|
protected pathBuilder: FirestorePathBuilder<Entity>;
|
|
14
|
-
constructor(adapter: FirestoreAdapter, converter:
|
|
14
|
+
constructor(adapter: FirestoreAdapter, converter: IFirestoreConverter<Entity>, pathBuilder: FirestorePathBuilder<Entity>);
|
|
15
15
|
protected readonly collection$: ReplaySubject<FirestoreCollectionType<FirestoreData>>;
|
|
16
16
|
protected readonly list$: Observable<Entity[]>;
|
|
17
|
+
/** @deprecated */
|
|
17
18
|
listChanges(paramMap?: Partial<Entity>, options?: {
|
|
18
19
|
switch?: boolean;
|
|
19
20
|
}): Observable<Entity[]>;
|
|
21
|
+
listChangesV2(paramMap?: Partial<Entity>): Observable<Entity[]>;
|
|
22
|
+
listChangesAfter(updatedAt: dayjs.Dayjs, { limit }?: {
|
|
23
|
+
limit?: number;
|
|
24
|
+
}): Observable<Entity[]>;
|
|
20
25
|
changes({ id }: Partial<Entity>): Observable<Entity>;
|
|
21
26
|
changesV2(params: Partial<Entity>): Observable<Entity>;
|
|
22
27
|
get({ id }: Partial<Entity> & {
|
package/query/firestore.query.js
CHANGED
|
@@ -1,47 +1,68 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
const dao_1 = require("../dao");
|
|
7
|
-
class FirestoreQuery extends dao_1.FirestoreDAO {
|
|
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 {
|
|
8
6
|
constructor(adapter, converter, pathBuilder) {
|
|
9
7
|
super(adapter);
|
|
10
8
|
this.converter = converter;
|
|
11
9
|
this.pathBuilder = pathBuilder;
|
|
12
|
-
this.collection$ = new
|
|
13
|
-
this.list$ = this.collection$.pipe(
|
|
10
|
+
this.collection$ = new ReplaySubject(1);
|
|
11
|
+
this.list$ = this.collection$.pipe(switchMap((collection) => this.listChangesByCollectionRef(collection).pipe(catchError(error => throwError(() => error)))), shareReplay(1));
|
|
14
12
|
this.switchCollectionRef();
|
|
15
13
|
}
|
|
14
|
+
/** @deprecated */
|
|
16
15
|
listChanges(paramMap, options = { switch: true }) {
|
|
17
|
-
return
|
|
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()]));
|
|
18
39
|
}
|
|
19
40
|
changes({ id }) {
|
|
20
41
|
if (!id)
|
|
21
42
|
throw new Error(`Invalid Id. it must be Truthy`);
|
|
22
|
-
return this.list$.pipe(
|
|
43
|
+
return this.list$.pipe(map(entities => entities.find(entity => entity.id === id)), distinctUntilChanged((pre, cur) => JSON.stringify(pre) === JSON.stringify(cur)));
|
|
23
44
|
}
|
|
24
45
|
changesV2(params) {
|
|
25
46
|
const docRef = this.doc(params);
|
|
26
|
-
return docRef.stateChanges().pipe(
|
|
47
|
+
return docRef.stateChanges().pipe(map((doc) => this.converter.fromFirestore(doc)));
|
|
27
48
|
}
|
|
28
49
|
get({ id }) {
|
|
29
|
-
return
|
|
50
|
+
return lastValueFrom(this.list$.pipe(take(1), map(entities => entities.find(entity => entity.id === id))));
|
|
30
51
|
}
|
|
31
52
|
list(paramMap) {
|
|
32
53
|
this.switchCollectionRef(paramMap);
|
|
33
|
-
return
|
|
54
|
+
return lastValueFrom(this.list$.pipe(take(1)));
|
|
34
55
|
}
|
|
35
56
|
listChangesByCollectionRef(collection) {
|
|
36
57
|
const entitiesMap = new Map();
|
|
37
|
-
return collection.stateChanges().pipe(
|
|
58
|
+
return collection.stateChanges().pipe(tap(actions => actions.forEach(({ type, payload: { doc } }) => {
|
|
38
59
|
if (new Set(['added', 'modified']).has(type)) {
|
|
39
60
|
entitiesMap.set(doc.id, this.converter.fromFirestore(doc));
|
|
40
61
|
}
|
|
41
62
|
else if (type === 'removed') {
|
|
42
63
|
entitiesMap.delete(doc.id);
|
|
43
64
|
}
|
|
44
|
-
})),
|
|
65
|
+
})), map(() => [...entitiesMap.values()]));
|
|
45
66
|
}
|
|
46
67
|
switchCollectionRef(paramMap) {
|
|
47
68
|
const collection = this.getCollection(paramMap);
|
|
@@ -51,5 +72,4 @@ class FirestoreQuery extends dao_1.FirestoreDAO {
|
|
|
51
72
|
this.collection$.next(collection);
|
|
52
73
|
}
|
|
53
74
|
}
|
|
54
|
-
exports.FirestoreQuery = FirestoreQuery;
|
|
55
75
|
//# sourceMappingURL=firestore.query.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"firestore.query.js","sourceRoot":"","sources":["../../../../../packages/@nx-ddd/firestore/src/lib/query/firestore.query.ts"],"names":[],"mappings":"
|
|
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.js
CHANGED
package/query/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/@nx-ddd/firestore/src/lib/query/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/@nx-ddd/firestore/src/lib/query/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC"}
|
package/repository/index.d.ts
CHANGED
package/repository/index.js
CHANGED
|
@@ -1,6 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const tslib_1 = require("tslib");
|
|
4
|
-
tslib_1.__exportStar(require("./decorator"), exports);
|
|
5
|
-
tslib_1.__exportStar(require("./repository"), exports);
|
|
1
|
+
export * from './repository';
|
|
6
2
|
//# sourceMappingURL=index.js.map
|
package/repository/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/@nx-ddd/firestore/src/lib/repository/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/@nx-ddd/firestore/src/lib/repository/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC"}
|
|
@@ -1,17 +1,15 @@
|
|
|
1
1
|
import { PartialWithId, Repository } from '@nx-ddd/common/domain/repository';
|
|
2
|
-
import { Dayjs } from 'dayjs';
|
|
3
2
|
import { FirestoreAdapter } from '../adapters/base';
|
|
4
3
|
import { IFirestoreConverter } from '../converter';
|
|
5
4
|
import { FirestorePathBuilder } from '../path-builder';
|
|
6
|
-
import { FirestoreCollection, FirestoreCollectionGroup, FirestoreDocument
|
|
5
|
+
import { FirestoreCollection, FirestoreCollectionGroup, FirestoreDocument } from '../interfaces';
|
|
7
6
|
export declare abstract class BaseFirestoreRepository<Entity extends {
|
|
8
7
|
id: string;
|
|
9
|
-
}
|
|
10
|
-
protected adapter: FirestoreAdapter;
|
|
8
|
+
}> extends Repository<Entity> {
|
|
11
9
|
protected abstract collectionPath: string;
|
|
12
|
-
protected abstract converter: IFirestoreConverter<Entity
|
|
10
|
+
protected abstract converter: IFirestoreConverter<Entity>;
|
|
13
11
|
protected pathBuilder: FirestorePathBuilder<Entity>;
|
|
14
|
-
|
|
12
|
+
protected adapter: FirestoreAdapter;
|
|
15
13
|
list(paramMap?: Partial<Entity>, query?: any): Promise<Entity[]>;
|
|
16
14
|
get(paramMap?: Partial<Entity>): Promise<Entity>;
|
|
17
15
|
save(entity: Entity): Promise<[Entity, boolean]>;
|
|
@@ -22,14 +20,14 @@ export declare abstract class BaseFirestoreRepository<Entity extends {
|
|
|
22
20
|
bulkWrite(entities: Entity[], timestamps?: string[]): Promise<void>;
|
|
23
21
|
bulkCreate(entities: Entity[]): Promise<void>;
|
|
24
22
|
bulkUpdate(entities: PartialWithId<Entity>[]): Promise<void>;
|
|
25
|
-
protected collection(paramMap?: Partial<Entity>): FirestoreCollection<
|
|
26
|
-
protected collectionGroup(): FirestoreCollectionGroup<
|
|
27
|
-
protected doc(paramMap: PartialWithId<Entity>): FirestoreDocument<
|
|
23
|
+
protected collection(paramMap?: Partial<Entity>): FirestoreCollection<object>;
|
|
24
|
+
protected collectionGroup(): FirestoreCollectionGroup<object>;
|
|
25
|
+
protected doc(paramMap: PartialWithId<Entity>): FirestoreDocument<object>;
|
|
28
26
|
protected genId: () => string;
|
|
29
|
-
protected _list(collection: FirestoreCollection<
|
|
30
|
-
protected _get(doc: FirestoreDocument<
|
|
31
|
-
protected _save(doc: FirestoreDocument<
|
|
32
|
-
protected _create(doc: FirestoreDocument<
|
|
33
|
-
protected _set(doc: FirestoreDocument<
|
|
27
|
+
protected _list(collection: FirestoreCollection<object>): Promise<Entity[]>;
|
|
28
|
+
protected _get(doc: FirestoreDocument<object>): Promise<Entity>;
|
|
29
|
+
protected _save(doc: FirestoreDocument<object>, entity: Entity): Promise<[Entity, boolean]>;
|
|
30
|
+
protected _create(doc: FirestoreDocument<object>, entity: Entity): Promise<Entity>;
|
|
31
|
+
protected _set(doc: FirestoreDocument<object>, entity: Partial<Entity>, isUpdate?: boolean): Promise<import("../interfaces").DocumentSnapshot<object>>;
|
|
34
32
|
protected buildServerTimestampObject(keys?: string[]): {};
|
|
35
33
|
}
|
package/repository/repository.js
CHANGED
|
@@ -1,13 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
const
|
|
7
|
-
const to_object_1 = require("@nx-ddd/common/utilities/to-object");
|
|
8
|
-
const utilities_1 = require("@nx-ddd/common/utilities");
|
|
9
|
-
const base_1 = require("../adapters/base");
|
|
10
|
-
const toPromise = callback => new Promise((resolve, reject) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
1
|
+
import { __awaiter, __decorate } from "tslib";
|
|
2
|
+
import { Injectable } from '@angular/core';
|
|
3
|
+
import { Repository } from '@nx-ddd/common/domain/repository';
|
|
4
|
+
import { toObject } from '@nx-ddd/common/utilities/to-object';
|
|
5
|
+
import { generateId } from '@nx-ddd/common/utilities';
|
|
6
|
+
const toPromise = callback => new Promise((resolve, reject) => __awaiter(void 0, void 0, void 0, function* () {
|
|
11
7
|
try {
|
|
12
8
|
resolve(callback());
|
|
13
9
|
}
|
|
@@ -15,14 +11,13 @@ const toPromise = callback => new Promise((resolve, reject) => tslib_1.__awaiter
|
|
|
15
11
|
reject(error);
|
|
16
12
|
}
|
|
17
13
|
}));
|
|
18
|
-
let BaseFirestoreRepository =
|
|
19
|
-
constructor(
|
|
20
|
-
super();
|
|
21
|
-
this.
|
|
22
|
-
this.genId = () => (0, utilities_1.generateId)();
|
|
14
|
+
let BaseFirestoreRepository = class BaseFirestoreRepository extends Repository {
|
|
15
|
+
constructor() {
|
|
16
|
+
super(...arguments);
|
|
17
|
+
this.genId = () => generateId();
|
|
23
18
|
}
|
|
24
19
|
list(paramMap, query = q => q) {
|
|
25
|
-
return
|
|
20
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
26
21
|
const collection = paramMap ? this.collection(paramMap) : this.collectionGroup();
|
|
27
22
|
return this._list(query(collection));
|
|
28
23
|
});
|
|
@@ -35,7 +30,7 @@ let BaseFirestoreRepository = exports.BaseFirestoreRepository = class BaseFirest
|
|
|
35
30
|
return this._save(docRef, entity);
|
|
36
31
|
}
|
|
37
32
|
create(entity) {
|
|
38
|
-
const obj =
|
|
33
|
+
const obj = toObject(entity);
|
|
39
34
|
const id = (obj === null || obj === void 0 ? void 0 : obj.id) || this.genId();
|
|
40
35
|
return toPromise(() => this.doc(Object.assign(Object.assign({}, obj), { id }))).then(doc => this._create(doc, entity));
|
|
41
36
|
}
|
|
@@ -43,7 +38,7 @@ let BaseFirestoreRepository = exports.BaseFirestoreRepository = class BaseFirest
|
|
|
43
38
|
return Promise.all(entities.map(entity => this.create(entity)));
|
|
44
39
|
}
|
|
45
40
|
update(entity) {
|
|
46
|
-
return
|
|
41
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
47
42
|
return this.doc(entity).update(this.adapter.flattenForUpdate(Object.assign(Object.assign({}, this.converter.toFirestore(entity)), this.buildServerTimestampObject(['updatedAt'])))).then(() => { });
|
|
48
43
|
});
|
|
49
44
|
}
|
|
@@ -98,11 +93,18 @@ let BaseFirestoreRepository = exports.BaseFirestoreRepository = class BaseFirest
|
|
|
98
93
|
}));
|
|
99
94
|
}
|
|
100
95
|
_save(doc, entity) {
|
|
101
|
-
return this
|
|
102
|
-
|
|
96
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
97
|
+
const exists = yield doc.exists();
|
|
98
|
+
if (exists) {
|
|
99
|
+
return this._set(doc, entity).then(doc => [this.converter.fromFirestore(doc), false]);
|
|
100
|
+
}
|
|
101
|
+
else {
|
|
102
|
+
return this._create(doc, entity).then(entity => [entity, true]);
|
|
103
|
+
}
|
|
104
|
+
});
|
|
103
105
|
}
|
|
104
106
|
_create(doc, entity) {
|
|
105
|
-
return
|
|
107
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
106
108
|
const exists = yield doc.exists();
|
|
107
109
|
if (exists)
|
|
108
110
|
throw new Error('Document already exists');
|
|
@@ -117,8 +119,8 @@ let BaseFirestoreRepository = exports.BaseFirestoreRepository = class BaseFirest
|
|
|
117
119
|
return keys.reduce((m, k) => (Object.assign(Object.assign({}, m), { [k]: this.adapter.FieldValue.serverTimestamp() })), {});
|
|
118
120
|
}
|
|
119
121
|
};
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
tslib_1.__metadata("design:paramtypes", [base_1.FirestoreAdapter])
|
|
122
|
+
BaseFirestoreRepository = __decorate([
|
|
123
|
+
Injectable()
|
|
123
124
|
], BaseFirestoreRepository);
|
|
125
|
+
export { BaseFirestoreRepository };
|
|
124
126
|
//# sourceMappingURL=repository.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repository.js","sourceRoot":"","sources":["../../../../../packages/@nx-ddd/firestore/src/lib/repository/repository.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"repository.js","sourceRoot":"","sources":["../../../../../packages/@nx-ddd/firestore/src/lib/repository/repository.ts"],"names":[],"mappings":"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"}
|
package/testing/common.d.ts
CHANGED
|
@@ -4,3 +4,4 @@ import { AdminFirestoreAdapter } from '../adapters/admin';
|
|
|
4
4
|
export declare const testAdapterFactory: () => AdminFirestoreAdapter;
|
|
5
5
|
export declare const timestampFactory: (dt: dayjs.Dayjs) => admin.firestore.Timestamp;
|
|
6
6
|
export declare function initializeTest(projectId?: string): AdminFirestoreAdapter;
|
|
7
|
+
export declare function clearFirestoreData(projectId?: string): Promise<void>;
|
package/testing/common.js
CHANGED
|
@@ -1,19 +1,19 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
const
|
|
6
|
-
const
|
|
7
|
-
|
|
8
|
-
exports.testAdapterFactory = testAdapterFactory;
|
|
9
|
-
const timestampFactory = (dt) => {
|
|
10
|
-
return firebase_admin_1.default.firestore.Timestamp.fromDate(dt.toDate());
|
|
1
|
+
import { __awaiter } from "tslib";
|
|
2
|
+
import admin from 'firebase-admin';
|
|
3
|
+
import { AdminFirestoreAdapter } from '../adapters/admin';
|
|
4
|
+
import axios from 'axios';
|
|
5
|
+
export const testAdapterFactory = () => new AdminFirestoreAdapter();
|
|
6
|
+
export const timestampFactory = (dt) => {
|
|
7
|
+
return admin.firestore.Timestamp.fromDate(dt.toDate());
|
|
11
8
|
};
|
|
12
|
-
|
|
13
|
-
function initializeTest(projectId = 'nx-ddd') {
|
|
9
|
+
export function initializeTest(projectId = 'nx-ddd') {
|
|
14
10
|
process.env['FIRESTORE_EMULATOR_HOST'] = 'localhost:8080';
|
|
15
|
-
|
|
16
|
-
return
|
|
11
|
+
admin.initializeApp({ projectId });
|
|
12
|
+
return testAdapterFactory();
|
|
13
|
+
}
|
|
14
|
+
export function clearFirestoreData(projectId = 'nx-ddd') {
|
|
15
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
16
|
+
yield axios.delete(`http://127.0.0.1:8080/emulator/v1/projects/${projectId}/databases/(default)/documents`);
|
|
17
|
+
});
|
|
17
18
|
}
|
|
18
|
-
exports.initializeTest = initializeTest;
|
|
19
19
|
//# sourceMappingURL=common.js.map
|
package/testing/common.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common.js","sourceRoot":"","sources":["../../../../../packages/@nx-ddd/firestore/src/lib/testing/common.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"common.js","sourceRoot":"","sources":["../../../../../packages/@nx-ddd/firestore/src/lib/testing/common.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,gBAAgB,CAAC;AAEnC,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,EAAE,CAAC,IAAI,qBAAqB,EAAE,CAAC;AAEpE,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,EAAe,EAAE,EAAE;IAClD,OAAO,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC;AACzD,CAAC,CAAC;AAEF,MAAM,UAAU,cAAc,CAAC,YAAoB,QAAQ;IACzD,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,GAAG,gBAAgB,CAAC;IAC1D,KAAK,CAAC,aAAa,CAAC,EAAC,SAAS,EAAC,CAAC,CAAC;IACjC,OAAO,kBAAkB,EAAE,CAAC;AAC9B,CAAC;AAED,MAAM,UAAgB,kBAAkB,CAAC,YAAoB,QAAQ;;QACnE,MAAM,KAAK,CAAC,MAAM,CAAC,8CAA8C,SAAS,gCAAgC,CAAC,CAAC;IAC9G,CAAC;CAAA"}
|
package/testing/index.d.ts
CHANGED
package/testing/index.js
CHANGED
|
@@ -1,7 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const tslib_1 = require("tslib");
|
|
4
|
-
tslib_1.__exportStar(require("./common"), exports);
|
|
5
|
-
tslib_1.__exportStar(require("./domain"), exports);
|
|
6
|
-
tslib_1.__exportStar(require("./repository"), exports);
|
|
1
|
+
export * from './common';
|
|
7
2
|
//# sourceMappingURL=index.js.map
|
package/testing/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/@nx-ddd/firestore/src/lib/testing/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/@nx-ddd/firestore/src/lib/testing/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC"}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { Entity } from '@nx-ddd/common/domain/models';
|
|
2
|
-
import { FirestoreQuery } from '../query';
|
|
3
|
-
export interface FirestoreRepository<EntityClass extends typeof Entity = any> {
|
|
4
|
-
Entity: EntityClass;
|
|
5
|
-
path?: string;
|
|
6
|
-
Query?: typeof FirestoreQuery;
|
|
7
|
-
}
|
|
8
|
-
export declare function FirestoreRepository({ Entity, Query, path, }: FirestoreRepository): <T extends new (...args: any[]) => {}>(target: T) => any;
|
package/repository/decorator.js
DELETED
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.FirestoreRepository = void 0;
|
|
4
|
-
const tslib_1 = require("tslib");
|
|
5
|
-
const core_1 = require("@nx-ddd/core");
|
|
6
|
-
const lodash_camelcase_1 = tslib_1.__importDefault(require("lodash.camelcase"));
|
|
7
|
-
const base_1 = require("../adapters/base");
|
|
8
|
-
const converter_1 = require("../converter");
|
|
9
|
-
const path_builder_1 = require("../path-builder");
|
|
10
|
-
const query_1 = require("../query");
|
|
11
|
-
const repository_1 = require("../repository");
|
|
12
|
-
function FirestoreRepository({ Entity,
|
|
13
|
-
// Converter,
|
|
14
|
-
Query, path, }) {
|
|
15
|
-
return function (target) {
|
|
16
|
-
// const __ConverterClass = Converter ?? FirestoreConverter;
|
|
17
|
-
const __QueryClass = Query !== null && Query !== void 0 ? Query : query_1.FirestoreQuery;
|
|
18
|
-
const __path = path !== null && path !== void 0 ? path : resolvePathByEntity(Entity);
|
|
19
|
-
let _ = class _ extends repository_1.BaseFirestoreRepository {
|
|
20
|
-
constructor(adapter) {
|
|
21
|
-
super(adapter);
|
|
22
|
-
this.pathBuilder = (0, path_builder_1.pathBuilderFactory)(__path);
|
|
23
|
-
this.collectionPath = __path;
|
|
24
|
-
this.converter = (0, converter_1.createConverter)(Entity, this.adapter);
|
|
25
|
-
this.query = new __QueryClass(this.adapter, this.converter, this.pathBuilder);
|
|
26
|
-
}
|
|
27
|
-
};
|
|
28
|
-
_ = tslib_1.__decorate([
|
|
29
|
-
(0, core_1.Injectable)(),
|
|
30
|
-
tslib_1.__metadata("design:paramtypes", [base_1.FirestoreAdapter])
|
|
31
|
-
], _);
|
|
32
|
-
;
|
|
33
|
-
Object.defineProperty(_, 'name', { value: target.name, writable: false });
|
|
34
|
-
return _;
|
|
35
|
-
};
|
|
36
|
-
}
|
|
37
|
-
exports.FirestoreRepository = FirestoreRepository;
|
|
38
|
-
function resolvePathByEntity(EntityClass) {
|
|
39
|
-
return `${(0, lodash_camelcase_1.default)(EntityClass.name)}s`;
|
|
40
|
-
}
|
|
41
|
-
//# sourceMappingURL=decorator.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"decorator.js","sourceRoot":"","sources":["../../../../../packages/@nx-ddd/firestore/src/lib/repository/decorator.ts"],"names":[],"mappings":";;;;AAAA,uCAA0C;AAE1C,gFAAyC;AACzC,2CAAoD;AACpD,4CAA+C;AAC/C,kDAAqD;AACrD,oCAA0C;AAC1C,8CAAwD;AAYxD,SAAgB,mBAAmB,CAAC,EAClC,MAAM;AACN,aAAa;AACb,KAAK,EACL,IAAI,GACgB;IACpB,OAAO,UAAkD,MAAS;QAChE,4DAA4D;QAC5D,MAAM,YAAY,GAAG,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,sBAAc,CAAC;QAC7C,MAAM,MAAM,GAAG,IAAI,aAAJ,IAAI,cAAJ,IAAI,GAAI,mBAAmB,CAAC,MAAM,CAAC,CAAC;QAEnD,IACM,CAAC,GADP,MACM,CAAE,SAAQ,oCAAsC;YAOpD,YACE,OAAyB;gBAEzB,KAAK,CAAC,OAAO,CAAC,CAAC;gBATP,gBAAW,GAAG,IAAA,iCAAkB,EAAC,MAAM,CAAC,CAAC;gBACzC,mBAAc,GAAG,MAAM,CAAC;gBACxB,cAAS,GAAG,IAAA,2BAAe,EAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;gBAE5D,UAAK,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;YAMzE,CAAC;SACF,CAAA;QAZK,CAAC;YADN,IAAA,iBAAU,GAAE;qDASA,uBAAgB;WARvB,CAAC,CAYN;QAAA,CAAC;QAEF,MAAM,CAAC,cAAc,CAAC,CAAC,EAAE,MAAM,EAAE,EAAC,KAAK,EAAE,MAAM,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAC,CAAC,CAAC;QAExE,OAAO,CAAC,CAAA;IACV,CAAC,CAAA;AACH,CAAC;AA9BD,kDA8BC;AAED,SAAS,mBAAmB,CAAC,WAA0B;IACrD,OAAO,GAAG,IAAA,0BAAS,EAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC;AAC3C,CAAC"}
|
package/testing/domain.d.ts
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { Entity } from '@nx-ddd/common/domain/models';
|
|
2
|
-
import dayjs from 'dayjs';
|
|
3
|
-
export declare class Transaction extends Entity {
|
|
4
|
-
dealAt: dayjs.Dayjs;
|
|
5
|
-
static readonly FIELDS: string[];
|
|
6
|
-
}
|
|
7
|
-
export declare class UserTransaction extends Transaction {
|
|
8
|
-
userId: string;
|
|
9
|
-
static readonly FIELDS: string[];
|
|
10
|
-
}
|
|
11
|
-
export declare const testTransaction: Entity<string>;
|
|
12
|
-
export declare const testUserTransaction: Entity<string>;
|
package/testing/domain.js
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.testUserTransaction = exports.testTransaction = exports.UserTransaction = exports.Transaction = void 0;
|
|
4
|
-
const tslib_1 = require("tslib");
|
|
5
|
-
const models_1 = require("@nx-ddd/common/domain/models");
|
|
6
|
-
const dayjs_1 = tslib_1.__importDefault(require("dayjs"));
|
|
7
|
-
class Transaction extends models_1.Entity {
|
|
8
|
-
}
|
|
9
|
-
exports.Transaction = Transaction;
|
|
10
|
-
Transaction.FIELDS = ['dealAt', 'createdAt', 'updatedAt'];
|
|
11
|
-
class UserTransaction extends Transaction {
|
|
12
|
-
}
|
|
13
|
-
exports.UserTransaction = UserTransaction;
|
|
14
|
-
UserTransaction.FIELDS = ['dealAt', 'createdAt', 'updatedAt'];
|
|
15
|
-
exports.testTransaction = Transaction.fromObj({
|
|
16
|
-
id: 'test-transaction-0001',
|
|
17
|
-
dealAt: (0, dayjs_1.default)('2018-02-01'),
|
|
18
|
-
createdAt: (0, dayjs_1.default)('2022-01-01'),
|
|
19
|
-
updatedAt: (0, dayjs_1.default)('2022-01-01'),
|
|
20
|
-
});
|
|
21
|
-
exports.testUserTransaction = Transaction.fromObj(Object.assign(Object.assign({}, exports.testTransaction), { userId: 'test-user-0001' }));
|
|
22
|
-
//# sourceMappingURL=domain.js.map
|
package/testing/domain.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"domain.js","sourceRoot":"","sources":["../../../../../packages/@nx-ddd/firestore/src/lib/testing/domain.ts"],"names":[],"mappings":";;;;AAAA,yDAAsD;AACtD,0DAA0B;AAE1B,MAAa,WAAY,SAAQ,eAAM;;AAAvC,kCAIC;AADiB,kBAAM,GAAG,CAAC,QAAQ,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;AAGhE,MAAa,eAAgB,SAAQ,WAAW;;AAAhD,0CAIC;AADiB,sBAAM,GAAG,CAAC,QAAQ,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;AAGnD,QAAA,eAAe,GAAG,WAAW,CAAC,OAAO,CAAC;IACjD,EAAE,EAAE,uBAAuB;IAC3B,MAAM,EAAE,IAAA,eAAK,EAAC,YAAY,CAAC;IAC3B,SAAS,EAAE,IAAA,eAAK,EAAC,YAAY,CAAC;IAC9B,SAAS,EAAE,IAAA,eAAK,EAAC,YAAY,CAAC;CAC/B,CAAC,CAAC;AAEU,QAAA,mBAAmB,GAAG,WAAW,CAAC,OAAO,iCACjD,uBAAe,KAClB,MAAM,EAAE,gBAAgB,IACxB,CAAC"}
|
package/testing/repository.d.ts
DELETED
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { Repository } from "@nx-ddd/common/domain/repository";
|
|
2
|
-
import { Transaction, UserTransaction } from "./domain";
|
|
3
|
-
export declare class TransactionRepository extends Repository<Transaction> {
|
|
4
|
-
}
|
|
5
|
-
export declare class UserTransactionRepository extends Repository<UserTransaction> {
|
|
6
|
-
}
|
package/testing/repository.js
DELETED
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.UserTransactionRepository = exports.TransactionRepository = void 0;
|
|
4
|
-
const tslib_1 = require("tslib");
|
|
5
|
-
const repository_1 = require("@nx-ddd/common/domain/repository");
|
|
6
|
-
const repository_2 = require("../repository");
|
|
7
|
-
const domain_1 = require("./domain");
|
|
8
|
-
let TransactionRepository = exports.TransactionRepository = class TransactionRepository extends repository_1.Repository {
|
|
9
|
-
};
|
|
10
|
-
exports.TransactionRepository = TransactionRepository = tslib_1.__decorate([
|
|
11
|
-
(0, repository_2.FirestoreRepository)({
|
|
12
|
-
Entity: domain_1.Transaction,
|
|
13
|
-
path: 'transactions',
|
|
14
|
-
})
|
|
15
|
-
], TransactionRepository);
|
|
16
|
-
let UserTransactionRepository = exports.UserTransactionRepository = class UserTransactionRepository extends repository_1.Repository {
|
|
17
|
-
};
|
|
18
|
-
exports.UserTransactionRepository = UserTransactionRepository = tslib_1.__decorate([
|
|
19
|
-
(0, repository_2.FirestoreRepository)({
|
|
20
|
-
Entity: domain_1.UserTransaction,
|
|
21
|
-
path: `users/:userId/transactions`,
|
|
22
|
-
})
|
|
23
|
-
], UserTransactionRepository);
|
|
24
|
-
//# sourceMappingURL=repository.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"repository.js","sourceRoot":"","sources":["../../../../../packages/@nx-ddd/firestore/src/lib/testing/repository.ts"],"names":[],"mappings":";;;;AAAA,iEAA8D;AAC9D,8CAAoD;AACpD,qCAAwD;AAMjD,IAAM,qBAAqB,mCAA3B,MAAM,qBAAsB,SAAQ,uBAAuB;CAAI,CAAA;gCAAzD,qBAAqB;IAJjC,IAAA,gCAAmB,EAAC;QACnB,MAAM,EAAE,oBAAW;QACnB,IAAI,EAAE,cAAc;KACrB,CAAC;GACW,qBAAqB,CAAoC;AAM/D,IAAM,yBAAyB,uCAA/B,MAAM,yBAA0B,SAAQ,uBAA2B;CAAI,CAAA;oCAAjE,yBAAyB;IAJrC,IAAA,gCAAmB,EAAC;QACnB,MAAM,EAAE,wBAAe;QACvB,IAAI,EAAE,4BAA4B;KACnC,CAAC;GACW,yBAAyB,CAAwC"}
|