@event-nest/mongodb 3.4.1 → 4.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@event-nest/mongodb",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "4.0.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"description": "Event sourcing module for NestJS using MongoDB. It uses MongoDB collections and transactions to store events and object information",
|
|
6
6
|
"author": "Nick Tsitlakidis",
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
"url": "https://github.com/NickTsitlakidis/event-nest.git"
|
|
10
10
|
},
|
|
11
11
|
"engines": {
|
|
12
|
-
"node": ">=
|
|
12
|
+
"node": ">= 20"
|
|
13
13
|
},
|
|
14
14
|
"type": "commonjs",
|
|
15
15
|
"keywords": [
|
|
@@ -22,17 +22,17 @@
|
|
|
22
22
|
"postgresql"
|
|
23
23
|
],
|
|
24
24
|
"peerDependencies": {
|
|
25
|
-
"@nestjs/common": "
|
|
26
|
-
"@nestjs/core": "^
|
|
27
|
-
"mongodb": "^
|
|
25
|
+
"@nestjs/common": "^^10.0.0 || ^11.0.0",
|
|
26
|
+
"@nestjs/core": "^10.0.0 || ^11.0.0",
|
|
27
|
+
"mongodb": "^6.0.0",
|
|
28
28
|
"reflect-metadata": "^0.1.12 || ^0.2.0",
|
|
29
29
|
"rxjs": "^7.2.0"
|
|
30
30
|
},
|
|
31
31
|
"dependencies": {
|
|
32
32
|
"class-transformer": "^0.5.1",
|
|
33
|
-
"
|
|
33
|
+
"es-toolkit": "^1.32.0",
|
|
34
34
|
"tslib": "^2.3.0",
|
|
35
|
-
"@event-nest/core": "
|
|
35
|
+
"@event-nest/core": "4.0.0"
|
|
36
36
|
},
|
|
37
37
|
"types": "./src/index.d.ts",
|
|
38
38
|
"main": "./src/index.js"
|
|
@@ -17,7 +17,7 @@ class ModuleProviders {
|
|
|
17
17
|
inject: [core_1.DomainEventEmitter],
|
|
18
18
|
provide: core_1.EVENT_STORE,
|
|
19
19
|
useFactory: (eventEmitter) => {
|
|
20
|
-
return new mongo_event_store_1.MongoEventStore(eventEmitter, new mongodb_1.MongoClient(options.connectionUri), options.aggregatesCollection, options.eventsCollection);
|
|
20
|
+
return new mongo_event_store_1.MongoEventStore(eventEmitter, new mongodb_1.MongoClient(options.connectionUri, options.mongoClientConfiguration), options.aggregatesCollection, options.eventsCollection);
|
|
21
21
|
}
|
|
22
22
|
}
|
|
23
23
|
];
|
|
@@ -41,7 +41,7 @@ class ModuleProviders {
|
|
|
41
41
|
inject: ["EVENT_NEST_OPTIONS", core_1.DomainEventEmitter],
|
|
42
42
|
provide: core_1.EVENT_STORE,
|
|
43
43
|
useFactory: (options, eventBus) => {
|
|
44
|
-
const mongoClient = new mongodb_1.MongoClient(options.connectionUri);
|
|
44
|
+
const mongoClient = new mongodb_1.MongoClient(options.connectionUri, options.mongoClientConfiguration);
|
|
45
45
|
return new mongo_event_store_1.MongoEventStore(eventBus, mongoClient, options.aggregatesCollection, options.eventsCollection);
|
|
46
46
|
}
|
|
47
47
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module-providers.js","sourceRoot":"","sources":["../../../../../libs/mongodb/src/lib/module-providers.ts"],"names":[],"mappings":";;;AAAA,2CAAmE;AAEnE,qCAAsC;AAItC,mEAA8D;AAE9D,MAAa,eAAe;IACxB,MAAM,CAAC,MAAM,CAAC,OAA6B;QACvC,OAAO;YACH;gBACI,OAAO,EAAE,yBAAkB;gBAC3B,UAAU,EAAE,GAAG,EAAE;oBACb,OAAO,IAAI,yBAAkB,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;gBACnE,CAAC;aACJ;YACD;gBACI,MAAM,EAAE,CAAC,yBAAkB,CAAC;gBAC5B,OAAO,EAAE,kBAAW;gBACpB,UAAU,EAAE,CAAC,YAAgC,EAAE,EAAE;oBAC7C,OAAO,IAAI,mCAAe,CACtB,YAAY,EACZ,IAAI,qBAAW,CAAC,OAAO,CAAC,aAAa,CAAC,
|
|
1
|
+
{"version":3,"file":"module-providers.js","sourceRoot":"","sources":["../../../../../libs/mongodb/src/lib/module-providers.ts"],"names":[],"mappings":";;;AAAA,2CAAmE;AAEnE,qCAAsC;AAItC,mEAA8D;AAE9D,MAAa,eAAe;IACxB,MAAM,CAAC,MAAM,CAAC,OAA6B;QACvC,OAAO;YACH;gBACI,OAAO,EAAE,yBAAkB;gBAC3B,UAAU,EAAE,GAAG,EAAE;oBACb,OAAO,IAAI,yBAAkB,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;gBACnE,CAAC;aACJ;YACD;gBACI,MAAM,EAAE,CAAC,yBAAkB,CAAC;gBAC5B,OAAO,EAAE,kBAAW;gBACpB,UAAU,EAAE,CAAC,YAAgC,EAAE,EAAE;oBAC7C,OAAO,IAAI,mCAAe,CACtB,YAAY,EACZ,IAAI,qBAAW,CAAC,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC,wBAAwB,CAAC,EACxE,OAAO,CAAC,oBAAoB,EAC5B,OAAO,CAAC,gBAAgB,CAC3B,CAAC;gBACN,CAAC;aACJ;SACJ,CAAC;IACN,CAAC;IAED,MAAM,CAAC,WAAW,CAAC,OAAkC;QACjD,MAAM,eAAe,GAAG;YACpB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,OAAO,EAAE,oBAAoB;YAC7B,UAAU,EAAE,KAAK,EAAE,GAAG,UAAqB,EAAE,EAAE;gBAC3C,OAAO,MAAM,OAAO,CAAC,UAAU,CAAC,GAAG,UAAU,CAAC,CAAC;YACnD,CAAC;SACJ,CAAC;QAEF,MAAM,gBAAgB,GAAG;YACrB,MAAM,EAAE,CAAC,oBAAoB,CAAC;YAC9B,OAAO,EAAE,yBAAkB;YAC3B,UAAU,EAAE,CAAC,OAA6B,EAAE,EAAE;gBAC1C,OAAO,IAAI,yBAAkB,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;YACnE,CAAC;SACJ,CAAC;QAEF,MAAM,kBAAkB,GAAG;YACvB,MAAM,EAAE,CAAC,oBAAoB,EAAE,yBAAkB,CAAC;YAClD,OAAO,EAAE,kBAAW;YACpB,UAAU,EAAE,CAAC,OAA6B,EAAE,QAA4B,EAAE,EAAE;gBACxE,MAAM,WAAW,GAAG,IAAI,qBAAW,CAAC,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC,wBAAwB,CAAC,CAAC;gBAC7F,OAAO,IAAI,mCAAe,CACtB,QAAQ,EACR,WAAW,EACX,OAAO,CAAC,oBAAoB,EAC5B,OAAO,CAAC,gBAAgB,CAC3B,CAAC;YACN,CAAC;SACJ,CAAC;QAEF,OAAO,CAAC,eAAe,EAAE,gBAAgB,EAAE,kBAAkB,CAAC,CAAC;IACnE,CAAC;CACJ;AAzDD,0CAyDC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { CoreModuleOptions } from "@event-nest/core";
|
|
2
|
+
import { MongoClientOptions } from "mongodb";
|
|
2
3
|
export interface MongoDbModuleAsyncOptions {
|
|
3
4
|
inject?: any[];
|
|
4
5
|
useFactory: (...parameters: any[]) => MongodbModuleOptions | Promise<MongodbModuleOptions>;
|
|
@@ -16,4 +17,10 @@ export interface MongodbModuleOptions extends CoreModuleOptions {
|
|
|
16
17
|
* The name of the collection which will be used to store the event objects
|
|
17
18
|
*/
|
|
18
19
|
eventsCollection: string;
|
|
20
|
+
/**
|
|
21
|
+
* Configuration options for the MongoDB client.
|
|
22
|
+
* The options follow the MongoDB Node.js driver options, and they will
|
|
23
|
+
* be passed to the MongoClient constructor.
|
|
24
|
+
*/
|
|
25
|
+
mongoClientConfiguration?: MongoClientOptions;
|
|
19
26
|
}
|
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.MongoEventStore = void 0;
|
|
4
4
|
const core_1 = require("@event-nest/core");
|
|
5
5
|
const common_1 = require("@nestjs/common");
|
|
6
|
+
const es_toolkit_1 = require("es-toolkit");
|
|
6
7
|
const mongodb_1 = require("mongodb");
|
|
7
8
|
class MongoEventStore extends core_1.AbstractEventStore {
|
|
8
9
|
constructor(eventEmitter, _mongoClient, _aggregatesCollectionName, _eventsCollectionName) {
|
|
@@ -23,7 +24,7 @@ class MongoEventStore extends core_1.AbstractEventStore {
|
|
|
23
24
|
.db()
|
|
24
25
|
.collection(this._aggregatesCollectionName)
|
|
25
26
|
.findOne({ _id: new mongodb_1.ObjectId(id) });
|
|
26
|
-
if ((0,
|
|
27
|
+
if ((0, es_toolkit_1.isNil)(found) || (0, es_toolkit_1.isNil)(found["version"])) {
|
|
27
28
|
return -1;
|
|
28
29
|
}
|
|
29
30
|
return found["version"];
|
|
@@ -31,7 +32,7 @@ class MongoEventStore extends core_1.AbstractEventStore {
|
|
|
31
32
|
async findByAggregateRootId(aggregateRootClass, id) {
|
|
32
33
|
const startedAt = Date.now();
|
|
33
34
|
const aggregateRootName = (0, core_1.getAggregateRootName)(aggregateRootClass);
|
|
34
|
-
if ((0,
|
|
35
|
+
if ((0, es_toolkit_1.isNil)(aggregateRootName)) {
|
|
35
36
|
this._logger.error(`Missing aggregate root name for class: ${aggregateRootClass.name}. Use the @AggregateRootName decorator.`);
|
|
36
37
|
throw new core_1.MissingAggregateRootNameException(aggregateRootClass.name);
|
|
37
38
|
}
|
|
@@ -51,7 +52,7 @@ class MongoEventStore extends core_1.AbstractEventStore {
|
|
|
51
52
|
}
|
|
52
53
|
async findByAggregateRootIds(aggregateRootClass, ids) {
|
|
53
54
|
const aggregateRootName = (0, core_1.getAggregateRootName)(aggregateRootClass);
|
|
54
|
-
if ((0,
|
|
55
|
+
if ((0, es_toolkit_1.isNil)(aggregateRootName)) {
|
|
55
56
|
this._logger.error(`Missing aggregate root name for class: ${aggregateRootClass.name}. Use the @AggregateRootName decorator.`);
|
|
56
57
|
throw new core_1.MissingAggregateRootNameException(aggregateRootClass.name);
|
|
57
58
|
}
|
|
@@ -62,7 +63,7 @@ class MongoEventStore extends core_1.AbstractEventStore {
|
|
|
62
63
|
.toArray();
|
|
63
64
|
const grouped = {};
|
|
64
65
|
for (const document of documents) {
|
|
65
|
-
if ((0,
|
|
66
|
+
if ((0, es_toolkit_1.isNil)(grouped[document["aggregateRootId"]])) {
|
|
66
67
|
grouped[document["aggregateRootId"]] = [];
|
|
67
68
|
}
|
|
68
69
|
grouped[document["aggregateRootId"]].push(core_1.StoredEvent.fromStorage(document._id.toHexString(), document["aggregateRootId"], document["eventName"], document["createdAt"], document["aggregateRootVersion"], document["aggregateRootName"], document["payload"]));
|
|
@@ -85,12 +86,12 @@ class MongoEventStore extends core_1.AbstractEventStore {
|
|
|
85
86
|
.findOne({
|
|
86
87
|
_id: new mongodb_1.ObjectId(aggregate.id)
|
|
87
88
|
});
|
|
88
|
-
let foundAggregate = (0,
|
|
89
|
+
let foundAggregate = (0, es_toolkit_1.isNil)(foundAggregateDocument)
|
|
89
90
|
? undefined
|
|
90
91
|
: new core_1.StoredAggregateRoot(foundAggregateDocument._id.toHexString(), foundAggregateDocument["version"]);
|
|
91
92
|
const session = this._mongoClient.startSession();
|
|
92
93
|
await session.withTransaction(async () => {
|
|
93
|
-
if ((0,
|
|
94
|
+
if ((0, es_toolkit_1.isNil)(foundAggregate)) {
|
|
94
95
|
aggregate.version = 0;
|
|
95
96
|
this._logger.debug(`Aggregate ${aggregate.id} does not exist. Will save it`);
|
|
96
97
|
const mapped = { _id: new mongodb_1.ObjectId(aggregate.id), version: aggregate.version };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mongo-event-store.js","sourceRoot":"","sources":["../../../../../../libs/mongodb/src/lib/storage/mongo-event-store.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"mongo-event-store.js","sourceRoot":"","sources":["../../../../../../libs/mongodb/src/lib/storage/mongo-event-store.ts"],"names":[],"mappings":";;;AAAA,2CAU0B;AAC1B,2CAAwC;AACxC,2CAAmC;AACnC,qCAAgD;AAEhD,MAAa,eAAgB,SAAQ,yBAAkB;IAGnD,YACI,YAAgC,EACf,YAAyB,EACzB,yBAAiC,EACjC,qBAA6B;QAE9C,KAAK,CAAC,YAAY,CAAC,CAAC;QAJH,iBAAY,GAAZ,YAAY,CAAa;QACzB,8BAAyB,GAAzB,yBAAyB,CAAQ;QACjC,0BAAqB,GAArB,qBAAqB,CAAQ;QAG9C,IAAI,CAAC,OAAO,GAAG,IAAI,eAAM,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;IACpD,CAAC;IAED,IAAI,wBAAwB;QACxB,OAAO,IAAI,CAAC,yBAAyB,CAAC;IAC1C,CAAC;IAED,IAAI,oBAAoB;QACpB,OAAO,IAAI,CAAC,qBAAqB,CAAC;IACtC,CAAC;IAED,KAAK,CAAC,wBAAwB,CAAC,EAAU;QACrC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,YAAY;aAChC,EAAE,EAAE;aACJ,UAAU,CAAC,IAAI,CAAC,yBAAyB,CAAC;aAC1C,OAAO,CAAC,EAAE,GAAG,EAAE,IAAI,kBAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAExC,IAAI,IAAA,kBAAK,EAAC,KAAK,CAAC,IAAI,IAAA,kBAAK,EAAC,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;YAC1C,OAAO,CAAC,CAAC,CAAC;QACd,CAAC;QAED,OAAO,KAAK,CAAC,SAAS,CAAC,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,qBAAqB,CACvB,kBAAyC,EACzC,EAAU;QAEV,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,MAAM,iBAAiB,GAAG,IAAA,2BAAoB,EAAC,kBAAkB,CAAC,CAAC;QACnE,IAAI,IAAA,kBAAK,EAAC,iBAAiB,CAAC,EAAE,CAAC;YAC3B,IAAI,CAAC,OAAO,CAAC,KAAK,CACd,0CAA0C,kBAAkB,CAAC,IAAI,yCAAyC,CAC7G,CAAC;YACF,MAAM,IAAI,wCAAiC,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACzE,CAAC;QAED,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,YAAY;aACpC,EAAE,EAAE;aACJ,UAAU,CAAC,IAAI,CAAC,qBAAqB,CAAC;aACtC,IAAI,CAAC,EAAE,eAAe,EAAE,EAAE,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,CAAC;aACnE,OAAO,EAAE,CAAC;QACf,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;QACxC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,gCAAgC,EAAE,SAAS,QAAQ,IAAI,CAAC,CAAC;QAC5E,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE;gBAC9B,OAAO,kBAAW,CAAC,WAAW,CAC1B,QAAQ,CAAC,GAAG,CAAC,WAAW,EAAE,EAC1B,QAAQ,CAAC,iBAAiB,CAAC,EAC3B,QAAQ,CAAC,WAAW,CAAC,EACrB,QAAQ,CAAC,WAAW,CAAC,EACrB,QAAQ,CAAC,sBAAsB,CAAC,EAChC,QAAQ,CAAC,mBAAmB,CAAC,EAC7B,QAAQ,CAAC,SAAS,CAAC,CACtB,CAAC;YACN,CAAC,CAAC,CAAC;QACP,CAAC;QAED,OAAO,EAAE,CAAC;IACd,CAAC;IAED,KAAK,CAAC,sBAAsB,CACxB,kBAAyC,EACzC,GAAa;QAEb,MAAM,iBAAiB,GAAG,IAAA,2BAAoB,EAAC,kBAAkB,CAAC,CAAC;QACnE,IAAI,IAAA,kBAAK,EAAC,iBAAiB,CAAC,EAAE,CAAC;YAC3B,IAAI,CAAC,OAAO,CAAC,KAAK,CACd,0CAA0C,kBAAkB,CAAC,IAAI,yCAAyC,CAC7G,CAAC;YACF,MAAM,IAAI,wCAAiC,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACzE,CAAC;QAED,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,YAAY;aACpC,EAAE,EAAE;aACJ,UAAU,CAAC,IAAI,CAAC,qBAAqB,CAAC;aACtC,IAAI,CAAC,EAAE,eAAe,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,CAAC;aAC7E,OAAO,EAAE,CAAC;QAEf,MAAM,OAAO,GAAuC,EAAE,CAAC;QAEvD,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YAC/B,IAAI,IAAA,kBAAK,EAAC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC9C,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,GAAG,EAAE,CAAC;YAC9C,CAAC;YACD,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,CAAC,IAAI,CACrC,kBAAW,CAAC,WAAW,CACnB,QAAQ,CAAC,GAAG,CAAC,WAAW,EAAE,EAC1B,QAAQ,CAAC,iBAAiB,CAAC,EAC3B,QAAQ,CAAC,WAAW,CAAC,EACrB,QAAQ,CAAC,WAAW,CAAC,EACrB,QAAQ,CAAC,sBAAsB,CAAC,EAChC,QAAQ,CAAC,mBAAmB,CAAC,EAC7B,QAAQ,CAAC,SAAS,CAAC,CACtB,CACJ,CAAC;QACN,CAAC;QAED,OAAO,OAAO,CAAC;IACnB,CAAC;IAED,gBAAgB;QACZ,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,kBAAQ,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;IACzD,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,MAA0B,EAAE,SAA8B;QACjE,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtB,OAAO,MAAM,CAAC;QAClB,CAAC;QAED,IAAI,kBAAkB,GAAG,CAAC,CAAC;QAC3B,IAAI,cAAmC,CAAC;QAExC,MAAM,sBAAsB,GAAG,MAAM,IAAI,CAAC,YAAY;aACjD,EAAE,EAAE;aACJ,UAAU,CAAC,IAAI,CAAC,yBAAyB,CAAC;aAC1C,OAAO,CAAC;YACL,GAAG,EAAE,IAAI,kBAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;SAClC,CAAC,CAAC;QAEP,IAAI,cAAc,GAAG,IAAA,kBAAK,EAAC,sBAAsB,CAAC;YAC9C,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,IAAI,0BAAmB,CAAC,sBAAsB,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,sBAAsB,CAAC,SAAS,CAAC,CAAC,CAAC;QAE3G,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC;QACjD,MAAM,OAAO,CAAC,eAAe,CAAC,KAAK,IAAI,EAAE;YACrC,IAAI,IAAA,kBAAK,EAAC,cAAc,CAAC,EAAE,CAAC;gBACxB,SAAS,CAAC,OAAO,GAAG,CAAC,CAAC;gBACtB,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,aAAa,SAAS,CAAC,EAAE,+BAA+B,CAAC,CAAC;gBAC7E,MAAM,MAAM,GAAG,EAAE,GAAG,EAAE,IAAI,kBAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,SAAS,CAAC,OAAO,EAAE,CAAC;gBAC/E,MAAM,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;gBAC1F,cAAc,GAAG,SAAS,CAAC;YAC/B,CAAC;YAED,IAAI,SAAS,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;gBACvC,IAAI,CAAC,OAAO,CAAC,KAAK,CACd,2CAA2C,SAAS,CAAC,EAAE,cAAc,SAAS,CAAC,OAAO,YAAY,cAAc,CAAC,OAAO,EAAE,CAC7H,CAAC;gBACF,MAAM,IAAI,gCAAyB,CAAC,SAAS,CAAC,EAAE,EAAE,cAAc,CAAC,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;YACjG,CAAC;YAED,KAAK,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC,IAAI,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC;gBAClD,kBAAkB,GAAG,SAAS,CAAC,OAAO,GAAG,KAAK,GAAG,CAAC,CAAC;gBACnD,WAAW,CAAC,oBAAoB,GAAG,kBAAkB,CAAC;YAC1D,CAAC;YAED,SAAS,CAAC,OAAO,GAAG,kBAAkB,CAAC;YACvC,cAAc,GAAG,SAAS,CAAC;YAC3B,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,MAAM,CAAC,MAAM,yBAAyB,SAAS,CAAC,EAAE,EAAE,CAAC,CAAC;YAEnF,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;gBAChC,OAAO;oBACH,GAAG,EAAE,IAAI,kBAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;oBAC3B,eAAe,EAAE,KAAK,CAAC,eAAe;oBACtC,iBAAiB,EAAE,KAAK,CAAC,iBAAiB;oBAC1C,oBAAoB,EAAE,KAAK,CAAC,oBAAoB;oBAChD,SAAS,EAAE,KAAK,CAAC,SAAS;oBAC1B,SAAS,EAAE,KAAK,CAAC,SAAS;oBAC1B,OAAO,EAAE,KAAK,CAAC,OAAO;iBACzB,CAAC;YACN,CAAC,CAAC,CAAC;YACH,MAAM,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YACvF,MAAM,IAAI,CAAC,YAAY;iBAClB,EAAE,EAAE;iBACJ,UAAU,CAAC,IAAI,CAAC,yBAAyB,CAAC;iBAC1C,gBAAgB,CACb;gBACI,GAAG,EAAE,IAAI,kBAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;aACvC,EACD;gBACI,IAAI,EAAE,EAAE,OAAO,EAAE,cAAc,CAAC,OAAO,EAAE;aAC5C,CACJ,CAAC;QACV,CAAC,CAAC,CAAC;QACH,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;QACxC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,+BAA+B,SAAS,CAAC,EAAE,SAAS,QAAQ,IAAI,CAAC,CAAC;QACrF,OAAO,MAAM,CAAC;IAClB,CAAC;CACJ;AA7LD,0CA6LC"}
|