@antelopejs/interface-data-api 0.0.2
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/LICENSE +190 -0
- package/README.md +45 -0
- package/dist/antelope.test.d.ts +2 -0
- package/dist/antelope.test.js +59 -0
- package/dist/antelope.test.js.map +1 -0
- package/dist/components.d.ts +72 -0
- package/dist/components.js +344 -0
- package/dist/components.js.map +1 -0
- package/dist/index.d.ts +93 -0
- package/dist/index.js +217 -0
- package/dist/index.js.map +1 -0
- package/dist/metadata.d.ts +290 -0
- package/dist/metadata.js +444 -0
- package/dist/metadata.js.map +1 -0
- package/dist/tests/components/access_control.test.d.ts +1 -0
- package/dist/tests/components/access_control.test.js +138 -0
- package/dist/tests/components/access_control.test.js.map +1 -0
- package/dist/tests/components/listable.test.d.ts +1 -0
- package/dist/tests/components/listable.test.js +361 -0
- package/dist/tests/components/listable.test.js.map +1 -0
- package/dist/tests/components/mandatory.test.d.ts +1 -0
- package/dist/tests/components/mandatory.test.js +193 -0
- package/dist/tests/components/mandatory.test.js.map +1 -0
- package/dist/tests/components/per_action_access.test.d.ts +1 -0
- package/dist/tests/components/per_action_access.test.js +115 -0
- package/dist/tests/components/per_action_access.test.js.map +1 -0
- package/dist/tests/components/validator.test.d.ts +1 -0
- package/dist/tests/components/validator.test.js +178 -0
- package/dist/tests/components/validator.test.js.map +1 -0
- package/dist/tests/constants.d.ts +3 -0
- package/dist/tests/constants.js +7 -0
- package/dist/tests/constants.js.map +1 -0
- package/dist/tests/index/routes.test.d.ts +1 -0
- package/dist/tests/index/routes.test.js +210 -0
- package/dist/tests/index/routes.test.js.map +1 -0
- package/dist/tests/integration.test.d.ts +1 -0
- package/dist/tests/integration.test.js +838 -0
- package/dist/tests/integration.test.js.map +1 -0
- package/dist/tests/utils.d.ts +12 -0
- package/dist/tests/utils.js +70 -0
- package/dist/tests/utils.js.map +1 -0
- package/package.json +78 -0
|
@@ -0,0 +1,344 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Validation = exports.Query = exports.Parameters = void 0;
|
|
4
|
+
const interface_api_1 = require("@antelopejs/interface-api");
|
|
5
|
+
const interface_api_util_1 = require("@antelopejs/interface-api-util");
|
|
6
|
+
const decorators_1 = require("@antelopejs/interface-core/decorators");
|
|
7
|
+
const interface_database_1 = require("@antelopejs/interface-database");
|
|
8
|
+
const common_1 = require("@antelopejs/interface-database-decorators/modifiers/common");
|
|
9
|
+
const _1 = require(".");
|
|
10
|
+
var Parameters;
|
|
11
|
+
(function (Parameters) {
|
|
12
|
+
function GetOptionOverrides(reqCtx) {
|
|
13
|
+
return reqCtx.dataAPIEntry?.options ?? {};
|
|
14
|
+
}
|
|
15
|
+
Parameters.GetOptionOverrides = GetOptionOverrides;
|
|
16
|
+
function ExtractFilters(reqCtx, meta) {
|
|
17
|
+
const result = {};
|
|
18
|
+
for (const filter of Object.keys(meta.filters)) {
|
|
19
|
+
const filter_key = `filter_${filter}`;
|
|
20
|
+
if (reqCtx.url.searchParams.has(filter_key)) {
|
|
21
|
+
const searchVal = reqCtx.url.searchParams.get(filter_key) ?? "";
|
|
22
|
+
const match = searchVal.match(/([^:]+):(.*)/);
|
|
23
|
+
result[filter] = match
|
|
24
|
+
? [match[2], match[1]]
|
|
25
|
+
: [searchVal, "eq"];
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
return result;
|
|
29
|
+
}
|
|
30
|
+
Parameters.ExtractFilters = ExtractFilters;
|
|
31
|
+
const converters = {
|
|
32
|
+
number: (val) => parseFloat(val),
|
|
33
|
+
int: (val) => parseInt(val, 10),
|
|
34
|
+
bool: (val) => val !== "0",
|
|
35
|
+
string: (val) => val,
|
|
36
|
+
};
|
|
37
|
+
function ExtractGeneric(reqCtx, meta, dynamic) {
|
|
38
|
+
const overrides = GetOptionOverrides(reqCtx);
|
|
39
|
+
const result = { ...overrides };
|
|
40
|
+
for (const key of Object.keys(dynamic)) {
|
|
41
|
+
if (!(key in result)) {
|
|
42
|
+
const extractor = dynamic[key];
|
|
43
|
+
if (typeof extractor === "string") {
|
|
44
|
+
if (extractor.startsWith("multi:")) {
|
|
45
|
+
const converter = converters[extractor.substring(6)];
|
|
46
|
+
result[key] = reqCtx.url.searchParams
|
|
47
|
+
.getAll(key)
|
|
48
|
+
.map((searchVal) => converter(searchVal));
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
const searchVal = reqCtx.url.searchParams.get(key);
|
|
52
|
+
if (searchVal !== null) {
|
|
53
|
+
result[key] = converters[extractor](searchVal);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
result[key] = extractor(reqCtx, meta);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
return result;
|
|
63
|
+
}
|
|
64
|
+
Parameters.ExtractGeneric = ExtractGeneric;
|
|
65
|
+
Parameters.List = (0, decorators_1.MakeParameterAndPropertyDecorator)((target, key, param) => (0, interface_api_1.SetParameterProvider)(target, key, param, function (context) {
|
|
66
|
+
const meta = (0, _1.GetDataControllerMeta)(this);
|
|
67
|
+
const params = ExtractGeneric(context, meta, {
|
|
68
|
+
filters: ExtractFilters,
|
|
69
|
+
offset: "int",
|
|
70
|
+
limit: "int",
|
|
71
|
+
sortKey: "string",
|
|
72
|
+
sortDirection: "string",
|
|
73
|
+
});
|
|
74
|
+
(0, interface_api_util_1.assert)(!params.sortKey || meta.fields[params.sortKey]?.sortable, 400, "Field is not sortable.");
|
|
75
|
+
params.limit = params.limit
|
|
76
|
+
? Math.min(params.limit, params.maxPage ?? 100)
|
|
77
|
+
: params.maxPage;
|
|
78
|
+
return params;
|
|
79
|
+
}));
|
|
80
|
+
Parameters.Get = (0, decorators_1.MakeParameterAndPropertyDecorator)((target, key, param) => (0, interface_api_1.SetParameterProvider)(target, key, param, function (context) {
|
|
81
|
+
const params = ExtractGeneric(context, (0, _1.GetDataControllerMeta)(this), {
|
|
82
|
+
id: "string",
|
|
83
|
+
});
|
|
84
|
+
(0, interface_api_util_1.assert)(params.id && typeof params.id === "string", 400, "Missing id.");
|
|
85
|
+
return params;
|
|
86
|
+
}));
|
|
87
|
+
Parameters.New = (0, decorators_1.MakeParameterAndPropertyDecorator)((target, key, param) => (0, interface_api_1.SetParameterProvider)(target, key, param, function (context) {
|
|
88
|
+
const params = ExtractGeneric(context, (0, _1.GetDataControllerMeta)(this), {});
|
|
89
|
+
return params;
|
|
90
|
+
}));
|
|
91
|
+
Parameters.Edit = (0, decorators_1.MakeParameterAndPropertyDecorator)((target, key, param) => (0, interface_api_1.SetParameterProvider)(target, key, param, function (context) {
|
|
92
|
+
const params = ExtractGeneric(context, (0, _1.GetDataControllerMeta)(this), {
|
|
93
|
+
id: "string",
|
|
94
|
+
});
|
|
95
|
+
(0, interface_api_util_1.assert)(params.id && typeof params.id === "string", 400, "Missing id.");
|
|
96
|
+
return params;
|
|
97
|
+
}));
|
|
98
|
+
Parameters.Delete = (0, decorators_1.MakeParameterAndPropertyDecorator)((target, key, param) => (0, interface_api_1.SetParameterProvider)(target, key, param, function (context) {
|
|
99
|
+
const params = ExtractGeneric(context, (0, _1.GetDataControllerMeta)(this), {
|
|
100
|
+
id: "multi:string",
|
|
101
|
+
});
|
|
102
|
+
(0, interface_api_util_1.assert)(params.id && Array.isArray(params.id) && params.id.length > 0, 400, "Missing id.");
|
|
103
|
+
return params;
|
|
104
|
+
}));
|
|
105
|
+
})(Parameters || (exports.Parameters = Parameters = {}));
|
|
106
|
+
var Query;
|
|
107
|
+
(function (Query) {
|
|
108
|
+
function GetModel(obj, meta) {
|
|
109
|
+
(0, interface_api_util_1.assert)(meta.modelKey, 500, "Missing model key.");
|
|
110
|
+
return obj[meta.modelKey];
|
|
111
|
+
}
|
|
112
|
+
Query.GetModel = GetModel;
|
|
113
|
+
function Foreign(db, meta, query, pluck) {
|
|
114
|
+
/**/
|
|
115
|
+
if (query instanceof interface_database_1.Stream) {
|
|
116
|
+
for (const [name, field] of Object.entries(meta.fields)) {
|
|
117
|
+
if (!field.foreign || (pluck && !pluck.has(name))) {
|
|
118
|
+
continue;
|
|
119
|
+
}
|
|
120
|
+
const [table, _tableClass, index, _multi, pluckField] = field.foreign;
|
|
121
|
+
const other = db.table(table);
|
|
122
|
+
if (pluckField) {
|
|
123
|
+
query = query.lookup(other.pluck("_internal", ...pluckField), name, index || "_id");
|
|
124
|
+
}
|
|
125
|
+
else {
|
|
126
|
+
query = query.lookup(other, name, index || "_id");
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
return query;
|
|
130
|
+
}
|
|
131
|
+
else {
|
|
132
|
+
const oldForeign = (obj) => {
|
|
133
|
+
const changedFields = {};
|
|
134
|
+
for (const [name, field] of Object.entries(meta.fields)) {
|
|
135
|
+
if (!field.foreign || (pluck && !pluck.has(name))) {
|
|
136
|
+
continue;
|
|
137
|
+
}
|
|
138
|
+
const [table, _tableClass, index, multi, pluckField] = field.foreign;
|
|
139
|
+
if (multi) {
|
|
140
|
+
changedFields[name] = obj.key(name)
|
|
141
|
+
.default([])
|
|
142
|
+
.map((val) => {
|
|
143
|
+
let foreignObject = Get(db.table(table), val, index);
|
|
144
|
+
if (pluckField) {
|
|
145
|
+
foreignObject = foreignObject.pluck("_internal", ...pluckField);
|
|
146
|
+
}
|
|
147
|
+
return foreignObject.default(null);
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
else {
|
|
151
|
+
changedFields[name] = Get(db.table(table), obj.key(name), index).default(null);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
return obj.merge(changedFields);
|
|
155
|
+
};
|
|
156
|
+
return query.do(oldForeign);
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
Query.Foreign = Foreign;
|
|
160
|
+
async function ReadProperties(obj, meta, dbData, action, onlyList) {
|
|
161
|
+
const readable = meta.readable[action ?? "_default"] ?? meta.readable._default;
|
|
162
|
+
const instance = { ...obj };
|
|
163
|
+
const res = {};
|
|
164
|
+
for (const [key, field] of readable.props) {
|
|
165
|
+
if (onlyList && !field.listable) {
|
|
166
|
+
continue;
|
|
167
|
+
}
|
|
168
|
+
instance[key] = dbData[field.dbName || key];
|
|
169
|
+
res[key] = dbData[field.dbName || key];
|
|
170
|
+
}
|
|
171
|
+
instance.table = dbData;
|
|
172
|
+
Object.setPrototypeOf(instance, meta.target.prototype);
|
|
173
|
+
for (const [key, field] of readable.getters) {
|
|
174
|
+
if (onlyList && !field.listable) {
|
|
175
|
+
continue;
|
|
176
|
+
}
|
|
177
|
+
const val = field.desc?.get?.apply(instance);
|
|
178
|
+
res[key] = await (typeof val === "function" ? val() : val);
|
|
179
|
+
}
|
|
180
|
+
return res;
|
|
181
|
+
}
|
|
182
|
+
Query.ReadProperties = ReadProperties;
|
|
183
|
+
async function WriteProperties(obj, meta, bodyData, action, existingDBData) {
|
|
184
|
+
const writable = meta.writable[action ?? "_default"] ?? meta.writable._default;
|
|
185
|
+
const instance = { ...obj };
|
|
186
|
+
const dbData = existingDBData || {};
|
|
187
|
+
Object.setPrototypeOf(dbData, meta.tableClass.prototype);
|
|
188
|
+
if (!existingDBData) {
|
|
189
|
+
for (const [key, value] of Object.entries(new meta.target())) {
|
|
190
|
+
if (value !== undefined) {
|
|
191
|
+
instance[key] = value;
|
|
192
|
+
if (key in meta.fields) {
|
|
193
|
+
dbData[meta.fields[key].dbName || key] = value;
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
for (const [key, field] of writable.props) {
|
|
199
|
+
instance[key] = bodyData[key];
|
|
200
|
+
dbData[field.dbName || key] = bodyData[key];
|
|
201
|
+
}
|
|
202
|
+
instance.table = dbData;
|
|
203
|
+
Object.setPrototypeOf(instance, meta.target.prototype);
|
|
204
|
+
for (const [key, field] of writable.setters) {
|
|
205
|
+
field.desc?.set?.apply(instance, [bodyData[key]]);
|
|
206
|
+
}
|
|
207
|
+
return dbData;
|
|
208
|
+
}
|
|
209
|
+
Query.WriteProperties = WriteProperties;
|
|
210
|
+
function Get(table, id, index) {
|
|
211
|
+
return index
|
|
212
|
+
? table.getAll(id, index).nth(0)
|
|
213
|
+
: table.get(id);
|
|
214
|
+
}
|
|
215
|
+
Query.Get = Get;
|
|
216
|
+
function List(obj, meta, request, reqCtx, sorting, filters) {
|
|
217
|
+
const filterList = Object.entries(meta.filters).filter(([name]) => filters && name in filters);
|
|
218
|
+
const indexFilter = filterList.find(([name]) => filters?.[name][1] === "eq" && meta.fields[name]?.indexable)?.[0];
|
|
219
|
+
const index = indexFilter
|
|
220
|
+
? meta.fields[indexFilter].dbName || indexFilter
|
|
221
|
+
: undefined;
|
|
222
|
+
const indexedFilter = indexFilter ? filters?.[indexFilter] : undefined;
|
|
223
|
+
let tmpRequest = index
|
|
224
|
+
? request.getAll(indexedFilter?.[0] ?? "", index)
|
|
225
|
+
: request;
|
|
226
|
+
const sortField = sorting?.[0];
|
|
227
|
+
const shouldSort = sortField ? meta.fields[sortField]?.sortable : undefined;
|
|
228
|
+
if (shouldSort?.indexed && sortField) {
|
|
229
|
+
tmpRequest = tmpRequest.orderBy(sortField, sorting?.[1] ?? "asc");
|
|
230
|
+
}
|
|
231
|
+
if (filterList.length > 0) {
|
|
232
|
+
// TODO: rework for modifier-affected fields (unlockrequest)
|
|
233
|
+
tmpRequest = filterList.reduce((req, [name, filter]) => {
|
|
234
|
+
const filterValue = filters?.[name];
|
|
235
|
+
if (!filterValue)
|
|
236
|
+
return req;
|
|
237
|
+
return name === indexFilter
|
|
238
|
+
? req
|
|
239
|
+
: req.filter((row) => filter(Object.assign(reqCtx, { this: obj }), Validation.UnlockRequest(obj, meta, row, name), name, filterValue[0], filterValue[1], row));
|
|
240
|
+
}, tmpRequest);
|
|
241
|
+
}
|
|
242
|
+
if (shouldSort && !shouldSort.indexed && sortField) {
|
|
243
|
+
tmpRequest = tmpRequest.orderBy(sortField, sorting?.[1] ?? "asc");
|
|
244
|
+
}
|
|
245
|
+
return [tmpRequest, tmpRequest.count()];
|
|
246
|
+
}
|
|
247
|
+
Query.List = List;
|
|
248
|
+
function Delete(table, id) {
|
|
249
|
+
return Array.isArray(id)
|
|
250
|
+
? table.getAll(id).delete()
|
|
251
|
+
: table.get(id).delete();
|
|
252
|
+
}
|
|
253
|
+
Query.Delete = Delete;
|
|
254
|
+
})(Query || (exports.Query = Query = {}));
|
|
255
|
+
var Validation;
|
|
256
|
+
(function (Validation) {
|
|
257
|
+
function MandatoryFields(meta, obj, type) {
|
|
258
|
+
const missing = Object.entries(meta.fields)
|
|
259
|
+
.filter(([name, field]) => field.mandatory?.has(type) && !(name in obj))
|
|
260
|
+
.map(([name]) => name);
|
|
261
|
+
(0, interface_api_util_1.assert)(missing.length === 0, 400, `Missing mandatory fields: ${missing.join(", ")}`);
|
|
262
|
+
}
|
|
263
|
+
Validation.MandatoryFields = MandatoryFields;
|
|
264
|
+
async function ValidateTypes(meta, obj) {
|
|
265
|
+
const invalid = [];
|
|
266
|
+
for (const [name, field] of Object.entries(meta.fields)) {
|
|
267
|
+
if (field.validator &&
|
|
268
|
+
name in obj &&
|
|
269
|
+
!(await field.validator(obj[name]))) {
|
|
270
|
+
invalid.push(name);
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
(0, interface_api_util_1.assert)(invalid.length === 0, 400, `Invalid field type(s): ${invalid.join(", ")}`);
|
|
274
|
+
}
|
|
275
|
+
Validation.ValidateTypes = ValidateTypes;
|
|
276
|
+
function Lock(obj, meta, data) {
|
|
277
|
+
for (const [modifier, field] of meta.modifierKeys.entries()) {
|
|
278
|
+
const key = obj[field];
|
|
279
|
+
(0, common_1.lock)(data, modifier, undefined, key);
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
Validation.Lock = Lock;
|
|
283
|
+
function Unlock(obj, meta, dbData) {
|
|
284
|
+
for (const [name, field] of Object.entries(meta.fields)) {
|
|
285
|
+
if (field.foreign &&
|
|
286
|
+
dbData[name] &&
|
|
287
|
+
typeof dbData[name] === "object" &&
|
|
288
|
+
field.foreign[1]) {
|
|
289
|
+
const foreignSchema = field.foreign[1];
|
|
290
|
+
dbData[name] = Array.isArray(dbData[name])
|
|
291
|
+
? dbData[name].map((entry) => (0, common_1.fromDatabase)(entry, foreignSchema))
|
|
292
|
+
: (0, common_1.fromDatabase)(dbData[name], field.foreign[1]);
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
for (const [modifier, field] of meta.modifierKeys.entries()) {
|
|
296
|
+
const key = obj[field];
|
|
297
|
+
(0, common_1.unlock)(dbData, modifier, undefined, key);
|
|
298
|
+
for (const [foreign, fieldData] of Object.entries(meta.fields)) {
|
|
299
|
+
if (fieldData.foreign && typeof dbData[foreign] === "object") {
|
|
300
|
+
(0, common_1.unlock)(dbData[foreign], modifier, undefined, key);
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
Validation.Unlock = Unlock;
|
|
306
|
+
function UnlockRequest(obj, meta, row, field) {
|
|
307
|
+
const modifiers = Array.from(meta.modifierKeys.entries()).map(([modifier, field]) => ({
|
|
308
|
+
modifier,
|
|
309
|
+
args: [obj[field]],
|
|
310
|
+
}));
|
|
311
|
+
return (0, common_1.unlockrequest)(meta.tableClass, row, field, modifiers);
|
|
312
|
+
}
|
|
313
|
+
Validation.UnlockRequest = UnlockRequest;
|
|
314
|
+
function ClearInternal(meta, obj) {
|
|
315
|
+
const results = Array.isArray(obj) ? obj : [obj];
|
|
316
|
+
const foreignFields = Object.entries(meta.fields).filter(([, field]) => field.foreign);
|
|
317
|
+
for (const entry of results) {
|
|
318
|
+
delete entry._internal;
|
|
319
|
+
for (const [name, { foreign }] of foreignFields) {
|
|
320
|
+
if (foreign &&
|
|
321
|
+
entry[name] &&
|
|
322
|
+
typeof entry[name] === "object" &&
|
|
323
|
+
(!Array.isArray(entry[name]) || typeof entry[name][0] === "object")) {
|
|
324
|
+
const processForeign = (data) => {
|
|
325
|
+
const plain = (0, common_1.toPlainData)(data);
|
|
326
|
+
if (!foreign?.[4]) {
|
|
327
|
+
return plain;
|
|
328
|
+
}
|
|
329
|
+
const plainPlucked = {};
|
|
330
|
+
for (const key of foreign[4]) {
|
|
331
|
+
plainPlucked[key] = plain[key];
|
|
332
|
+
}
|
|
333
|
+
return plainPlucked;
|
|
334
|
+
};
|
|
335
|
+
entry[name] = Array.isArray(entry[name])
|
|
336
|
+
? entry[name].map(processForeign)
|
|
337
|
+
: processForeign(entry[name]);
|
|
338
|
+
}
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
Validation.ClearInternal = ClearInternal;
|
|
343
|
+
})(Validation || (exports.Validation = Validation = {}));
|
|
344
|
+
//# sourceMappingURL=components.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"components.js","sourceRoot":"","sources":["../src/components.ts"],"names":[],"mappings":";;;AAAA,6DAGmC;AACnC,uEAAwD;AACxD,sEAA0F;AAC1F,uEAMwC;AAGxC,uFAMoE;AACpE,wBAA0C;AAG1C,IAAiB,UAAU,CAuM1B;AAvMD,WAAiB,UAAU;IACzB,SAAgB,kBAAkB,CAChC,MAAsB;QAEtB,OAAa,MAAO,CAAC,YAAY,EAAE,OAAO,IAAI,EAAE,CAAC;IACnD,CAAC;IAJe,6BAAkB,qBAIjC,CAAA;IAED,SAAgB,cAAc,CAC5B,MAAsB,EACtB,IAAiB;QAEjB,MAAM,MAAM,GAAgC,EAAE,CAAC;QAC/C,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAC/C,MAAM,UAAU,GAAG,UAAU,MAAM,EAAE,CAAC;YACtC,IAAI,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC5C,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;gBAChE,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;gBAC9C,MAAM,CAAC,MAAM,CAAC,GAAG,KAAK;oBACpB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAmB,CAAC;oBACxC,CAAC,CAAC,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;YACxB,CAAC;QACH,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAhBe,yBAAc,iBAgB7B,CAAA;IAED,MAAM,UAAU,GAAG;QACjB,MAAM,EAAE,CAAC,GAAW,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC;QACxC,GAAG,EAAE,CAAC,GAAW,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC;QACvC,IAAI,EAAE,CAAC,GAAW,EAAE,EAAE,CAAC,GAAG,KAAK,GAAG;QAClC,MAAM,EAAE,CAAC,GAAW,EAAE,EAAE,CAAC,GAAG;KAC7B,CAAC;IAQF,SAAgB,cAAc,CAC5B,MAAsB,EACtB,IAAiB,EACjB,OAAkC;QAElC,MAAM,SAAS,GAAG,kBAAkB,CAAI,MAAM,CAAC,CAAC;QAChD,MAAM,MAAM,GAAe,EAAE,GAAG,SAAS,EAAE,CAAC;QAC5C,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YACvC,IAAI,CAAC,CAAC,GAAG,IAAI,MAAM,CAAC,EAAE,CAAC;gBACrB,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;gBAC/B,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;oBAClC,IAAI,SAAS,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;wBACnC,MAAM,SAAS,GAAG,UAAU,CAAgB,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;wBACpE,MAAM,CAAC,GAAc,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,YAAY;6BAC7C,MAAM,CAAC,GAAG,CAAC;6BACX,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,CAAQ,CAAC;oBACrD,CAAC;yBAAM,CAAC;wBACN,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;wBACnD,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;4BACvB,MAAM,CAAC,GAAc,CAAC,GAAG,UAAU,CAAgB,SAAS,CAAC,CAC3D,SAAS,CACH,CAAC;wBACX,CAAC;oBACH,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,GAAc,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;gBACnD,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IA9Be,yBAAc,iBA8B7B,CAAA;IAkBY,eAAI,GAAG,IAAA,8CAAiC,EAAC,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,CAC3E,IAAA,oCAAoB,EAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,UAAyB,OAAO;QACvE,MAAM,IAAI,GAAG,IAAA,wBAAqB,EAAC,IAAI,CAAC,CAAC;QACzC,MAAM,MAAM,GAAG,cAAc,CAAiB,OAAO,EAAE,IAAI,EAAE;YAC3D,OAAO,EAAE,cAAc;YACvB,MAAM,EAAE,KAAK;YACb,KAAK,EAAE,KAAK;YACZ,OAAO,EAAE,QAAQ;YACjB,aAAa,EAAE,QAAQ;SACxB,CAAC,CAAC;QAEH,IAAA,2BAAM,EACJ,CAAC,MAAM,CAAC,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,QAAQ,EACxD,GAAG,EACH,wBAAwB,CACzB,CAAC;QACF,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK;YACzB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,OAAO,IAAI,GAAG,CAAC;YAC/C,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;QAEnB,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC,CACH,CAAC;IAQW,cAAG,GAAG,IAAA,8CAAiC,EAAC,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,CAC1E,IAAA,oCAAoB,EAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,UAAyB,OAAO;QACvE,MAAM,MAAM,GAAG,cAAc,CAC3B,OAAO,EACP,IAAA,wBAAqB,EAAC,IAAI,CAAC,EAC3B;YACE,EAAE,EAAE,QAAQ;SACb,CACF,CAAC;QAEF,IAAA,2BAAM,EAAC,MAAM,CAAC,EAAE,IAAI,OAAO,MAAM,CAAC,EAAE,KAAK,QAAQ,EAAE,GAAG,EAAE,aAAa,CAAC,CAAC;QAEvE,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC,CACH,CAAC;IAMW,cAAG,GAAG,IAAA,8CAAiC,EAAC,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,CAC1E,IAAA,oCAAoB,EAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,UAAyB,OAAO;QACvE,MAAM,MAAM,GAAG,cAAc,CAC3B,OAAO,EACP,IAAA,wBAAqB,EAAC,IAAI,CAAC,EAC3B,EAAE,CACH,CAAC;QAEF,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC,CACH,CAAC;IAQW,eAAI,GAAG,IAAA,8CAAiC,EAAC,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,CAC3E,IAAA,oCAAoB,EAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,UAAyB,OAAO;QACvE,MAAM,MAAM,GAAG,cAAc,CAC3B,OAAO,EACP,IAAA,wBAAqB,EAAC,IAAI,CAAC,EAC3B;YACE,EAAE,EAAE,QAAQ;SACb,CACF,CAAC;QAEF,IAAA,2BAAM,EAAC,MAAM,CAAC,EAAE,IAAI,OAAO,MAAM,CAAC,EAAE,KAAK,QAAQ,EAAE,GAAG,EAAE,aAAa,CAAC,CAAC;QAEvE,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC,CACH,CAAC;IAMW,iBAAM,GAAG,IAAA,8CAAiC,EACrD,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,CACrB,IAAA,oCAAoB,EAClB,MAAM,EACN,GAAG,EACH,KAAK,EACL,UAAyB,OAAO;QAC9B,MAAM,MAAM,GAAG,cAAc,CAC3B,OAAO,EACP,IAAA,wBAAqB,EAAC,IAAI,CAAC,EAC3B;YACE,EAAE,EAAE,cAAc;SACnB,CACF,CAAC;QAEF,IAAA,2BAAM,EACJ,MAAM,CAAC,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,MAAM,CAAC,EAAE,CAAC,MAAM,GAAG,CAAC,EAC7D,GAAG,EACH,aAAa,CACd,CAAC;QAEF,OAAO,MAAM,CAAC;IAChB,CAAC,CACF,CACJ,CAAC;AACJ,CAAC,EAvMgB,UAAU,0BAAV,UAAU,QAuM1B;AAED,IAAiB,KAAK,CAyNrB;AAzND,WAAiB,KAAK;IACpB,SAAgB,QAAQ,CACtB,GAAQ,EACR,IAAiB;QAEjB,IAAA,2BAAM,EAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,oBAAoB,CAAC,CAAC;QACjD,OAAO,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC5B,CAAC;IANe,cAAQ,WAMvB,CAAA;IAcD,SAAgB,OAAO,CACrB,EAAuB,EACvB,IAAiB,EACjB,KAA+B,EAC/B,KAAmB;QAEnB,IAAI;QACJ,IAAI,KAAK,YAAY,2BAAM,EAAE,CAAC;YAC5B,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;gBACxD,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;oBAClD,SAAS;gBACX,CAAC;gBACD,MAAM,CAAC,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC;gBACtE,MAAM,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBAC9B,IAAI,UAAU,EAAE,CAAC;oBACf,KAAK,GAAG,KAAK,CAAC,MAAM,CAClB,KAAK,CAAC,KAAK,CAAC,WAAW,EAAE,GAAG,UAAU,CAAe,EACrD,IAAI,EACJ,KAAK,IAAI,KAAK,CACf,CAAC;gBACJ,CAAC;qBAAM,CAAC;oBACN,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,IAAI,KAAK,CAAC,CAAC;gBACpD,CAAC;YACH,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;aAAM,CAAC;YACN,MAAM,UAAU,GAAG,CAAC,GAAoC,EAAE,EAAE;gBAC1D,MAAM,aAAa,GAAwB,EAAE,CAAC;gBAC9C,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;oBACxD,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;wBAClD,SAAS;oBACX,CAAC;oBACD,MAAM,CAAC,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC;oBACrE,IAAI,KAAK,EAAE,CAAC;wBACV,aAAa,CAAC,IAAI,CAAC,GAAI,GAAG,CAAC,GAAG,CAAC,IAAI,CAA0B;6BAC1D,OAAO,CAAC,EAAE,CAAC;6BACX,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;4BACX,IAAI,aAAa,GAAe,GAAG,CACjC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,EACf,GAAG,EACH,KAAK,CACN,CAAC;4BACF,IAAI,UAAU,EAAE,CAAC;gCACf,aAAa,GAAG,aAAa,CAAC,KAAK,CACjC,WAAW,EACX,GAAG,UAAU,CACd,CAAC;4BACJ,CAAC;4BACD,OAAO,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;wBACrC,CAAC,CAAC,CAAC;oBACP,CAAC;yBAAM,CAAC;wBACN,aAAa,CAAC,IAAI,CAAC,GAAG,GAAG,CACvB,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,EACf,GAAG,CAAC,GAAG,CAAC,IAAI,CAAuB,EACnC,KAAK,CACN,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;oBAClB,CAAC;gBACH,CAAC;gBACD,OAAO,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;YAClC,CAAC,CAAC;YACF,OAAO,KAAK,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IA9De,aAAO,UA8DtB,CAAA;IAEM,KAAK,UAAU,cAAc,CAClC,GAAQ,EACR,IAAiB,EACjB,MAAW,EACX,MAAe,EACf,QAAkB;QAElB,MAAM,QAAQ,GACZ,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,UAAU,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAChE,MAAM,QAAQ,GAAwB,EAAE,GAAG,GAAG,EAAE,CAAC;QACjD,MAAM,GAAG,GAAwB,EAAE,CAAC;QACpC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;YAC1C,IAAI,QAAQ,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;gBAChC,SAAS;YACX,CAAC;YACD,QAAQ,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC;YAC5C,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC;QACzC,CAAC;QACD,QAAQ,CAAC,KAAK,GAAG,MAAM,CAAC;QACxB,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACvD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;YAC5C,IAAI,QAAQ,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;gBAChC,SAAS;YACX,CAAC;YACD,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;YAC7C,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,OAAO,GAAG,KAAK,UAAU,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAC7D,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IA5BqB,oBAAc,iBA4BnC,CAAA;IAEM,KAAK,UAAU,eAAe,CACnC,GAAQ,EACR,IAAiB,EACjB,QAA6B,EAC7B,MAAe,EACf,cAAoC;QAEpC,MAAM,QAAQ,GACZ,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,UAAU,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAChE,MAAM,QAAQ,GAAwB,EAAE,GAAG,GAAG,EAAE,CAAC;QACjD,MAAM,MAAM,GAAwB,cAAc,IAAI,EAAE,CAAC;QACzD,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QACzD,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC;gBAC7D,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;oBACxB,QAAQ,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;oBACtB,IAAI,GAAG,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;wBACvB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,IAAI,GAAG,CAAC,GAAG,KAAK,CAAC;oBACjD,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QACD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;YAC1C,QAAQ,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;YAC9B,MAAM,CAAC,KAAK,CAAC,MAAM,IAAI,GAAG,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC9C,CAAC;QACD,QAAQ,CAAC,KAAK,GAAG,MAAM,CAAC;QACxB,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACvD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;YAC5C,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACpD,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAhCqB,qBAAe,kBAgCpC,CAAA;IAED,SAAgB,GAAG,CACjB,KAAiB,EACjB,EAA+B,EAC/B,KAAc;QAEd,OAAO,KAAK;YACV,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,EAAY,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAC1C,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAY,CAAC,CAAC;IAC9B,CAAC;IARe,SAAG,MAQlB,CAAA;IAED,SAAgB,IAAI,CAClB,GAAQ,EACR,IAAiB,EACjB,OAAiB,EACjB,MAAsB,EACtB,OAA8C,EAC9C,OAAqC;QAErC,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CACpD,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,OAAO,IAAI,IAAI,IAAI,OAAO,CACvC,CAAC;QACF,MAAM,WAAW,GAAG,UAAU,CAAC,IAAI,CACjC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,SAAS,CACxE,EAAE,CAAC,CAAC,CAAC,CAAC;QACP,MAAM,KAAK,GAAG,WAAW;YACvB,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,MAAM,IAAI,WAAW;YAChD,CAAC,CAAC,SAAS,CAAC;QACd,MAAM,aAAa,GAAG,WAAW,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAEvE,IAAI,UAAU,GAAG,KAAK;YACpB,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,KAAK,CAAC;YACjD,CAAC,CAAC,OAAO,CAAC;QAEZ,MAAM,SAAS,GAAG,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;QAC/B,MAAM,UAAU,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;QAC5E,IAAI,UAAU,EAAE,OAAO,IAAI,SAAS,EAAE,CAAC;YACrC,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC;QACpE,CAAC;QACD,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1B,4DAA4D;YAC5D,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,EAAE;gBACrD,MAAM,WAAW,GAAG,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;gBACpC,IAAI,CAAC,WAAW;oBAAE,OAAO,GAAG,CAAC;gBAC7B,OAAO,IAAI,KAAK,WAAW;oBACzB,CAAC,CAAC,GAAG;oBACL,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CACjB,MAAM,CACJ,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,EACpC,UAAU,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,EAC9C,IAAI,EACJ,WAAW,CAAC,CAAC,CAAC,EACd,WAAW,CAAC,CAAC,CAAC,EACd,GAAsC,CACvC,CACF,CAAC;YACR,CAAC,EAAE,UAAU,CAAC,CAAC;QACjB,CAAC;QACD,IAAI,UAAU,IAAI,CAAC,UAAU,CAAC,OAAO,IAAI,SAAS,EAAE,CAAC;YACnD,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC;QACpE,CAAC;QACD,OAAO,CAAC,UAAU,EAAE,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC;IAC1C,CAAC;IAnDe,UAAI,OAmDnB,CAAA;IAED,SAAgB,MAAM,CAAC,KAAiB,EAAE,EAAqB;QAC7D,OAAO,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;YACtB,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE;YAC3B,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;IAC7B,CAAC;IAJe,YAAM,SAIrB,CAAA;AACH,CAAC,EAzNgB,KAAK,qBAAL,KAAK,QAyNrB;AAED,IAAiB,UAAU,CAyH1B;AAzHD,WAAiB,UAAU;IACzB,SAAgB,eAAe,CAAC,IAAiB,EAAE,GAAQ,EAAE,IAAY;QACvE,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;aACxC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC;aACvE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;QACzB,IAAA,2BAAM,EACJ,OAAO,CAAC,MAAM,KAAK,CAAC,EACpB,GAAG,EACH,6BAA6B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAClD,CAAC;IACJ,CAAC;IATe,0BAAe,kBAS9B,CAAA;IAEM,KAAK,UAAU,aAAa,CACjC,IAAiB,EACjB,GAAwB;QAExB,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YACxD,IACE,KAAK,CAAC,SAAS;gBACf,IAAI,IAAI,GAAG;gBACX,CAAC,CAAC,MAAM,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EACnC,CAAC;gBACD,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACrB,CAAC;QACH,CAAC;QACD,IAAA,2BAAM,EACJ,OAAO,CAAC,MAAM,KAAK,CAAC,EACpB,GAAG,EACH,0BAA0B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC/C,CAAC;IACJ,CAAC;IAnBqB,wBAAa,gBAmBlC,CAAA;IAED,SAAgB,IAAI,CAAC,GAAQ,EAAE,IAAiB,EAAE,IAAS;QACzD,KAAK,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,EAAE,CAAC;YAC5D,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC;YACvB,IAAA,aAAI,EAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IALe,eAAI,OAKnB,CAAA;IAED,SAAgB,MAAM,CAAC,GAAQ,EAAE,IAAiB,EAAE,MAAW;QAC7D,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YACxD,IACE,KAAK,CAAC,OAAO;gBACb,MAAM,CAAC,IAAI,CAAC;gBACZ,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,QAAQ;gBAChC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAChB,CAAC;gBACD,MAAM,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;gBACvC,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;oBACxC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAA,qBAAY,EAAC,KAAK,EAAE,aAAa,CAAC,CAAC;oBACjE,CAAC,CAAC,IAAA,qBAAY,EAAC,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;YACnD,CAAC;QACH,CAAC;QACD,KAAK,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,EAAE,CAAC;YAC5D,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC;YACvB,IAAA,eAAM,EAAC,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;YACzC,KAAK,MAAM,CAAC,OAAO,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC/D,IAAI,SAAS,CAAC,OAAO,IAAI,OAAO,MAAM,CAAC,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;oBAC7D,IAAA,eAAM,EAAC,MAAM,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;gBACpD,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAvBe,iBAAM,SAuBrB,CAAA;IAED,SAAgB,aAAa,CAC3B,GAAQ,EACR,IAAiB,EACjB,GAAkB,EAClB,KAAQ;QAER,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAC3D,CAAC,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;YACtB,QAAQ;YACR,IAAI,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;SACnB,CAAC,CACH,CAAC;QACF,OAAO,IAAA,sBAAa,EAClB,IAAI,CAAC,UAA8B,EACnC,GAAG,EACH,KAAK,EACL,SAAS,CACV,CAAC;IACJ,CAAC;IAlBe,wBAAa,gBAkB5B,CAAA;IAED,SAAgB,aAAa,CAC3B,IAAiB,EACjB,GAAqD;QAErD,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAEjD,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CACtD,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAC7B,CAAC;QACF,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,OAAO,KAAK,CAAC,SAAS,CAAC;YACvB,KAAK,MAAM,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,IAAI,aAAa,EAAE,CAAC;gBAChD,IACE,OAAO;oBACP,KAAK,CAAC,IAAI,CAAC;oBACX,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,QAAQ;oBAC/B,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,EACnE,CAAC;oBACD,MAAM,cAAc,GAAG,CAAC,IAAS,EAAE,EAAE;wBACnC,MAAM,KAAK,GAAG,IAAA,oBAAW,EAAC,IAAI,CAAC,CAAC;wBAChC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;4BAClB,OAAO,KAAK,CAAC;wBACf,CAAC;wBACD,MAAM,YAAY,GAA4B,EAAE,CAAC;wBACjD,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;4BAC7B,YAAY,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;wBACjC,CAAC;wBACD,OAAO,YAAY,CAAC;oBACtB,CAAC,CAAC;oBACF,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;wBACtC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC;wBACjC,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;gBAClC,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAnCe,wBAAa,gBAmC5B,CAAA;AACH,CAAC,EAzHgB,UAAU,0BAAV,UAAU,QAyH1B"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { type ControllerClass, type RequestContext } from "@antelopejs/interface-api";
|
|
2
|
+
import { type Class, type ParameterDecorator } from "@antelopejs/interface-core/decorators";
|
|
3
|
+
import { Parameters } from "./components";
|
|
4
|
+
import { DataAPIMeta } from "./metadata";
|
|
5
|
+
export type DataControllerCallback<O = any> = {
|
|
6
|
+
args: (ParameterDecorator | ParameterDecorator[])[];
|
|
7
|
+
method: string;
|
|
8
|
+
func: (ctx: any, opts: O, ...args: any[]) => any;
|
|
9
|
+
};
|
|
10
|
+
export type DataControllerCallbackWithOptions<O = any> = {
|
|
11
|
+
endpoint?: string;
|
|
12
|
+
options?: Partial<O>;
|
|
13
|
+
callback: DataControllerCallback<O>;
|
|
14
|
+
};
|
|
15
|
+
export type ExtractCallback<T> = T extends DataControllerCallbackWithOptions ? T["callback"]["func"] : T extends DataControllerCallback ? T["func"] : never;
|
|
16
|
+
export type DataControllerDef = {
|
|
17
|
+
[name: string]: DataControllerCallback | DataControllerCallbackWithOptions;
|
|
18
|
+
};
|
|
19
|
+
export type ExtractDefCallbacks<T extends {}> = {
|
|
20
|
+
[K in keyof T]: ExtractCallback<T[K]>;
|
|
21
|
+
};
|
|
22
|
+
declare abstract class TableHolder<C extends Class> {
|
|
23
|
+
table: InstanceType<C>;
|
|
24
|
+
}
|
|
25
|
+
export declare function DataController<C extends Class, P extends DataControllerDef = DataControllerDef, Base extends ControllerClass = ControllerClass>(tableClass: C, def: P, base: Base): Class<ExtractDefCallbacks<P> & TableHolder<C>> & Base;
|
|
26
|
+
export declare const RegisterDataController: () => import("@antelopejs/interface-core/decorators").ClassDecorator<Class<any, any[]>>;
|
|
27
|
+
export declare function GetDataControllerMeta(thisObj: any): DataAPIMeta;
|
|
28
|
+
export declare namespace DefaultRoutes {
|
|
29
|
+
const Get: {
|
|
30
|
+
func: (_reqCtx: RequestContext, params: Parameters.GetParameters) => Promise<Record<string, any>>;
|
|
31
|
+
args: (import("@antelopejs/interface-core/decorators").PropertyDecorator & ParameterDecorator)[];
|
|
32
|
+
method: string;
|
|
33
|
+
};
|
|
34
|
+
const List: {
|
|
35
|
+
func: (reqCtx: RequestContext, params: Parameters.ListParameters) => Promise<{
|
|
36
|
+
results: Record<string, any>[];
|
|
37
|
+
total: number;
|
|
38
|
+
offset: number;
|
|
39
|
+
limit: number;
|
|
40
|
+
}>;
|
|
41
|
+
args: (import("@antelopejs/interface-core/decorators").PropertyDecorator & ParameterDecorator)[];
|
|
42
|
+
method: string;
|
|
43
|
+
};
|
|
44
|
+
const New: {
|
|
45
|
+
func: (_reqCtx: RequestContext, params: Parameters.NewParameters, body: Buffer) => Promise<string[]>;
|
|
46
|
+
args: (import("@antelopejs/interface-core/decorators").PropertyDecorator & ParameterDecorator)[];
|
|
47
|
+
method: string;
|
|
48
|
+
};
|
|
49
|
+
const Edit: {
|
|
50
|
+
func: (_reqCtx: RequestContext, params: Parameters.EditParameters, body: Buffer) => Promise<void>;
|
|
51
|
+
args: (import("@antelopejs/interface-core/decorators").PropertyDecorator & ParameterDecorator)[];
|
|
52
|
+
method: string;
|
|
53
|
+
};
|
|
54
|
+
const Delete: {
|
|
55
|
+
func: (_reqCtx: RequestContext, params: Parameters.DeleteParameters) => Promise<number>;
|
|
56
|
+
args: (import("@antelopejs/interface-core/decorators").PropertyDecorator & ParameterDecorator)[];
|
|
57
|
+
method: string;
|
|
58
|
+
};
|
|
59
|
+
const All: {
|
|
60
|
+
readonly get: {
|
|
61
|
+
func: (_reqCtx: RequestContext, params: Parameters.GetParameters) => Promise<Record<string, any>>;
|
|
62
|
+
args: (import("@antelopejs/interface-core/decorators").PropertyDecorator & ParameterDecorator)[];
|
|
63
|
+
method: string;
|
|
64
|
+
};
|
|
65
|
+
readonly list: {
|
|
66
|
+
func: (reqCtx: RequestContext, params: Parameters.ListParameters) => Promise<{
|
|
67
|
+
results: Record<string, any>[];
|
|
68
|
+
total: number;
|
|
69
|
+
offset: number;
|
|
70
|
+
limit: number;
|
|
71
|
+
}>;
|
|
72
|
+
args: (import("@antelopejs/interface-core/decorators").PropertyDecorator & ParameterDecorator)[];
|
|
73
|
+
method: string;
|
|
74
|
+
};
|
|
75
|
+
readonly new: {
|
|
76
|
+
func: (_reqCtx: RequestContext, params: Parameters.NewParameters, body: Buffer) => Promise<string[]>;
|
|
77
|
+
args: (import("@antelopejs/interface-core/decorators").PropertyDecorator & ParameterDecorator)[];
|
|
78
|
+
method: string;
|
|
79
|
+
};
|
|
80
|
+
readonly edit: {
|
|
81
|
+
func: (_reqCtx: RequestContext, params: Parameters.EditParameters, body: Buffer) => Promise<void>;
|
|
82
|
+
args: (import("@antelopejs/interface-core/decorators").PropertyDecorator & ParameterDecorator)[];
|
|
83
|
+
method: string;
|
|
84
|
+
};
|
|
85
|
+
readonly delete: {
|
|
86
|
+
func: (_reqCtx: RequestContext, params: Parameters.DeleteParameters) => Promise<number>;
|
|
87
|
+
args: (import("@antelopejs/interface-core/decorators").PropertyDecorator & ParameterDecorator)[];
|
|
88
|
+
method: string;
|
|
89
|
+
};
|
|
90
|
+
};
|
|
91
|
+
function WithOptions<O>(callback: DataControllerCallback<O> | DataControllerCallbackWithOptions<O>, options?: Partial<O>, endpoint?: string): DataControllerCallbackWithOptions<O>;
|
|
92
|
+
}
|
|
93
|
+
export {};
|