@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.
Files changed (42) hide show
  1. package/LICENSE +190 -0
  2. package/README.md +45 -0
  3. package/dist/antelope.test.d.ts +2 -0
  4. package/dist/antelope.test.js +59 -0
  5. package/dist/antelope.test.js.map +1 -0
  6. package/dist/components.d.ts +72 -0
  7. package/dist/components.js +344 -0
  8. package/dist/components.js.map +1 -0
  9. package/dist/index.d.ts +93 -0
  10. package/dist/index.js +217 -0
  11. package/dist/index.js.map +1 -0
  12. package/dist/metadata.d.ts +290 -0
  13. package/dist/metadata.js +444 -0
  14. package/dist/metadata.js.map +1 -0
  15. package/dist/tests/components/access_control.test.d.ts +1 -0
  16. package/dist/tests/components/access_control.test.js +138 -0
  17. package/dist/tests/components/access_control.test.js.map +1 -0
  18. package/dist/tests/components/listable.test.d.ts +1 -0
  19. package/dist/tests/components/listable.test.js +361 -0
  20. package/dist/tests/components/listable.test.js.map +1 -0
  21. package/dist/tests/components/mandatory.test.d.ts +1 -0
  22. package/dist/tests/components/mandatory.test.js +193 -0
  23. package/dist/tests/components/mandatory.test.js.map +1 -0
  24. package/dist/tests/components/per_action_access.test.d.ts +1 -0
  25. package/dist/tests/components/per_action_access.test.js +115 -0
  26. package/dist/tests/components/per_action_access.test.js.map +1 -0
  27. package/dist/tests/components/validator.test.d.ts +1 -0
  28. package/dist/tests/components/validator.test.js +178 -0
  29. package/dist/tests/components/validator.test.js.map +1 -0
  30. package/dist/tests/constants.d.ts +3 -0
  31. package/dist/tests/constants.js +7 -0
  32. package/dist/tests/constants.js.map +1 -0
  33. package/dist/tests/index/routes.test.d.ts +1 -0
  34. package/dist/tests/index/routes.test.js +210 -0
  35. package/dist/tests/index/routes.test.js.map +1 -0
  36. package/dist/tests/integration.test.d.ts +1 -0
  37. package/dist/tests/integration.test.js +838 -0
  38. package/dist/tests/integration.test.js.map +1 -0
  39. package/dist/tests/utils.d.ts +12 -0
  40. package/dist/tests/utils.js +70 -0
  41. package/dist/tests/utils.js.map +1 -0
  42. 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"}
@@ -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 {};