aws-service-stack 0.10.92
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 +20 -0
- package/dist/_examples/model/user.model.d.ts +6 -0
- package/dist/_examples/model/user.model.js +3 -0
- package/dist/_examples/model/user.model.js.map +1 -0
- package/dist/controller/base-controller.d.ts +34 -0
- package/dist/controller/base-controller.js +151 -0
- package/dist/controller/base-controller.js.map +1 -0
- package/dist/controller/index.d.ts +1 -0
- package/dist/controller/index.js +18 -0
- package/dist/controller/index.js.map +1 -0
- package/dist/exception/errors.d.ts +32 -0
- package/dist/exception/errors.js +46 -0
- package/dist/exception/errors.js.map +1 -0
- package/dist/exception/exception-handler.d.ts +238 -0
- package/dist/exception/exception-handler.js +112 -0
- package/dist/exception/exception-handler.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.js +23 -0
- package/dist/index.js.map +1 -0
- package/dist/model/base.model.d.ts +64 -0
- package/dist/model/base.model.js +20 -0
- package/dist/model/base.model.js.map +1 -0
- package/dist/model/cognito-user.model.d.ts +12 -0
- package/dist/model/cognito-user.model.js +3 -0
- package/dist/model/cognito-user.model.js.map +1 -0
- package/dist/model/filter.model.d.ts +46 -0
- package/dist/model/filter.model.js +22 -0
- package/dist/model/filter.model.js.map +1 -0
- package/dist/model/http.model.d.ts +7 -0
- package/dist/model/http.model.js +12 -0
- package/dist/model/http.model.js.map +1 -0
- package/dist/model/index.d.ts +4 -0
- package/dist/model/index.js +21 -0
- package/dist/model/index.js.map +1 -0
- package/dist/model/schema-validation.d.ts +20 -0
- package/dist/model/schema-validation.js +91 -0
- package/dist/model/schema-validation.js.map +1 -0
- package/dist/provider/apigateway.d.ts +4 -0
- package/dist/provider/apigateway.js +28 -0
- package/dist/provider/apigateway.js.map +1 -0
- package/dist/provider/dynamodb.d.ts +3 -0
- package/dist/provider/dynamodb.js +18 -0
- package/dist/provider/dynamodb.js.map +1 -0
- package/dist/provider/index.d.ts +3 -0
- package/dist/provider/index.js +20 -0
- package/dist/provider/index.js.map +1 -0
- package/dist/provider/opensearch.d.ts +4 -0
- package/dist/provider/opensearch.js +34 -0
- package/dist/provider/opensearch.js.map +1 -0
- package/dist/repositories/base-core.repo.interface.d.ts +129 -0
- package/dist/repositories/base-core.repo.interface.js +3 -0
- package/dist/repositories/base-core.repo.interface.js.map +1 -0
- package/dist/repositories/base-db.repo.d.ts +78 -0
- package/dist/repositories/base-db.repo.interface.d.ts +61 -0
- package/dist/repositories/base-db.repo.interface.js +3 -0
- package/dist/repositories/base-db.repo.interface.js.map +1 -0
- package/dist/repositories/base-db.repo.js +471 -0
- package/dist/repositories/base-db.repo.js.map +1 -0
- package/dist/repositories/base-es.repo.d.ts +31 -0
- package/dist/repositories/base-es.repo.interface.d.ts +13 -0
- package/dist/repositories/base-es.repo.interface.js +3 -0
- package/dist/repositories/base-es.repo.interface.js.map +1 -0
- package/dist/repositories/base-es.repo.js +148 -0
- package/dist/repositories/base-es.repo.js.map +1 -0
- package/dist/repositories/index.d.ts +4 -0
- package/dist/repositories/index.js +21 -0
- package/dist/repositories/index.js.map +1 -0
- package/dist/service/api.services/api.service.d.ts +11 -0
- package/dist/service/api.services/api.service.interface.d.ts +8 -0
- package/dist/service/api.services/api.service.interface.js +3 -0
- package/dist/service/api.services/api.service.interface.js.map +1 -0
- package/dist/service/api.services/api.service.js +103 -0
- package/dist/service/api.services/api.service.js.map +1 -0
- package/dist/service/api.services/index.d.ts +2 -0
- package/dist/service/api.services/index.js +19 -0
- package/dist/service/api.services/index.js.map +1 -0
- package/dist/service/auth.service.d.ts +8 -0
- package/dist/service/auth.service.interface.d.ts +6 -0
- package/dist/service/auth.service.interface.js +3 -0
- package/dist/service/auth.service.interface.js.map +1 -0
- package/dist/service/auth.service.js +90 -0
- package/dist/service/auth.service.js.map +1 -0
- package/dist/service/base.service.d.ts +39 -0
- package/dist/service/base.service.interface.d.ts +106 -0
- package/dist/service/base.service.interface.js +3 -0
- package/dist/service/base.service.interface.js.map +1 -0
- package/dist/service/base.service.js +167 -0
- package/dist/service/base.service.js.map +1 -0
- package/dist/service/index.d.ts +5 -0
- package/dist/service/index.js +22 -0
- package/dist/service/index.js.map +1 -0
- package/dist/service/key-aws.services.d.ts +6 -0
- package/dist/service/key-aws.services.js +48 -0
- package/dist/service/key-aws.services.js.map +1 -0
- package/dist/service/key.services.interface.d.ts +3 -0
- package/dist/service/key.services.interface.js +3 -0
- package/dist/service/key.services.interface.js.map +1 -0
- package/dist/service/socket.service.d.ts +6 -0
- package/dist/service/socket.service.interface.d.ts +3 -0
- package/dist/service/socket.service.interface.js +3 -0
- package/dist/service/socket.service.interface.js.map +1 -0
- package/dist/service/socket.service.js +33 -0
- package/dist/service/socket.service.js.map +1 -0
- package/dist/service/validation.service.interface.d.ts +2 -0
- package/dist/service/validation.service.interface.js +3 -0
- package/dist/service/validation.service.interface.js.map +1 -0
- package/dist/utils/auth.util.d.ts +13 -0
- package/dist/utils/auth.util.js +17 -0
- package/dist/utils/auth.util.js.map +1 -0
- package/dist/utils/dynamodb.utils.d.ts +43 -0
- package/dist/utils/dynamodb.utils.js +303 -0
- package/dist/utils/dynamodb.utils.js.map +1 -0
- package/dist/utils/env.util.d.ts +1 -0
- package/dist/utils/env.util.js +14 -0
- package/dist/utils/env.util.js.map +1 -0
- package/dist/utils/error.util.d.ts +1 -0
- package/dist/utils/error.util.js +5 -0
- package/dist/utils/error.util.js.map +1 -0
- package/dist/utils/file-handler.d.ts +14 -0
- package/dist/utils/file-handler.js +216 -0
- package/dist/utils/file-handler.js.map +1 -0
- package/dist/utils/http.util.d.ts +27 -0
- package/dist/utils/http.util.js +133 -0
- package/dist/utils/http.util.js.map +1 -0
- package/dist/utils/index.d.ts +8 -0
- package/dist/utils/index.js +25 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/json.util.d.ts +1 -0
- package/dist/utils/json.util.js +20 -0
- package/dist/utils/json.util.js.map +1 -0
- package/dist/utils/opensearch.utils.d.ts +40 -0
- package/dist/utils/opensearch.utils.js +293 -0
- package/dist/utils/opensearch.utils.js.map +1 -0
- package/dist/utils/reflection.util.d.ts +20 -0
- package/dist/utils/reflection.util.js +154 -0
- package/dist/utils/reflection.util.js.map +1 -0
- package/dist/utils/validation.util.d.ts +13 -0
- package/dist/utils/validation.util.js +90 -0
- package/dist/utils/validation.util.js.map +1 -0
- package/package.json +106 -0
|
@@ -0,0 +1,471 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
12
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
13
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
14
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
15
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
16
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
17
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
18
|
+
});
|
|
19
|
+
};
|
|
20
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
21
|
+
exports.BaseRepoDBImpl = void 0;
|
|
22
|
+
const client_dynamodb_1 = require("@aws-sdk/client-dynamodb");
|
|
23
|
+
const util_dynamodb_1 = require("@aws-sdk/util-dynamodb");
|
|
24
|
+
const index_1 = require("../index");
|
|
25
|
+
const typedi_1 = require("typedi");
|
|
26
|
+
const errors_1 = require("../exception/errors");
|
|
27
|
+
(0, typedi_1.Service)("BaseRepoDB");
|
|
28
|
+
class BaseRepoDBImpl {
|
|
29
|
+
constructor(tableName, indexMap) {
|
|
30
|
+
this.DYNAMO_QUERY_LIMIT = 25;
|
|
31
|
+
this._tableName = tableName;
|
|
32
|
+
this._indexMap = indexMap;
|
|
33
|
+
}
|
|
34
|
+
incrementValueByField(entityId, fieldName, value) {
|
|
35
|
+
if (value < 0) {
|
|
36
|
+
throw new Error("Increment operation only supports positive values");
|
|
37
|
+
}
|
|
38
|
+
return this.incrementOrDecrementFieldValue(entityId, fieldName, value !== null && value !== void 0 ? value : 1);
|
|
39
|
+
}
|
|
40
|
+
decrementValueByField(entityId, fieldName, value) {
|
|
41
|
+
if (value > 0) {
|
|
42
|
+
throw new errors_1.ErrorDynamoDB(this._tableName, `Decrement operation only supports negative values, inputValue: ${value}, for field: ${fieldName}`);
|
|
43
|
+
}
|
|
44
|
+
return this.incrementOrDecrementFieldValue(entityId, fieldName, value !== null && value !== void 0 ? value : -1);
|
|
45
|
+
}
|
|
46
|
+
transactWrite(operations) {
|
|
47
|
+
throw new Error("Method not implemented.");
|
|
48
|
+
}
|
|
49
|
+
update(entity, fieldNames) {
|
|
50
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
51
|
+
const partitionKey = this._indexMap.partitionKey;
|
|
52
|
+
if (!fieldNames || fieldNames.length === 0)
|
|
53
|
+
return yield this.save(entity);
|
|
54
|
+
if (!entity[partitionKey])
|
|
55
|
+
throw new errors_1.ErrorDynamoDB(this._tableName, `Entity must have an ${partitionKey} field.`);
|
|
56
|
+
const entityCleaned = Object.assign({ [partitionKey]: entity[partitionKey] }, (0, index_1.removeFields)([entity], fieldNames, undefined)[0]);
|
|
57
|
+
const indexedItem = (0, index_1.addIndexValue)(entityCleaned, this._indexMap);
|
|
58
|
+
const { UpdateExpression, ExpressionAttributeNames, ExpressionAttributeValues } = (0, index_1.buildUpdateExpressions)(indexedItem, [partitionKey]);
|
|
59
|
+
const params = {
|
|
60
|
+
TableName: this._tableName,
|
|
61
|
+
Key: (0, util_dynamodb_1.marshall)({ [partitionKey]: indexedItem[partitionKey] }),
|
|
62
|
+
UpdateExpression,
|
|
63
|
+
ExpressionAttributeNames,
|
|
64
|
+
ExpressionAttributeValues,
|
|
65
|
+
ReturnValues: client_dynamodb_1.ReturnValue.ALL_NEW,
|
|
66
|
+
};
|
|
67
|
+
const result = yield this.dynamoDb.send(new client_dynamodb_1.UpdateItemCommand(params));
|
|
68
|
+
return (0, util_dynamodb_1.unmarshall)(result.Attributes);
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
updateMany(entityList, fieldNames) {
|
|
72
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
73
|
+
if (entityList.length === 0)
|
|
74
|
+
return false;
|
|
75
|
+
if (fieldNames === undefined || fieldNames.length === 0) {
|
|
76
|
+
yield this.saveMany(entityList);
|
|
77
|
+
return true;
|
|
78
|
+
}
|
|
79
|
+
const entityListCleaned = (0, index_1.removeFields)(entityList, fieldNames, undefined);
|
|
80
|
+
const partitionKey = this._indexMap.partitionKey;
|
|
81
|
+
const indexedItems = entityListCleaned.map((entity) => {
|
|
82
|
+
return (0, index_1.addIndexValue)(entity, this._indexMap);
|
|
83
|
+
});
|
|
84
|
+
const transactItems = indexedItems
|
|
85
|
+
.map((item) => {
|
|
86
|
+
if (!item[partitionKey])
|
|
87
|
+
throw new Error('Item must have an "id" field.');
|
|
88
|
+
const { UpdateExpression, ExpressionAttributeNames, ExpressionAttributeValues } = (0, index_1.buildUpdateExpressions)(item, [
|
|
89
|
+
partitionKey,
|
|
90
|
+
]);
|
|
91
|
+
return {
|
|
92
|
+
Update: {
|
|
93
|
+
TableName: this._tableName,
|
|
94
|
+
Key: { [partitionKey]: { S: item[partitionKey] } }, // id-г шууд key болгож дамжуулах
|
|
95
|
+
UpdateExpression,
|
|
96
|
+
ExpressionAttributeValues,
|
|
97
|
+
ExpressionAttributeNames,
|
|
98
|
+
},
|
|
99
|
+
};
|
|
100
|
+
})
|
|
101
|
+
.filter(Boolean); // filter(Boolean) нь хоосон утгуудыг арилгана.
|
|
102
|
+
if (transactItems.length > 0) {
|
|
103
|
+
const chunkedItems = (0, index_1.chunkArray)(transactItems, 25); // 25-аас дээш бол багцлах
|
|
104
|
+
for (const chunk of chunkedItems)
|
|
105
|
+
yield this.dynamoDb.send(new client_dynamodb_1.TransactWriteItemsCommand({ TransactItems: chunk }));
|
|
106
|
+
}
|
|
107
|
+
return true;
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
save(entity) {
|
|
111
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
112
|
+
const partitionKey = this._indexMap.partitionKey;
|
|
113
|
+
if (!entity[partitionKey])
|
|
114
|
+
throw new Error(`Entity must have a ${partitionKey} field.`);
|
|
115
|
+
(0, index_1.addDatesAndId)(entity);
|
|
116
|
+
const indexedItem = (0, index_1.addIndexValue)(entity, this._indexMap);
|
|
117
|
+
const params = {
|
|
118
|
+
TableName: this._tableName,
|
|
119
|
+
Item: (0, util_dynamodb_1.marshall)(indexedItem, { removeUndefinedValues: true }),
|
|
120
|
+
};
|
|
121
|
+
try {
|
|
122
|
+
yield this.dynamoDb.send(new client_dynamodb_1.PutItemCommand(params));
|
|
123
|
+
return entity;
|
|
124
|
+
}
|
|
125
|
+
catch (error) {
|
|
126
|
+
console.error("Error saving entity:", error);
|
|
127
|
+
throw new errors_1.ErrorDynamoDB(this._tableName, params, error);
|
|
128
|
+
}
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
saveMany(entities) {
|
|
132
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
133
|
+
if (entities.length === 0)
|
|
134
|
+
throw new Error("Cannot save an empty array of entities.");
|
|
135
|
+
const allSavedEntities = [];
|
|
136
|
+
for (const chunk of (0, index_1.chunkArray)(entities, 25)) {
|
|
137
|
+
chunk.forEach((item) => (0, index_1.addIndexValue)(item, this._indexMap));
|
|
138
|
+
const putRequests = chunk.map((entity) => ({
|
|
139
|
+
PutRequest: { Item: (0, util_dynamodb_1.marshall)(entity, { removeUndefinedValues: true }) },
|
|
140
|
+
}));
|
|
141
|
+
const params = { RequestItems: { [this._tableName]: putRequests } };
|
|
142
|
+
const result = yield this.dynamoDb.send(new client_dynamodb_1.BatchWriteItemCommand(params));
|
|
143
|
+
if (result.UnprocessedItems && Object.keys(result.UnprocessedItems).length > 0)
|
|
144
|
+
console.warn("⚠️ Some items were unprocessed and need to be retried.", result.UnprocessedItems);
|
|
145
|
+
allSavedEntities.push(...chunk);
|
|
146
|
+
}
|
|
147
|
+
return allSavedEntities;
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
delete(id) {
|
|
151
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
152
|
+
const params = {
|
|
153
|
+
TableName: this._tableName,
|
|
154
|
+
Key: (0, util_dynamodb_1.marshall)({ [this._indexMap.partitionKey]: id }),
|
|
155
|
+
};
|
|
156
|
+
try {
|
|
157
|
+
yield this.dynamoDb.send(new client_dynamodb_1.DeleteItemCommand(params));
|
|
158
|
+
return true;
|
|
159
|
+
}
|
|
160
|
+
catch (error) {
|
|
161
|
+
console.error("Error deleting item:", error);
|
|
162
|
+
throw new errors_1.ErrorDynamoDB(this._tableName, params, error);
|
|
163
|
+
}
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
deleteMany(ids) {
|
|
167
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
168
|
+
if ((ids === null || ids === void 0 ? void 0 : ids.length) === 0)
|
|
169
|
+
return false;
|
|
170
|
+
const chunked = (0, index_1.chunkArray)(ids, 25);
|
|
171
|
+
for (const chunk of chunked) {
|
|
172
|
+
const deleteRequests = chunk.map((id) => {
|
|
173
|
+
return {
|
|
174
|
+
DeleteRequest: {
|
|
175
|
+
Key: (0, util_dynamodb_1.marshall)({ [this._indexMap.partitionKey]: id }),
|
|
176
|
+
},
|
|
177
|
+
};
|
|
178
|
+
});
|
|
179
|
+
const params = {
|
|
180
|
+
RequestItems: {
|
|
181
|
+
[this._tableName]: deleteRequests,
|
|
182
|
+
},
|
|
183
|
+
};
|
|
184
|
+
yield this.dynamoDb.send(new client_dynamodb_1.BatchWriteItemCommand(params));
|
|
185
|
+
}
|
|
186
|
+
return true;
|
|
187
|
+
});
|
|
188
|
+
}
|
|
189
|
+
findById(id) {
|
|
190
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
191
|
+
const params = {
|
|
192
|
+
TableName: this._tableName,
|
|
193
|
+
Key: (0, util_dynamodb_1.marshall)({ [this._indexMap.partitionKey]: id }),
|
|
194
|
+
};
|
|
195
|
+
try {
|
|
196
|
+
const result = yield this.dynamoDb.send(new client_dynamodb_1.GetItemCommand(params));
|
|
197
|
+
if (!result.Item)
|
|
198
|
+
return null;
|
|
199
|
+
return (0, util_dynamodb_1.unmarshall)(result.Item);
|
|
200
|
+
}
|
|
201
|
+
catch (error) {
|
|
202
|
+
console.error("Error getting item:", error);
|
|
203
|
+
throw new errors_1.ErrorDynamoDB(this._tableName, params, error);
|
|
204
|
+
}
|
|
205
|
+
});
|
|
206
|
+
}
|
|
207
|
+
findByIds(ids) {
|
|
208
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
209
|
+
var _a, _b, _c;
|
|
210
|
+
let items = [];
|
|
211
|
+
if (!ids || ids.length === 0)
|
|
212
|
+
throw new Error("Item must have entityIds");
|
|
213
|
+
const chunked = (0, index_1.chunkArray)(ids, 100);
|
|
214
|
+
for (const chunk of chunked) {
|
|
215
|
+
const keys = chunk.map((id) => ({ [this._indexMap.partitionKey]: { S: id } }));
|
|
216
|
+
const params = {
|
|
217
|
+
RequestItems: {
|
|
218
|
+
[this._tableName]: { Keys: keys },
|
|
219
|
+
},
|
|
220
|
+
};
|
|
221
|
+
const response = yield this.dynamoDb.send(new client_dynamodb_1.BatchGetItemCommand(params));
|
|
222
|
+
items = (_c = items.concat((_b = (_a = response.Responses) === null || _a === void 0 ? void 0 : _a[this._tableName]) === null || _b === void 0 ? void 0 : _b.map((item) => (0, util_dynamodb_1.unmarshall)(item)))) !== null && _c !== void 0 ? _c : [];
|
|
223
|
+
}
|
|
224
|
+
return items;
|
|
225
|
+
});
|
|
226
|
+
}
|
|
227
|
+
find(filter) {
|
|
228
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
229
|
+
if (filter === undefined)
|
|
230
|
+
filter = { size: this.DYNAMO_QUERY_LIMIT };
|
|
231
|
+
const dbQuery = (0, index_1.buildQueryDB)(this._tableName, filter, this._indexMap);
|
|
232
|
+
const response = yield this.sendCommandDeep(dbQuery, filter === null || filter === void 0 ? void 0 : filter.lastKey);
|
|
233
|
+
const fieldsRemoved = (0, index_1.removeFields)(response === null || response === void 0 ? void 0 : response.items, filter.fieldsInclude, filter.fieldsExclude);
|
|
234
|
+
return { items: fieldsRemoved, lastKey: response === null || response === void 0 ? void 0 : response.lastKey };
|
|
235
|
+
});
|
|
236
|
+
}
|
|
237
|
+
findOne(filter) {
|
|
238
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
239
|
+
const queryInput = (0, index_1.buildQueryDB)(this._tableName, filter, this._indexMap);
|
|
240
|
+
queryInput.Limit = 1;
|
|
241
|
+
const result = yield this.dynamoDb.send(new client_dynamodb_1.QueryCommand(queryInput));
|
|
242
|
+
if (!result.Items || result.Items.length === 0)
|
|
243
|
+
return null;
|
|
244
|
+
return (0, util_dynamodb_1.unmarshall)(result.Items[0]);
|
|
245
|
+
});
|
|
246
|
+
}
|
|
247
|
+
findByIndex(indexName, value) {
|
|
248
|
+
return this.find((0, index_1.parseIndexFilter)(indexName + "=" + value, this._indexMap));
|
|
249
|
+
}
|
|
250
|
+
count(filter) {
|
|
251
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
252
|
+
var _a;
|
|
253
|
+
const queryInput = (0, index_1.buildQueryDB)(this._tableName, filter, this._indexMap);
|
|
254
|
+
queryInput.Select = "COUNT";
|
|
255
|
+
const result = yield this.dynamoDb.send(new client_dynamodb_1.QueryCommand(queryInput));
|
|
256
|
+
return (_a = result.Count) !== null && _a !== void 0 ? _a : 0;
|
|
257
|
+
});
|
|
258
|
+
}
|
|
259
|
+
exists(id) {
|
|
260
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
261
|
+
const key = (0, util_dynamodb_1.marshall)({ [this._indexMap.partitionKey]: id });
|
|
262
|
+
const result = yield this.dynamoDb.send(new client_dynamodb_1.GetItemCommand({
|
|
263
|
+
TableName: this._tableName,
|
|
264
|
+
Key: key,
|
|
265
|
+
ProjectionExpression: this._indexMap.partitionKey,
|
|
266
|
+
}));
|
|
267
|
+
return !!result.Item;
|
|
268
|
+
});
|
|
269
|
+
}
|
|
270
|
+
getRaw(filter) {
|
|
271
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
272
|
+
const queryInput = (0, index_1.buildQueryDB)(this._tableName, filter, this._indexMap);
|
|
273
|
+
return this.dynamoDb.send(new client_dynamodb_1.QueryCommand(queryInput));
|
|
274
|
+
});
|
|
275
|
+
}
|
|
276
|
+
transactionRead(operations) {
|
|
277
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
278
|
+
throw new Error("Method not implemented.");
|
|
279
|
+
});
|
|
280
|
+
}
|
|
281
|
+
transactRead(operations) {
|
|
282
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
283
|
+
throw new Error("Method not implemented.");
|
|
284
|
+
});
|
|
285
|
+
}
|
|
286
|
+
transactionWrite(operations) {
|
|
287
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
288
|
+
const transactItems = [];
|
|
289
|
+
// Create operations
|
|
290
|
+
if (operations.create) {
|
|
291
|
+
for (const { tableName, item } of operations.create) {
|
|
292
|
+
if (!(item === null || item === void 0 ? void 0 : item.id)) {
|
|
293
|
+
item.id = (0, index_1.generateUUID)();
|
|
294
|
+
}
|
|
295
|
+
transactItems.push({
|
|
296
|
+
Put: {
|
|
297
|
+
TableName: tableName,
|
|
298
|
+
Item: (0, util_dynamodb_1.marshall)(item, { removeUndefinedValues: true }),
|
|
299
|
+
},
|
|
300
|
+
});
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
// Update operations
|
|
304
|
+
if (operations.update) {
|
|
305
|
+
for (const { tableName, key, updateData } of operations.update) {
|
|
306
|
+
const { UpdateExpression, ExpressionAttributeNames, ExpressionAttributeValues } = (0, index_1.buildUpdateExpressions)(updateData, ["id"]);
|
|
307
|
+
transactItems.push({
|
|
308
|
+
Update: {
|
|
309
|
+
TableName: tableName,
|
|
310
|
+
Key: (0, util_dynamodb_1.marshall)(key),
|
|
311
|
+
UpdateExpression,
|
|
312
|
+
ExpressionAttributeNames,
|
|
313
|
+
ExpressionAttributeValues,
|
|
314
|
+
},
|
|
315
|
+
});
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
// Delete operations
|
|
319
|
+
if (operations.delete) {
|
|
320
|
+
for (const { tableName, key } of operations.delete) {
|
|
321
|
+
transactItems.push({
|
|
322
|
+
Delete: {
|
|
323
|
+
TableName: tableName,
|
|
324
|
+
Key: (0, util_dynamodb_1.marshall)(key),
|
|
325
|
+
},
|
|
326
|
+
});
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
if (transactItems.length === 0)
|
|
330
|
+
return false;
|
|
331
|
+
// Execute transaction
|
|
332
|
+
try {
|
|
333
|
+
yield this.dynamoDb.send(new client_dynamodb_1.TransactWriteItemsCommand({ TransactItems: transactItems }));
|
|
334
|
+
return true;
|
|
335
|
+
}
|
|
336
|
+
catch (error) {
|
|
337
|
+
console.error("Transaction failed:", error);
|
|
338
|
+
throw new errors_1.ErrorDynamoDB(this._tableName, transactItems, error);
|
|
339
|
+
}
|
|
340
|
+
});
|
|
341
|
+
}
|
|
342
|
+
getTableName() {
|
|
343
|
+
return this._tableName;
|
|
344
|
+
}
|
|
345
|
+
setIndexMap(indexMap) {
|
|
346
|
+
this._indexMap = indexMap;
|
|
347
|
+
return true;
|
|
348
|
+
}
|
|
349
|
+
setTableName(tableName) {
|
|
350
|
+
this._tableName = tableName;
|
|
351
|
+
return true;
|
|
352
|
+
}
|
|
353
|
+
getIndexMap() {
|
|
354
|
+
return this._indexMap;
|
|
355
|
+
}
|
|
356
|
+
incrementOrDecrementFieldValue(entityId, fieldName, delta) {
|
|
357
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
358
|
+
var _a, _b;
|
|
359
|
+
const partitionKey = this._indexMap.partitionKey;
|
|
360
|
+
if (!((_b = (_a = this === null || this === void 0 ? void 0 : this._indexMap) === null || _a === void 0 ? void 0 : _a.numberFields) === null || _b === void 0 ? void 0 : _b.includes(fieldName))) {
|
|
361
|
+
throw new Error(`${fieldName} field not found in indexMap.numberfields`);
|
|
362
|
+
}
|
|
363
|
+
const params = {
|
|
364
|
+
TableName: this._tableName,
|
|
365
|
+
Key: (0, util_dynamodb_1.marshall)({ [partitionKey]: entityId }),
|
|
366
|
+
UpdateExpression: `SET #field = if_not_exists(#field, :start) + :delta`,
|
|
367
|
+
ExpressionAttributeNames: {
|
|
368
|
+
"#field": fieldName,
|
|
369
|
+
},
|
|
370
|
+
ExpressionAttributeValues: {
|
|
371
|
+
":delta": (0, util_dynamodb_1.marshall)(delta),
|
|
372
|
+
":start": (0, util_dynamodb_1.marshall)(0),
|
|
373
|
+
},
|
|
374
|
+
ReturnValues: client_dynamodb_1.ReturnValue.ALL_NEW,
|
|
375
|
+
};
|
|
376
|
+
const result = yield this.dynamoDb.send(new client_dynamodb_1.UpdateItemCommand(params));
|
|
377
|
+
return (0, util_dynamodb_1.unmarshall)(result.Attributes);
|
|
378
|
+
});
|
|
379
|
+
}
|
|
380
|
+
/**
|
|
381
|
+
* Executes a DynamoDB Query or Scan operation and returns a guaranteed number of results up to the specified limit.
|
|
382
|
+
*
|
|
383
|
+
* DynamoDB's native `Limit` parameter defines the *maximum amount of data* to return, not necessarily the *number of items*,
|
|
384
|
+
* due to its internal 1 MB response size limit. This method continues pagination using `LastEvaluatedKey` until the desired
|
|
385
|
+
* number of items is retrieved or no more results are available.
|
|
386
|
+
*
|
|
387
|
+
* @param queryInput - The DynamoDB QueryCommandInput or ScanCommandInput.
|
|
388
|
+
* @param startKey - Optional key to start the query from (for pagination).
|
|
389
|
+
* @returns A item list of type `T`, guaranteed to contain up to `Limit` items if available.
|
|
390
|
+
*/ sendCommandDeep(queryInput, startKey) {
|
|
391
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
392
|
+
var _a;
|
|
393
|
+
const result = { items: [] };
|
|
394
|
+
const size = (_a = queryInput === null || queryInput === void 0 ? void 0 : queryInput.Limit) !== null && _a !== void 0 ? _a : 10;
|
|
395
|
+
let lastEvaluatedKey;
|
|
396
|
+
if (startKey) {
|
|
397
|
+
try {
|
|
398
|
+
lastEvaluatedKey = typeof startKey === "string" ? (0, index_1.parseLastEvaluatedKey)(startKey) : startKey;
|
|
399
|
+
}
|
|
400
|
+
catch (e) {
|
|
401
|
+
console.warn("cannot parse start key, ignored");
|
|
402
|
+
}
|
|
403
|
+
}
|
|
404
|
+
do {
|
|
405
|
+
const response = yield this.sendCommand(Object.assign(Object.assign({}, queryInput), { ExclusiveStartKey: lastEvaluatedKey }));
|
|
406
|
+
// no more data
|
|
407
|
+
if (response.LastEvaluatedKey == undefined) {
|
|
408
|
+
result === null || result === void 0 ? void 0 : result.items.push(...(0, index_1.unMarshall)(response.Items));
|
|
409
|
+
result.lastKey = undefined;
|
|
410
|
+
return result;
|
|
411
|
+
}
|
|
412
|
+
if ((response === null || response === void 0 ? void 0 : response.Items.length) === 0 && response.LastEvaluatedKey) {
|
|
413
|
+
lastEvaluatedKey = response.LastEvaluatedKey;
|
|
414
|
+
continue;
|
|
415
|
+
}
|
|
416
|
+
if ((result === null || result === void 0 ? void 0 : result.items.length) + (response === null || response === void 0 ? void 0 : response.Items.length) <= size) {
|
|
417
|
+
result === null || result === void 0 ? void 0 : result.items.push(...(0, index_1.unMarshall)(response.Items));
|
|
418
|
+
lastEvaluatedKey = response.LastEvaluatedKey;
|
|
419
|
+
if ((result === null || result === void 0 ? void 0 : result.items.length) === size) {
|
|
420
|
+
result.lastKey = (0, index_1.toBase64)(JSON.stringify(response.LastEvaluatedKey));
|
|
421
|
+
return result;
|
|
422
|
+
}
|
|
423
|
+
continue;
|
|
424
|
+
}
|
|
425
|
+
const elementIndex = size - (result === null || result === void 0 ? void 0 : result.items.length) - 1;
|
|
426
|
+
result === null || result === void 0 ? void 0 : result.items.push(...(0, index_1.unMarshall)(response.Items.slice(0, elementIndex)));
|
|
427
|
+
const index = this._indexMap.get(queryInput.IndexName);
|
|
428
|
+
result.lastKey = (0, index_1.generateLastEvaluatedKey)(response.Items[elementIndex], index === null || index === void 0 ? void 0 : index.field, index === null || index === void 0 ? void 0 : index.sortKeyField);
|
|
429
|
+
break;
|
|
430
|
+
} while (lastEvaluatedKey);
|
|
431
|
+
return result;
|
|
432
|
+
});
|
|
433
|
+
}
|
|
434
|
+
/**
|
|
435
|
+
* Executes a single DynamoDB Query or Scan command and returns the result as-is.
|
|
436
|
+
*
|
|
437
|
+
* This method sends the provided command input to DynamoDB and returns the items in the response.
|
|
438
|
+
* If a `startKey` is provided, it will be used as the `ExclusiveStartKey` to support pagination.
|
|
439
|
+
*
|
|
440
|
+
* Note: DynamoDB may return fewer items than the specified `Limit`, depending on the 1 MB size cap or internal filtering.
|
|
441
|
+
* This method does not perform deep pagination to fulfill the exact limit.
|
|
442
|
+
*
|
|
443
|
+
* @param commandInput - The DynamoDB QueryCommandInput or ScanCommandInput.
|
|
444
|
+
* @returns A partial item list of type `T`, along with the LastEvaluatedKey if more data is available.
|
|
445
|
+
*/
|
|
446
|
+
sendCommand(commandInput) {
|
|
447
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
448
|
+
commandInput.TableName = this._tableName;
|
|
449
|
+
// if (startKey) {
|
|
450
|
+
// commandInput.ExclusiveStartKey = typeof startKey === "string" ? parseLastEvaluatedKey(startKey) : startKey;
|
|
451
|
+
// }
|
|
452
|
+
if (!commandInput.Limit) {
|
|
453
|
+
commandInput.Limit = this.DYNAMO_QUERY_LIMIT;
|
|
454
|
+
}
|
|
455
|
+
const isQuery = "KeyConditionExpression" in commandInput;
|
|
456
|
+
const command = isQuery ? new client_dynamodb_1.QueryCommand(commandInput) : new client_dynamodb_1.ScanCommand(commandInput);
|
|
457
|
+
try {
|
|
458
|
+
return this.dynamoDb.send(command);
|
|
459
|
+
}
|
|
460
|
+
catch (error) {
|
|
461
|
+
throw new errors_1.ErrorDynamoDB(this._tableName, commandInput, error);
|
|
462
|
+
}
|
|
463
|
+
});
|
|
464
|
+
}
|
|
465
|
+
}
|
|
466
|
+
exports.BaseRepoDBImpl = BaseRepoDBImpl;
|
|
467
|
+
__decorate([
|
|
468
|
+
(0, typedi_1.Inject)("DBClientDynamoDB"),
|
|
469
|
+
__metadata("design:type", index_1.DBClientDynamoDB)
|
|
470
|
+
], BaseRepoDBImpl.prototype, "dynamoDb", void 0);
|
|
471
|
+
//# sourceMappingURL=base-db.repo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base-db.repo.js","sourceRoot":"","sources":["../../src/repositories/base-db.repo.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA,8DAkBkC;AAClC,0DAA8D;AAC9D,oCAmBkB;AAClB,mCAAyC;AACzC,gDAAoD;AAEpD,IAAA,gBAAO,EAAC,YAAY,CAAC,CAAC;AACtB,MAAa,cAAc;IAMzB,YAAY,SAAiB,EAAE,QAAwB;QAF/C,uBAAkB,GAAW,EAAE,CAAC;QAGtC,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;IAC5B,CAAC;IAED,qBAAqB,CAAC,QAAgB,EAAE,SAAiB,EAAE,KAAc;QACvE,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;QACvE,CAAC;QAED,OAAO,IAAI,CAAC,8BAA8B,CAAC,QAAQ,EAAE,SAAS,EAAE,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,CAAC,CAAC,CAAC;IAC9E,CAAC;IAED,qBAAqB,CAAC,QAAgB,EAAE,SAAiB,EAAE,KAAc;QACvE,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YACd,MAAM,IAAI,sBAAa,CACrB,IAAI,CAAC,UAAU,EACf,kEAAkE,KAAK,gBAAgB,SAAS,EAAE,CACnG,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,CAAC,8BAA8B,CAAC,QAAQ,EAAE,SAAS,EAAE,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,CAAC,CAAC,CAAC,CAAC;IAC/E,CAAC;IAED,aAAa,CAAE,UAAiB;QAC9B,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;IAEK,MAAM,CAAC,MAAkB,EAAE,UAAoB;;YACnD,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC;YAEjD,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAE3E,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;gBAAE,MAAM,IAAI,sBAAa,CAAC,IAAI,CAAC,UAAU,EAAE,uBAAuB,YAAY,SAAS,CAAC,CAAC;YAElH,MAAM,aAAa,mBACjB,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC,YAAY,CAAC,IACjC,IAAA,oBAAY,EAAC,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CACpD,CAAC;YAEF,MAAM,WAAW,GAAG,IAAA,qBAAa,EAAC,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;YAEjE,MAAM,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,yBAAyB,EAAE,GAAG,IAAA,8BAAsB,EACtG,WAAW,EACX,CAAC,YAAY,CAAC,CACf,CAAC;YAEF,MAAM,MAAM,GAAG;gBACb,SAAS,EAAE,IAAI,CAAC,UAAU;gBAC1B,GAAG,EAAE,IAAA,wBAAQ,EAAC,EAAE,CAAC,YAAY,CAAC,EAAE,WAAW,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC5D,gBAAgB;gBAChB,wBAAwB;gBACxB,yBAAyB;gBACzB,YAAY,EAAE,6BAAW,CAAC,OAAO;aAClC,CAAC;YAEF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,mCAAiB,CAAC,MAAM,CAAC,CAAC,CAAC;YACvE,OAAO,IAAA,0BAAU,EAAC,MAAM,CAAC,UAAW,CAAM,CAAC;QAC7C,CAAC;KAAA;IAEK,UAAU,CAAC,UAAwB,EAAE,UAAoB;;YAC7D,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,KAAK,CAAC;YAE1C,IAAI,UAAU,KAAK,SAAS,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACxD,MAAM,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;gBAChC,OAAO,IAAI,CAAC;YACd,CAAC;YAED,MAAM,iBAAiB,GAAG,IAAA,oBAAY,EAAC,UAAU,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;YAE1E,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC;YAEjD,MAAM,YAAY,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;gBACpD,OAAO,IAAA,qBAAa,EAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;YAC/C,CAAC,CAAC,CAAC;YAEH,MAAM,aAAa,GAAG,YAAY;iBAC/B,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;gBACZ,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC;oBAAE,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;gBAE1E,MAAM,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,yBAAyB,EAAE,GAAG,IAAA,8BAAsB,EAAC,IAAI,EAAE;oBAC7G,YAAY;iBACb,CAAC,CAAC;gBAEH,OAAO;oBACL,MAAM,EAAE;wBACN,SAAS,EAAE,IAAI,CAAC,UAAU;wBAC1B,GAAG,EAAE,EAAE,CAAC,YAAY,CAAC,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,iCAAiC;wBACrF,gBAAgB;wBAChB,yBAAyB;wBACzB,wBAAwB;qBACzB;iBACF,CAAC;YACJ,CAAC,CAAC;iBACD,MAAM,CAAC,OAAO,CAAU,CAAC,CAAC,+CAA+C;YAE5E,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC7B,MAAM,YAAY,GAAG,IAAA,kBAAU,EAAC,aAAa,EAAE,EAAE,CAAC,CAAC,CAAC,0BAA0B;gBAE9E,KAAK,MAAM,KAAK,IAAI,YAAY;oBAC9B,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,2CAAyB,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;YACtF,CAAC;YAED,OAAO,IAAI,CAAC;QACd,CAAC;KAAA;IAEK,IAAI,CAAC,MAAkB;;YAC3B,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC;YAEjD,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,YAAY,SAAS,CAAC,CAAC;YAExF,IAAA,qBAAa,EAAC,MAAM,CAAC,CAAC;YAEtB,MAAM,WAAW,GAAG,IAAA,qBAAa,EAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;YAE1D,MAAM,MAAM,GAAG;gBACb,SAAS,EAAE,IAAI,CAAC,UAAU;gBAC1B,IAAI,EAAE,IAAA,wBAAQ,EAAC,WAAW,EAAE,EAAE,qBAAqB,EAAE,IAAI,EAAE,CAAC;aAC7D,CAAC;YACF,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,gCAAc,CAAC,MAAM,CAAC,CAAC,CAAC;gBAErD,OAAO,MAAW,CAAC;YACrB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAC;gBAC7C,MAAM,IAAI,sBAAa,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;YAC1D,CAAC;QACH,CAAC;KAAA;IAEK,QAAQ,CAAC,QAAsB;;YACnC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;YAEtF,MAAM,gBAAgB,GAAiB,EAAE,CAAC;YAE1C,KAAK,MAAM,KAAK,IAAI,IAAA,kBAAU,EAAC,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC;gBAC7C,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAA,qBAAa,EAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;gBAC7D,MAAM,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;oBACzC,UAAU,EAAE,EAAE,IAAI,EAAE,IAAA,wBAAQ,EAAC,MAAM,EAAE,EAAE,qBAAqB,EAAE,IAAI,EAAE,CAAC,EAAE;iBACxE,CAAC,CAAC,CAAC;gBAEJ,MAAM,MAAM,GAA+B,EAAE,YAAY,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,WAAW,EAAE,EAAE,CAAC;gBAEhG,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,uCAAqB,CAAC,MAAM,CAAC,CAAC,CAAC;gBAE3E,IAAI,MAAM,CAAC,gBAAgB,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,MAAM,GAAG,CAAC;oBAC5E,OAAO,CAAC,IAAI,CAAC,wDAAwD,EAAE,MAAM,CAAC,gBAAgB,CAAC,CAAC;gBAElG,gBAAgB,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC;YAClC,CAAC;YAED,OAAO,gBAAgB,CAAC;QAC1B,CAAC;KAAA;IAEK,MAAM,CAAC,EAAU;;YACrB,MAAM,MAAM,GAAG;gBACb,SAAS,EAAE,IAAI,CAAC,UAAU;gBAC1B,GAAG,EAAE,IAAA,wBAAQ,EAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,CAAC;aACrD,CAAC;YAEF,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,mCAAiB,CAAC,MAAM,CAAC,CAAC,CAAC;gBACxD,OAAO,IAAI,CAAC;YACd,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAC;gBAC7C,MAAM,IAAI,sBAAa,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;YAC1D,CAAC;QACH,CAAC;KAAA;IAEK,UAAU,CAAC,GAAa;;YAC5B,IAAI,CAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,MAAM,MAAK,CAAC;gBAAE,OAAO,KAAK,CAAC;YACpC,MAAM,OAAO,GAAG,IAAA,kBAAU,EAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YACpC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;gBAC5B,MAAM,cAAc,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE;oBACtC,OAAO;wBACL,aAAa,EAAE;4BACb,GAAG,EAAE,IAAA,wBAAQ,EAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,CAAC;yBACrD;qBACF,CAAC;gBACJ,CAAC,CAAC,CAAC;gBAEH,MAAM,MAAM,GAAG;oBACb,YAAY,EAAE;wBACZ,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,cAAc;qBAClC;iBACF,CAAC;gBAEF,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,uCAAqB,CAAC,MAAM,CAAC,CAAC,CAAC;YAC9D,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;KAAA;IAEK,QAAQ,CAAC,EAAU;;YACvB,MAAM,MAAM,GAAG;gBACb,SAAS,EAAE,IAAI,CAAC,UAAU;gBAC1B,GAAG,EAAE,IAAA,wBAAQ,EAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,CAAC;aACrD,CAAC;YAEF,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,gCAAc,CAAC,MAAM,CAAC,CAAC,CAAC;gBACpE,IAAI,CAAC,MAAM,CAAC,IAAI;oBAAE,OAAO,IAAI,CAAC;gBAC9B,OAAO,IAAA,0BAAU,EAAC,MAAM,CAAC,IAAI,CAAM,CAAC;YACtC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,qBAAqB,EAAE,KAAK,CAAC,CAAC;gBAC5C,MAAM,IAAI,sBAAa,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;YAC1D,CAAC;QACH,CAAC;KAAA;IAEK,SAAS,CAAC,GAAa;;;YAC3B,IAAI,KAAK,GAAQ,EAAE,CAAC;YACpB,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;YAE1E,MAAM,OAAO,GAAG,IAAA,kBAAU,EAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YACrC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;gBAC5B,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;gBAC/E,MAAM,MAAM,GAAG;oBACb,YAAY,EAAE;wBACZ,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;qBAClC;iBACF,CAAC;gBAEF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,qCAAmB,CAAC,MAAM,CAAC,CAAC,CAAC;gBAE3E,KAAK,GAAG,MAAA,KAAK,CAAC,MAAM,CAAC,MAAA,MAAA,QAAQ,CAAC,SAAS,0CAAG,IAAI,CAAC,UAAU,CAAC,0CAAE,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAA,0BAAU,EAAC,IAAI,CAAC,CAAQ,CAAC,mCAAI,EAAE,CAAC;YAC5G,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;KAAA;IAEK,IAAI,CAAC,MAAqB;;YAC9B,IAAI,MAAM,KAAK,SAAS;gBAAE,MAAM,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAErE,MAAM,OAAO,GAAG,IAAA,oBAAY,EAAC,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;YAEtE,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,eAAe,CAAI,OAAO,EAAE,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,OAAO,CAAC,CAAC;YACzE,MAAM,aAAa,GAAG,IAAA,oBAAY,EAAC,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,KAAK,EAAE,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC;YAChG,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,OAAO,EAAE,CAAC;QAC9D,CAAC;KAAA;IAEK,OAAO,CAAC,MAAqB;;YACjC,MAAM,UAAU,GAAG,IAAA,oBAAY,EAAC,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;YACzE,UAAU,CAAC,KAAK,GAAG,CAAC,CAAC;YAErB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,8BAAY,CAAC,UAAU,CAAC,CAAC,CAAC;YAEtE,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,IAAI,CAAC;YAC5D,OAAO,IAAA,0BAAU,EAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAM,CAAC;QAC1C,CAAC;KAAA;IAED,WAAW,CAAC,SAAiB,EAAE,KAAa;QAC1C,OAAO,IAAI,CAAC,IAAI,CAAC,IAAA,wBAAgB,EAAC,SAAS,GAAG,GAAG,GAAG,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;IAC9E,CAAC;IAEK,KAAK,CAAC,MAAqB;;;YAC/B,MAAM,UAAU,GAAG,IAAA,oBAAY,EAAC,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;YACzE,UAAU,CAAC,MAAM,GAAG,OAAO,CAAC;YAE5B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,8BAAY,CAAC,UAAU,CAAC,CAAC,CAAC;YACtE,OAAO,MAAA,MAAM,CAAC,KAAK,mCAAI,CAAC,CAAC;QAC3B,CAAC;KAAA;IAEK,MAAM,CAAC,EAAU;;YACrB,MAAM,GAAG,GAAG,IAAA,wBAAQ,EAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YAE5D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CACrC,IAAI,gCAAc,CAAC;gBACjB,SAAS,EAAE,IAAI,CAAC,UAAU;gBAC1B,GAAG,EAAE,GAAG;gBACR,oBAAoB,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY;aAClD,CAAC,CACH,CAAC;YAEF,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;QACvB,CAAC;KAAA;IAEK,MAAM,CAAC,MAAqB;;YAChC,MAAM,UAAU,GAAG,IAAA,oBAAY,EAAC,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;YACzE,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,8BAAY,CAAC,UAAU,CAAC,CAAC,CAAC;QAC1D,CAAC;KAAA;IAEK,eAAe,CAAI,UAA8C;;YACrE,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;QAC7C,CAAC;KAAA;IAEK,YAAY,CAAiB,UAAiB;;YAClD,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;QAC7C,CAAC;KAAA;IAEK,gBAAgB,CAAC,UAQtB;;YACC,MAAM,aAAa,GAAU,EAAE,CAAC;YAEhC,oBAAoB;YACpB,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;gBACtB,KAAK,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;oBACpD,IAAI,CAAC,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,EAAE,CAAA,EAAE,CAAC;wBACd,IAAI,CAAC,EAAE,GAAG,IAAA,oBAAY,GAAE,CAAC;oBAC3B,CAAC;oBACD,aAAa,CAAC,IAAI,CAAC;wBACjB,GAAG,EAAE;4BACH,SAAS,EAAE,SAAS;4BACpB,IAAI,EAAE,IAAA,wBAAQ,EAAC,IAAI,EAAE,EAAE,qBAAqB,EAAE,IAAI,EAAE,CAAC;yBACtD;qBACF,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YAED,oBAAoB;YACpB,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;gBACtB,KAAK,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,UAAU,EAAE,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;oBAC/D,MAAM,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,yBAAyB,EAAE,GAAG,IAAA,8BAAsB,EACtG,UAAU,EACV,CAAC,IAAI,CAAC,CACP,CAAC;oBAEF,aAAa,CAAC,IAAI,CAAC;wBACjB,MAAM,EAAE;4BACN,SAAS,EAAE,SAAS;4BACpB,GAAG,EAAE,IAAA,wBAAQ,EAAC,GAAG,CAAC;4BAClB,gBAAgB;4BAChB,wBAAwB;4BACxB,yBAAyB;yBAC1B;qBACF,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YAED,oBAAoB;YACpB,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;gBACtB,KAAK,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;oBACnD,aAAa,CAAC,IAAI,CAAC;wBACjB,MAAM,EAAE;4BACN,SAAS,EAAE,SAAS;4BACpB,GAAG,EAAE,IAAA,wBAAQ,EAAC,GAAG,CAAC;yBACnB;qBACF,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YAED,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,KAAK,CAAC;YAE7C,sBAAsB;YACtB,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,2CAAyB,CAAC,EAAE,aAAa,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC;gBAC1F,OAAO,IAAI,CAAC;YACd,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,qBAAqB,EAAE,KAAK,CAAC,CAAC;gBAC5C,MAAM,IAAI,sBAAa,CAAC,IAAI,CAAC,UAAU,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC;YACjE,CAAC;QACH,CAAC;KAAA;IAED,YAAY;QACV,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED,WAAW,CAAC,QAAwB;QAClC,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC1B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,YAAY,CAAC,SAAiB;QAC5B,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,WAAW;QACT,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAEa,8BAA8B,CAAC,QAAgB,EAAE,SAAiB,EAAE,KAAa;;;YAC7F,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC;YACjD,IAAI,CAAC,CAAA,MAAA,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,SAAS,0CAAE,YAAY,0CAAE,QAAQ,CAAC,SAAS,CAAC,CAAA,EAAE,CAAC;gBACxD,MAAM,IAAI,KAAK,CAAC,GAAG,SAAS,4CAA4C,CAAC,CAAC;YAC5E,CAAC;YAED,MAAM,MAAM,GAA2B;gBACrC,SAAS,EAAE,IAAI,CAAC,UAAU;gBAC1B,GAAG,EAAE,IAAA,wBAAQ,EAAC,EAAE,CAAC,YAAY,CAAC,EAAE,QAAQ,EAAE,CAAC;gBAC3C,gBAAgB,EAAE,qDAAqD;gBACvE,wBAAwB,EAAE;oBACxB,QAAQ,EAAE,SAAS;iBACpB;gBACD,yBAAyB,EAAE;oBACzB,QAAQ,EAAE,IAAA,wBAAQ,EAAC,KAAK,CAAC;oBACzB,QAAQ,EAAE,IAAA,wBAAQ,EAAC,CAAC,CAAC;iBACtB;gBACD,YAAY,EAAE,6BAAW,CAAC,OAAO;aAClC,CAAC;YAEF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,mCAAiB,CAAC,MAAM,CAAC,CAAC,CAAC;YAEvE,OAAO,IAAA,0BAAU,EAAC,MAAM,CAAC,UAAU,CAAM,CAAC;QAC5C,CAAC;KAAA;IAED;;;;;;;;;;OAUG,CAAe,eAAe,CAC/B,UAAgD,EAChD,QAAuC;;;YAEvC,MAAM,MAAM,GAAY,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;YAEtC,MAAM,IAAI,GAAW,MAAC,UAAkB,aAAlB,UAAU,uBAAV,UAAU,CAAU,KAAK,mCAAI,EAAE,CAAC;YAEtD,IAAI,gBAAgD,CAAC;YACrD,IAAI,QAAQ,EAAE,CAAC;gBACb,IAAI,CAAC;oBACH,gBAAgB,GAAG,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAA,6BAAqB,EAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;gBAC/F,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACX,OAAO,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;gBAClD,CAAC;YACH,CAAC;YAED,GAAG,CAAC;gBACF,MAAM,QAAQ,GAAuB,MAAM,IAAI,CAAC,WAAW,iCACtD,UAAU,KACb,iBAAiB,EAAE,gBAAgB,IACnC,CAAC;gBAEH,eAAe;gBACf,IAAI,QAAQ,CAAC,gBAAgB,IAAI,SAAS,EAAE,CAAC;oBAC3C,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK,CAAC,IAAI,CAAC,GAAG,IAAA,kBAAU,EAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;oBACrD,MAAM,CAAC,OAAO,GAAG,SAAS,CAAC;oBAC3B,OAAO,MAAM,CAAC;gBAChB,CAAC;gBAED,IAAI,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,KAAK,CAAC,MAAM,MAAK,CAAC,IAAI,QAAQ,CAAC,gBAAgB,EAAE,CAAC;oBAC9D,gBAAgB,GAAG,QAAQ,CAAC,gBAAgB,CAAC;oBAC7C,SAAS;gBACX,CAAC;gBAED,IAAI,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK,CAAC,MAAM,KAAG,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,KAAK,CAAC,MAAM,CAAA,IAAI,IAAI,EAAE,CAAC;oBAC1D,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK,CAAC,IAAI,CAAC,GAAG,IAAA,kBAAU,EAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;oBACrD,gBAAgB,GAAG,QAAQ,CAAC,gBAAgB,CAAC;oBAC7C,IAAI,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK,CAAC,MAAM,MAAK,IAAI,EAAE,CAAC;wBAClC,MAAM,CAAC,OAAO,GAAG,IAAA,gBAAQ,EAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC;wBACrE,OAAO,MAAM,CAAC;oBAChB,CAAC;oBACD,SAAS;gBACX,CAAC;gBAED,MAAM,YAAY,GAAG,IAAI,IAAG,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK,CAAC,MAAM,CAAA,GAAG,CAAC,CAAC;gBACrD,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK,CAAC,IAAI,CAAC,GAAG,IAAA,kBAAU,EAAI,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;gBAE5E,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;gBACvD,MAAM,CAAC,OAAO,GAAG,IAAA,gCAAwB,EAAC,QAAQ,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,KAAK,EAAE,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,YAAY,CAAC,CAAC;gBAC3G,MAAM;YACR,CAAC,QAAQ,gBAAgB,EAAE;YAE3B,OAAO,MAAM,CAAC;QAChB,CAAC;KAAA;IAED;;;;;;;;;;;OAWG;IACW,WAAW,CACvB,YAAkD;;YAElD,YAAY,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC;YAEzC,kBAAkB;YAClB,gHAAgH;YAChH,IAAI;YAEJ,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;gBACxB,YAAY,CAAC,KAAK,GAAG,IAAI,CAAC,kBAAkB,CAAC;YAC/C,CAAC;YAED,MAAM,OAAO,GAAG,wBAAwB,IAAI,YAAY,CAAC;YACzD,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,8BAAY,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,6BAAW,CAAC,YAAY,CAAC,CAAC;YAEzF,IAAI,CAAC;gBACH,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACrC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,IAAI,sBAAa,CAAC,IAAI,CAAC,UAAU,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC;YAChE,CAAC;QACH,CAAC;KAAA;CACF;AAxfD,wCAwfC;AAvf8C;IAA5C,IAAA,eAAM,EAAC,kBAAkB,CAAC;8BAA4B,wBAAgB;gDAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { BaseEntity, BaseRepoES, FilterAndSort, List, SearchQueryES } from "../index";
|
|
2
|
+
import { Search } from "@opensearch-project/opensearch/api/requestParams";
|
|
3
|
+
import { RequestBody } from "@opensearch-project/opensearch/lib/Transport";
|
|
4
|
+
export declare abstract class BaseRepoESImpl<T extends BaseEntity> implements BaseRepoES<T> {
|
|
5
|
+
private searchClient;
|
|
6
|
+
private indexName;
|
|
7
|
+
protected constructor(indexName: string);
|
|
8
|
+
incrementValueByField(entityId: string, fieldName: string, value?: number): Promise<T>;
|
|
9
|
+
decrementValueByField(entityId: string, fieldName: string, value?: number): Promise<T>;
|
|
10
|
+
save(entity: Partial<T>): Promise<T>;
|
|
11
|
+
saveMany(entities: Partial<T>[]): Promise<Partial<T>[]>;
|
|
12
|
+
update(entity: Partial<T>, fieldNames: string[]): Promise<T>;
|
|
13
|
+
updateMany(entities: Partial<T>[], fieldNames: string[]): Promise<boolean>;
|
|
14
|
+
delete(id: string): Promise<boolean>;
|
|
15
|
+
deleteMany(ids: string[]): Promise<boolean>;
|
|
16
|
+
findByIds(ids: string[]): Promise<T[]>;
|
|
17
|
+
find(filter: FilterAndSort): Promise<List<T>>;
|
|
18
|
+
findOne(filter: FilterAndSort): Promise<T>;
|
|
19
|
+
count(filter: FilterAndSort): Promise<number>;
|
|
20
|
+
getRaw?(filter: FilterAndSort): Promise<any>;
|
|
21
|
+
setIndexName(indexName: string): boolean;
|
|
22
|
+
setEndpoint(endpoint: string): boolean;
|
|
23
|
+
getEndpoint(): string;
|
|
24
|
+
getIndexName(): string;
|
|
25
|
+
findById(id: string): Promise<T | undefined>;
|
|
26
|
+
findByIdFieldSelected(id: string, includeFields?: string[], excludeFields?: string[]): Promise<T | undefined>;
|
|
27
|
+
list(query: SearchQueryES): Promise<T[]>;
|
|
28
|
+
exists(id: string): Promise<boolean>;
|
|
29
|
+
findBetween<K>(fieldName: string, fromValue: K, toValue: K, includeFields: string[]): Promise<T[]>;
|
|
30
|
+
search(searchQuery: Search<RequestBody>): Promise<T[]>;
|
|
31
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { BaseEntity, SearchQueryES } from "../index";
|
|
2
|
+
import { Search } from "@opensearch-project/opensearch/api/requestParams";
|
|
3
|
+
import { CoreRepo } from "./base-core.repo.interface";
|
|
4
|
+
export interface BaseRepoES<T extends BaseEntity> extends CoreRepo<T> {
|
|
5
|
+
findByIdFieldSelected(id: string, includeFields?: string[], excludeFields?: string[]): Promise<T | undefined>;
|
|
6
|
+
list(query: SearchQueryES): Promise<T[]>;
|
|
7
|
+
findBetween<K>(fieldName: string, fromValue: K, toValue: K, includeFields: string[]): Promise<T[]>;
|
|
8
|
+
search(searchQuery: Search): Promise<T[]>;
|
|
9
|
+
setIndexName(value: string): boolean;
|
|
10
|
+
getIndexName(): string;
|
|
11
|
+
setEndpoint(value: string): boolean;
|
|
12
|
+
getEndpoint(): string;
|
|
13
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base-es.repo.interface.js","sourceRoot":"","sources":["../../src/repositories/base-es.repo.interface.ts"],"names":[],"mappings":""}
|