@decaf-ts/for-couchdb 0.4.30 → 0.4.32
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/dist/for-couchdb.cjs +1 -1
- package/dist/for-couchdb.cjs.map +1 -1
- package/dist/for-couchdb.js +1 -1
- package/dist/for-couchdb.js.map +1 -1
- package/lib/adapter.d.ts +12 -1
- package/lib/adapter.js.map +1 -1
- package/lib/decorators.cjs +9 -39
- package/lib/decorators.d.ts +2 -5
- package/lib/decorators.js.map +1 -1
- package/lib/esm/adapter.d.ts +12 -1
- package/lib/esm/adapter.js.map +1 -1
- package/lib/esm/decorators.d.ts +2 -5
- package/lib/esm/decorators.js +5 -33
- package/lib/esm/decorators.js.map +1 -1
- package/lib/esm/index.d.ts +1 -1
- package/lib/esm/index.js +1 -1
- package/lib/esm/indexes/generator.js +68 -38
- package/lib/esm/indexes/generator.js.map +1 -1
- package/lib/esm/query/Statement.d.ts +32 -2
- package/lib/esm/query/Statement.js +445 -12
- package/lib/esm/query/Statement.js.map +1 -1
- package/lib/esm/types.d.ts +11 -0
- package/lib/esm/views/generator.d.ts +8 -2
- package/lib/esm/views/generator.js +31 -4
- package/lib/esm/views/generator.js.map +1 -1
- package/lib/esm/views/types.d.ts +6 -20
- package/lib/index.cjs +1 -1
- package/lib/index.d.ts +1 -1
- package/lib/indexes/generator.cjs +67 -37
- package/lib/indexes/generator.js.map +1 -1
- package/lib/query/Statement.cjs +444 -11
- package/lib/query/Statement.d.ts +32 -2
- package/lib/query/Statement.js.map +1 -1
- package/lib/types.d.ts +11 -0
- package/lib/views/generator.cjs +31 -0
- package/lib/views/generator.d.ts +8 -2
- package/lib/views/generator.js.map +1 -1
- package/lib/views/types.d.ts +6 -20
- package/package.json +1 -1
package/lib/query/Statement.cjs
CHANGED
|
@@ -8,6 +8,7 @@ const constants_1 = require("./../constants.cjs");
|
|
|
8
8
|
const constants_2 = require("./constants.cjs");
|
|
9
9
|
const db_decorators_1 = require("@decaf-ts/db-decorators");
|
|
10
10
|
const decoration_1 = require("@decaf-ts/decoration");
|
|
11
|
+
const generator_1 = require("./../views/generator.cjs");
|
|
11
12
|
/**
|
|
12
13
|
* @description Statement builder for CouchDB Mango queries
|
|
13
14
|
* @summary Provides a fluent interface for building CouchDB Mango queries with type safety
|
|
@@ -31,6 +32,7 @@ const decoration_1 = require("@decaf-ts/decoration");
|
|
|
31
32
|
class CouchDBStatement extends core_1.Statement {
|
|
32
33
|
constructor(adapter) {
|
|
33
34
|
super(adapter);
|
|
35
|
+
this.attributeTypeCache = new Map();
|
|
34
36
|
}
|
|
35
37
|
/**
|
|
36
38
|
* @description Builds a CouchDB Mango query from the statement
|
|
@@ -90,6 +92,16 @@ class CouchDBStatement extends core_1.Statement {
|
|
|
90
92
|
*/
|
|
91
93
|
build() {
|
|
92
94
|
const log = this.log.for(this.build);
|
|
95
|
+
this.manualAggregation = undefined;
|
|
96
|
+
const aggregateInfo = this.buildAggregateInfo();
|
|
97
|
+
if (aggregateInfo) {
|
|
98
|
+
if (this.shouldUseManualAggregation()) {
|
|
99
|
+
this.manualAggregation = aggregateInfo;
|
|
100
|
+
}
|
|
101
|
+
else {
|
|
102
|
+
return this.createAggregateQuery(aggregateInfo);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
93
105
|
const selectors = {};
|
|
94
106
|
selectors[constants_1.CouchDBKeys.TABLE] = {};
|
|
95
107
|
selectors[constants_1.CouchDBKeys.TABLE] = decorator_validation_1.Model.tableName(this.fromSelector);
|
|
@@ -142,23 +154,26 @@ class CouchDBStatement extends core_1.Statement {
|
|
|
142
154
|
});
|
|
143
155
|
}
|
|
144
156
|
}
|
|
145
|
-
if (this.
|
|
157
|
+
if (this.orderBySelectors?.length) {
|
|
146
158
|
query.sort = query.sort || [];
|
|
147
159
|
query.selector = query.selector || {};
|
|
148
|
-
const [
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
query.selector[selector]
|
|
154
|
-
|
|
155
|
-
|
|
160
|
+
for (const [selectorKey, direction] of this.orderBySelectors) {
|
|
161
|
+
const selector = selectorKey;
|
|
162
|
+
const rec = {};
|
|
163
|
+
rec[selector] = direction;
|
|
164
|
+
query.sort.push(rec);
|
|
165
|
+
if (!query.selector[selector]) {
|
|
166
|
+
query.selector[selector] = {};
|
|
167
|
+
query.selector[selector][constants_2.CouchDBOperator.BIGGER] =
|
|
168
|
+
null;
|
|
169
|
+
}
|
|
156
170
|
}
|
|
157
171
|
}
|
|
172
|
+
const hasManualAggregate = !!this.manualAggregation;
|
|
158
173
|
if (this.limitSelector) {
|
|
159
174
|
query.limit = this.limitSelector;
|
|
160
175
|
}
|
|
161
|
-
else {
|
|
176
|
+
else if (!hasManualAggregate) {
|
|
162
177
|
log.warn(`No limit selector defined. Using default couchdb limit of ${constants_2.CouchDBQueryLimit}`);
|
|
163
178
|
query.limit = constants_2.CouchDBQueryLimit;
|
|
164
179
|
}
|
|
@@ -191,11 +206,24 @@ class CouchDBStatement extends core_1.Statement {
|
|
|
191
206
|
*/
|
|
192
207
|
async raw(rawInput, ...args) {
|
|
193
208
|
const { ctx } = this.logCtx(args, this.raw);
|
|
209
|
+
const aggregator = rawInput?.aggregateInfo;
|
|
210
|
+
if (rawInput?.aggregate && aggregator) {
|
|
211
|
+
return this.executeAggregate(aggregator, ctx);
|
|
212
|
+
}
|
|
194
213
|
const results = await this.adapter.raw(rawInput, true, ctx);
|
|
195
214
|
const pkAttr = decorator_validation_1.Model.pk(this.fromSelector);
|
|
196
215
|
const type = decoration_1.Metadata.get(this.fromSelector, decoration_1.Metadata.key(db_decorators_1.DBKeys.ID, pkAttr))?.type;
|
|
216
|
+
const processed = results.map((r) => this.processRecord(r, pkAttr, type, ctx));
|
|
217
|
+
if (this.manualAggregation) {
|
|
218
|
+
const manualResult = this.executeManualAggregation(processed, this.manualAggregation, ctx);
|
|
219
|
+
this.manualAggregation = undefined;
|
|
220
|
+
return manualResult;
|
|
221
|
+
}
|
|
222
|
+
if (!this.selectSelector && this.groupBySelectors?.length) {
|
|
223
|
+
return this.groupSelectResults(processed);
|
|
224
|
+
}
|
|
197
225
|
if (!this.selectSelector)
|
|
198
|
-
return
|
|
226
|
+
return processed;
|
|
199
227
|
return results;
|
|
200
228
|
}
|
|
201
229
|
/**
|
|
@@ -233,6 +261,400 @@ class CouchDBStatement extends core_1.Statement {
|
|
|
233
261
|
*
|
|
234
262
|
* Statement-->>Statement: Return query with selector
|
|
235
263
|
*/
|
|
264
|
+
buildAggregateInfo() {
|
|
265
|
+
if (!this.fromSelector)
|
|
266
|
+
return undefined;
|
|
267
|
+
if (this.avgSelector) {
|
|
268
|
+
const attribute = String(this.avgSelector);
|
|
269
|
+
const sumInfo = this.createAggregateDescriptor("sum", attribute);
|
|
270
|
+
if (!sumInfo)
|
|
271
|
+
throw this.missingDecorator("sum", attribute);
|
|
272
|
+
const countInfo = this.createAggregateDescriptor("count", attribute);
|
|
273
|
+
if (!countInfo)
|
|
274
|
+
throw this.missingDecorator("count", attribute);
|
|
275
|
+
return {
|
|
276
|
+
kind: "avg",
|
|
277
|
+
attribute,
|
|
278
|
+
sumDescriptor: sumInfo.descriptor,
|
|
279
|
+
countDescriptor: countInfo.descriptor,
|
|
280
|
+
};
|
|
281
|
+
}
|
|
282
|
+
if (typeof this.countDistinctSelector !== "undefined") {
|
|
283
|
+
const attribute = this.resolveSelectorAttribute(this.countDistinctSelector);
|
|
284
|
+
const info = this.createAggregateDescriptor("distinct", attribute);
|
|
285
|
+
if (!info)
|
|
286
|
+
throw this.missingDecorator("distinct", attribute);
|
|
287
|
+
info.countDistinct = true;
|
|
288
|
+
return info;
|
|
289
|
+
}
|
|
290
|
+
if (typeof this.countSelector !== "undefined") {
|
|
291
|
+
const attribute = this.resolveSelectorAttribute(this.countSelector);
|
|
292
|
+
const info = this.createAggregateDescriptor("count", attribute);
|
|
293
|
+
if (!info)
|
|
294
|
+
throw this.missingDecorator("count", attribute);
|
|
295
|
+
return info;
|
|
296
|
+
}
|
|
297
|
+
if (this.maxSelector) {
|
|
298
|
+
const attribute = this.resolveSelectorAttribute(this.maxSelector);
|
|
299
|
+
const info = this.createAggregateDescriptor("max", attribute);
|
|
300
|
+
if (!info)
|
|
301
|
+
throw this.missingDecorator("max", attribute);
|
|
302
|
+
return info;
|
|
303
|
+
}
|
|
304
|
+
if (this.minSelector) {
|
|
305
|
+
const attribute = this.resolveSelectorAttribute(this.minSelector);
|
|
306
|
+
const info = this.createAggregateDescriptor("min", attribute);
|
|
307
|
+
if (!info)
|
|
308
|
+
throw this.missingDecorator("min", attribute);
|
|
309
|
+
return info;
|
|
310
|
+
}
|
|
311
|
+
if (this.sumSelector) {
|
|
312
|
+
const attribute = this.resolveSelectorAttribute(this.sumSelector);
|
|
313
|
+
const info = this.createAggregateDescriptor("sum", attribute);
|
|
314
|
+
if (!info)
|
|
315
|
+
throw this.missingDecorator("sum", attribute);
|
|
316
|
+
return info;
|
|
317
|
+
}
|
|
318
|
+
if (this.distinctSelector) {
|
|
319
|
+
const attribute = this.resolveSelectorAttribute(this.distinctSelector);
|
|
320
|
+
const info = this.createAggregateDescriptor("distinct", attribute);
|
|
321
|
+
if (!info)
|
|
322
|
+
throw this.missingDecorator("distinct", attribute);
|
|
323
|
+
return info;
|
|
324
|
+
}
|
|
325
|
+
return undefined;
|
|
326
|
+
}
|
|
327
|
+
createAggregateDescriptor(kind, attribute) {
|
|
328
|
+
if (!this.fromSelector)
|
|
329
|
+
return undefined;
|
|
330
|
+
const metas = (0, generator_1.findViewMetadata)(this.fromSelector, kind, attribute);
|
|
331
|
+
if (!metas.length)
|
|
332
|
+
return undefined;
|
|
333
|
+
const meta = metas[0];
|
|
334
|
+
const tableName = decorator_validation_1.Model.tableName(this.fromSelector);
|
|
335
|
+
const viewName = (0, generator_1.generateViewName)(tableName, meta.attribute, kind, meta);
|
|
336
|
+
const ddoc = meta.ddoc || (0, generator_1.generateDesignDocName)(tableName, viewName);
|
|
337
|
+
const options = {
|
|
338
|
+
reduce: meta.reduce !== undefined ? true : !meta.returnDocs,
|
|
339
|
+
};
|
|
340
|
+
if (kind === "distinct" || kind === "groupBy")
|
|
341
|
+
options.group = true;
|
|
342
|
+
return {
|
|
343
|
+
kind,
|
|
344
|
+
meta,
|
|
345
|
+
descriptor: {
|
|
346
|
+
ddoc,
|
|
347
|
+
view: viewName,
|
|
348
|
+
options,
|
|
349
|
+
},
|
|
350
|
+
};
|
|
351
|
+
}
|
|
352
|
+
createAggregateQuery(info) {
|
|
353
|
+
return {
|
|
354
|
+
selector: {},
|
|
355
|
+
aggregate: true,
|
|
356
|
+
aggregateInfo: info,
|
|
357
|
+
};
|
|
358
|
+
}
|
|
359
|
+
shouldUseManualAggregation() {
|
|
360
|
+
return !!this.whereCondition;
|
|
361
|
+
}
|
|
362
|
+
async executeAggregate(info, ctx) {
|
|
363
|
+
if (!this.isViewAggregate(info)) {
|
|
364
|
+
return this.handleAverage(info, ctx);
|
|
365
|
+
}
|
|
366
|
+
const couchAdapter = this.getCouchAdapter();
|
|
367
|
+
const viewInfo = info;
|
|
368
|
+
const response = await couchAdapter.view(viewInfo.descriptor.ddoc, viewInfo.descriptor.view, viewInfo.descriptor.options, ctx);
|
|
369
|
+
return this.processViewResponse(info, response);
|
|
370
|
+
}
|
|
371
|
+
async handleAverage(info, ctx) {
|
|
372
|
+
if (info.kind !== "avg")
|
|
373
|
+
throw new core_1.QueryError("Average descriptor is not valid");
|
|
374
|
+
const [sumDesc, countDesc] = [info.sumDescriptor, info.countDescriptor];
|
|
375
|
+
const couchAdapter = this.getCouchAdapter();
|
|
376
|
+
const [sumResponse, countResponse] = await Promise.all([
|
|
377
|
+
couchAdapter.view(sumDesc.ddoc, sumDesc.view, sumDesc.options, ctx),
|
|
378
|
+
couchAdapter.view(countDesc.ddoc, countDesc.view, countDesc.options, ctx),
|
|
379
|
+
]);
|
|
380
|
+
const sum = sumResponse.rows?.[0]?.value ?? 0;
|
|
381
|
+
const count = countResponse.rows?.[0]?.value ?? 0;
|
|
382
|
+
if (!count)
|
|
383
|
+
return 0;
|
|
384
|
+
return (sum / count);
|
|
385
|
+
}
|
|
386
|
+
executeManualAggregation(docs, info,
|
|
387
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
388
|
+
ctx) {
|
|
389
|
+
if (!this.fromSelector)
|
|
390
|
+
throw new core_1.QueryError("Manual aggregation requires a target model");
|
|
391
|
+
if (info.kind === "avg") {
|
|
392
|
+
return this.computeAverage(docs, info.attribute);
|
|
393
|
+
}
|
|
394
|
+
if (info.kind === "groupBy") {
|
|
395
|
+
return this.computeGroupBy(docs, info.meta.attribute);
|
|
396
|
+
}
|
|
397
|
+
const attribute = info.meta.attribute;
|
|
398
|
+
switch (info.kind) {
|
|
399
|
+
case "count": {
|
|
400
|
+
if (info.countDistinct) {
|
|
401
|
+
return this.computeDistinctCount(docs, attribute);
|
|
402
|
+
}
|
|
403
|
+
return this.computeCount(docs, attribute);
|
|
404
|
+
}
|
|
405
|
+
case "distinct":
|
|
406
|
+
if (info.countDistinct) {
|
|
407
|
+
return this.computeDistinctCount(docs, attribute);
|
|
408
|
+
}
|
|
409
|
+
return this.computeDistinctValues(docs, attribute);
|
|
410
|
+
case "sum":
|
|
411
|
+
return this.computeSum(docs, attribute);
|
|
412
|
+
case "min":
|
|
413
|
+
return this.computeMinMax(docs, attribute, "min");
|
|
414
|
+
case "max":
|
|
415
|
+
return this.computeMinMax(docs, attribute, "max");
|
|
416
|
+
default:
|
|
417
|
+
throw new core_1.QueryError(`Unsupported manual aggregation ${info.kind}`);
|
|
418
|
+
}
|
|
419
|
+
}
|
|
420
|
+
computeCount(docs, attribute) {
|
|
421
|
+
if (!attribute)
|
|
422
|
+
return docs.length;
|
|
423
|
+
const values = this.collectValues(docs, attribute);
|
|
424
|
+
return values.filter((value) => value !== undefined && value !== null)
|
|
425
|
+
.length;
|
|
426
|
+
}
|
|
427
|
+
computeDistinctCount(docs, attribute) {
|
|
428
|
+
const values = attribute
|
|
429
|
+
? this.collectValues(docs, attribute).filter((value) => value !== undefined && value !== null)
|
|
430
|
+
: docs;
|
|
431
|
+
const seen = new Set();
|
|
432
|
+
values.forEach((value) => seen.add(JSON.stringify(value)));
|
|
433
|
+
return seen.size;
|
|
434
|
+
}
|
|
435
|
+
computeDistinctValues(docs, attribute) {
|
|
436
|
+
if (!attribute)
|
|
437
|
+
return [];
|
|
438
|
+
const values = this.collectValues(docs, attribute);
|
|
439
|
+
const seen = new Set();
|
|
440
|
+
const unique = [];
|
|
441
|
+
values.forEach((value) => {
|
|
442
|
+
const key = JSON.stringify(value);
|
|
443
|
+
if (!seen.has(key)) {
|
|
444
|
+
seen.add(key);
|
|
445
|
+
unique.push(value);
|
|
446
|
+
}
|
|
447
|
+
});
|
|
448
|
+
return unique;
|
|
449
|
+
}
|
|
450
|
+
computeSum(docs, attribute) {
|
|
451
|
+
if (!attribute)
|
|
452
|
+
return docs.length;
|
|
453
|
+
const values = this.collectValues(docs, attribute).filter((value) => value !== undefined && value !== null);
|
|
454
|
+
const sum = values.reduce((acc, value) => acc + this.toNumericValue(value, attribute, "SUM operation"), 0);
|
|
455
|
+
return sum;
|
|
456
|
+
}
|
|
457
|
+
computeAverage(docs, attribute) {
|
|
458
|
+
if (!attribute)
|
|
459
|
+
return 0;
|
|
460
|
+
const values = this.collectValues(docs, attribute).filter((value) => value !== undefined && value !== null);
|
|
461
|
+
if (!values.length)
|
|
462
|
+
return 0;
|
|
463
|
+
const sum = values.reduce((acc, value) => acc + this.toNumericValue(value, attribute, "AVG operation"), 0);
|
|
464
|
+
return (sum / values.length);
|
|
465
|
+
}
|
|
466
|
+
computeMinMax(docs, attribute, mode) {
|
|
467
|
+
if (!attribute)
|
|
468
|
+
return null;
|
|
469
|
+
const values = this.collectValues(docs, attribute).filter((value) => value !== undefined && value !== null);
|
|
470
|
+
let currentValue = null;
|
|
471
|
+
let currentComparable = null;
|
|
472
|
+
for (const value of values) {
|
|
473
|
+
const normalized = this.normalizeComparable(value);
|
|
474
|
+
if (normalized === null)
|
|
475
|
+
continue;
|
|
476
|
+
if (currentComparable === null) {
|
|
477
|
+
currentComparable = normalized;
|
|
478
|
+
currentValue = value;
|
|
479
|
+
continue;
|
|
480
|
+
}
|
|
481
|
+
if ((mode === "min" && normalized < currentComparable) ||
|
|
482
|
+
(mode === "max" && normalized > currentComparable)) {
|
|
483
|
+
currentComparable = normalized;
|
|
484
|
+
currentValue = value;
|
|
485
|
+
}
|
|
486
|
+
}
|
|
487
|
+
return currentValue;
|
|
488
|
+
}
|
|
489
|
+
computeGroupBy(docs, attribute) {
|
|
490
|
+
const grouped = {};
|
|
491
|
+
const values = this.collectValues(docs, attribute);
|
|
492
|
+
docs.forEach((doc, index) => {
|
|
493
|
+
const key = this.groupKey(values[index]);
|
|
494
|
+
if (!grouped[key])
|
|
495
|
+
grouped[key] = [];
|
|
496
|
+
grouped[key].push(doc);
|
|
497
|
+
});
|
|
498
|
+
return grouped;
|
|
499
|
+
}
|
|
500
|
+
groupSelectResults(docs) {
|
|
501
|
+
if (!this.groupBySelectors?.length)
|
|
502
|
+
return {};
|
|
503
|
+
const attribute = this.resolveSelectorAttribute(this.groupBySelectors[0]);
|
|
504
|
+
if (!attribute)
|
|
505
|
+
return {};
|
|
506
|
+
const grouped = {};
|
|
507
|
+
docs.forEach((doc) => {
|
|
508
|
+
const key = this.groupKey(this.convertValueByAttribute(attribute, doc[attribute]));
|
|
509
|
+
if (!grouped[key])
|
|
510
|
+
grouped[key] = [];
|
|
511
|
+
grouped[key].push(doc);
|
|
512
|
+
});
|
|
513
|
+
return grouped;
|
|
514
|
+
}
|
|
515
|
+
collectValues(docs, attribute) {
|
|
516
|
+
return docs.map((doc) => {
|
|
517
|
+
if (!doc || typeof doc !== "object")
|
|
518
|
+
return undefined;
|
|
519
|
+
return this.convertValueByAttribute(attribute, doc[attribute]);
|
|
520
|
+
});
|
|
521
|
+
}
|
|
522
|
+
convertValueByAttribute(attribute, value) {
|
|
523
|
+
if (!this.fromSelector)
|
|
524
|
+
return value;
|
|
525
|
+
const attributeType = this.getAttributeType(attribute);
|
|
526
|
+
if (attributeType === "date") {
|
|
527
|
+
if (value instanceof Date)
|
|
528
|
+
return value;
|
|
529
|
+
const parsed = new Date(value);
|
|
530
|
+
if (!Number.isNaN(parsed.getTime()))
|
|
531
|
+
return parsed;
|
|
532
|
+
}
|
|
533
|
+
if (typeof value === "string" && attribute.toLowerCase().includes("date")) {
|
|
534
|
+
const parsed = new Date(value);
|
|
535
|
+
if (!Number.isNaN(parsed.getTime()))
|
|
536
|
+
return parsed;
|
|
537
|
+
}
|
|
538
|
+
return value;
|
|
539
|
+
}
|
|
540
|
+
getAttributeType(attribute) {
|
|
541
|
+
if (!attribute || !this.fromSelector)
|
|
542
|
+
return undefined;
|
|
543
|
+
if (this.attributeTypeCache.has(attribute)) {
|
|
544
|
+
return this.attributeTypeCache.get(attribute);
|
|
545
|
+
}
|
|
546
|
+
const metaType = decoration_1.Metadata.type(this.fromSelector, attribute) ??
|
|
547
|
+
decoration_1.Metadata.getPropDesignTypes?.(this.fromSelector, attribute)
|
|
548
|
+
?.designType;
|
|
549
|
+
const normalized = this.normalizeMetaType(metaType);
|
|
550
|
+
this.attributeTypeCache.set(attribute, normalized);
|
|
551
|
+
return normalized;
|
|
552
|
+
}
|
|
553
|
+
normalizeMetaType(metaType) {
|
|
554
|
+
if (!metaType)
|
|
555
|
+
return undefined;
|
|
556
|
+
if (typeof metaType === "string")
|
|
557
|
+
return metaType.toLowerCase();
|
|
558
|
+
if (typeof metaType === "function" && metaType.name)
|
|
559
|
+
return metaType.name.toLowerCase();
|
|
560
|
+
return undefined;
|
|
561
|
+
}
|
|
562
|
+
normalizeComparable(value) {
|
|
563
|
+
if (typeof value === "number")
|
|
564
|
+
return value;
|
|
565
|
+
if (typeof value === "bigint")
|
|
566
|
+
return Number(value);
|
|
567
|
+
if (value instanceof Date)
|
|
568
|
+
return value.getTime();
|
|
569
|
+
if (typeof value === "string" && !isNaN(Number(value)))
|
|
570
|
+
return Number(value);
|
|
571
|
+
return null;
|
|
572
|
+
}
|
|
573
|
+
groupKey(value) {
|
|
574
|
+
if (value === undefined)
|
|
575
|
+
return "undefined";
|
|
576
|
+
if (value === null)
|
|
577
|
+
return "null";
|
|
578
|
+
if (typeof value === "symbol")
|
|
579
|
+
return value.toString();
|
|
580
|
+
if (typeof value === "object") {
|
|
581
|
+
try {
|
|
582
|
+
return JSON.stringify(value);
|
|
583
|
+
}
|
|
584
|
+
catch {
|
|
585
|
+
return String(value);
|
|
586
|
+
}
|
|
587
|
+
}
|
|
588
|
+
return String(value);
|
|
589
|
+
}
|
|
590
|
+
toNumericValue(value, field, context) {
|
|
591
|
+
if (typeof value === "number")
|
|
592
|
+
return value;
|
|
593
|
+
if (typeof value === "bigint")
|
|
594
|
+
return Number(value);
|
|
595
|
+
if (value instanceof Date)
|
|
596
|
+
return value.getTime();
|
|
597
|
+
if (typeof value === "string" && !isNaN(Number(value)))
|
|
598
|
+
return Number(value);
|
|
599
|
+
throw new core_1.QueryError(`${context} on "${field}" requires numeric values, but got ${typeof value}`);
|
|
600
|
+
}
|
|
601
|
+
convertAggregateValue(attribute, value) {
|
|
602
|
+
if (!attribute)
|
|
603
|
+
return value;
|
|
604
|
+
return this.convertValueByAttribute(attribute, value);
|
|
605
|
+
}
|
|
606
|
+
resolveSelectorAttribute(selector) {
|
|
607
|
+
if (selector == null)
|
|
608
|
+
return undefined;
|
|
609
|
+
return String(selector);
|
|
610
|
+
}
|
|
611
|
+
missingDecorator(kind, attribute) {
|
|
612
|
+
const decorator = this.decoratorForKind(kind);
|
|
613
|
+
const table = this.fromSelector
|
|
614
|
+
? decorator_validation_1.Model.tableName(this.fromSelector)
|
|
615
|
+
: "<unknown table>";
|
|
616
|
+
const attributeDesc = attribute ? ` on "${attribute}"` : "";
|
|
617
|
+
return new core_1.UnsupportedError(`${decorator} decorator is required for CouchDB ${kind} aggregation${attributeDesc} on table "${table}".`);
|
|
618
|
+
}
|
|
619
|
+
decoratorForKind(kind) {
|
|
620
|
+
const map = {
|
|
621
|
+
count: "@count",
|
|
622
|
+
sum: "@sum",
|
|
623
|
+
min: "@min",
|
|
624
|
+
max: "@max",
|
|
625
|
+
distinct: "@distinct",
|
|
626
|
+
groupBy: "@groupBy",
|
|
627
|
+
view: "@view",
|
|
628
|
+
avg: "@avg",
|
|
629
|
+
};
|
|
630
|
+
return map[kind] || `@${kind}`;
|
|
631
|
+
}
|
|
632
|
+
processViewResponse(info, response) {
|
|
633
|
+
if (info.kind === "avg")
|
|
634
|
+
throw new core_1.QueryError("Average results should be handled before processing rows");
|
|
635
|
+
const rows = response.rows || [];
|
|
636
|
+
const viewInfo = info;
|
|
637
|
+
const meta = viewInfo.meta;
|
|
638
|
+
if (viewInfo.countDistinct) {
|
|
639
|
+
return (rows.length || 0);
|
|
640
|
+
}
|
|
641
|
+
if (viewInfo.kind === "distinct" || viewInfo.kind === "groupBy") {
|
|
642
|
+
return rows.map((row) => this.convertAggregateValue(viewInfo.meta.attribute, row.key ?? row.value));
|
|
643
|
+
}
|
|
644
|
+
if (meta.returnDocs) {
|
|
645
|
+
return rows.map((row) => row.value ?? row.doc ?? row);
|
|
646
|
+
}
|
|
647
|
+
if (!rows.length) {
|
|
648
|
+
return (viewInfo.kind === "count" ? 0 : null);
|
|
649
|
+
}
|
|
650
|
+
return this.convertAggregateValue(viewInfo.meta.attribute, rows[0].value ?? rows[0].key ?? null);
|
|
651
|
+
}
|
|
652
|
+
isViewAggregate(info) {
|
|
653
|
+
return info.kind !== "avg";
|
|
654
|
+
}
|
|
655
|
+
getCouchAdapter() {
|
|
656
|
+
return this.adapter;
|
|
657
|
+
}
|
|
236
658
|
parseCondition(condition) {
|
|
237
659
|
/**
|
|
238
660
|
* @description Merges two selectors with a logical operator
|
|
@@ -248,6 +670,17 @@ class CouchDBStatement extends core_1.Statement {
|
|
|
248
670
|
return result;
|
|
249
671
|
}
|
|
250
672
|
const { attr1, operator, comparison } = condition;
|
|
673
|
+
if (operator === core_1.Operator.BETWEEN) {
|
|
674
|
+
const attr = attr1;
|
|
675
|
+
if (!Array.isArray(comparison) || comparison.length !== 2)
|
|
676
|
+
throw new core_1.QueryError("BETWEEN operator requires [min, max] comparison");
|
|
677
|
+
const [min, max] = comparison;
|
|
678
|
+
const opBetween = {};
|
|
679
|
+
opBetween[attr] = {};
|
|
680
|
+
opBetween[attr][(0, translate_1.translateOperators)(core_1.Operator.BIGGER_EQ)] = min;
|
|
681
|
+
opBetween[attr][(0, translate_1.translateOperators)(core_1.Operator.SMALLER_EQ)] = max;
|
|
682
|
+
return { selector: opBetween };
|
|
683
|
+
}
|
|
251
684
|
let op = {};
|
|
252
685
|
if ([core_1.GroupOperator.AND, core_1.GroupOperator.OR, core_1.Operator.NOT].indexOf(operator) === -1) {
|
|
253
686
|
op[attr1] = {};
|
package/lib/query/Statement.d.ts
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import { Condition, Statement } from "@decaf-ts/core";
|
|
1
|
+
import { Adapter, Condition, Statement } from "@decaf-ts/core";
|
|
2
2
|
import { MangoQuery } from "../types";
|
|
3
3
|
import { Model } from "@decaf-ts/decorator-validation";
|
|
4
4
|
import type { Context } from "@decaf-ts/db-decorators";
|
|
5
|
-
import { Adapter } from "@decaf-ts/core";
|
|
6
5
|
/**
|
|
7
6
|
* @description Statement builder for CouchDB Mango queries
|
|
8
7
|
* @summary Provides a fluent interface for building CouchDB Mango queries with type safety
|
|
@@ -24,6 +23,8 @@ import { Adapter } from "@decaf-ts/core";
|
|
|
24
23
|
* .execute();
|
|
25
24
|
*/
|
|
26
25
|
export declare class CouchDBStatement<M extends Model, A extends Adapter<any, any, MangoQuery, any>, R> extends Statement<M, A, R, MangoQuery> {
|
|
26
|
+
private manualAggregation?;
|
|
27
|
+
private attributeTypeCache;
|
|
27
28
|
constructor(adapter: A);
|
|
28
29
|
/**
|
|
29
30
|
* @description Builds a CouchDB Mango query from the statement
|
|
@@ -134,5 +135,34 @@ export declare class CouchDBStatement<M extends Model, A extends Adapter<any, an
|
|
|
134
135
|
*
|
|
135
136
|
* Statement-->>Statement: Return query with selector
|
|
136
137
|
*/
|
|
138
|
+
private buildAggregateInfo;
|
|
139
|
+
private createAggregateDescriptor;
|
|
140
|
+
private createAggregateQuery;
|
|
141
|
+
private shouldUseManualAggregation;
|
|
142
|
+
private executeAggregate;
|
|
143
|
+
private handleAverage;
|
|
144
|
+
private executeManualAggregation;
|
|
145
|
+
private computeCount;
|
|
146
|
+
private computeDistinctCount;
|
|
147
|
+
private computeDistinctValues;
|
|
148
|
+
private computeSum;
|
|
149
|
+
private computeAverage;
|
|
150
|
+
private computeMinMax;
|
|
151
|
+
private computeGroupBy;
|
|
152
|
+
private groupSelectResults;
|
|
153
|
+
private collectValues;
|
|
154
|
+
private convertValueByAttribute;
|
|
155
|
+
private getAttributeType;
|
|
156
|
+
private normalizeMetaType;
|
|
157
|
+
private normalizeComparable;
|
|
158
|
+
private groupKey;
|
|
159
|
+
private toNumericValue;
|
|
160
|
+
private convertAggregateValue;
|
|
161
|
+
private resolveSelectorAttribute;
|
|
162
|
+
private missingDecorator;
|
|
163
|
+
private decoratorForKind;
|
|
164
|
+
private processViewResponse;
|
|
165
|
+
private isViewAggregate;
|
|
166
|
+
private getCouchAdapter;
|
|
137
167
|
protected parseCondition(condition: Condition<M>): MangoQuery;
|
|
138
168
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Statement.js","sourceRoot":"","sources":["../../src/query/Statement.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Statement.js","sourceRoot":"","sources":["../../src/query/Statement.ts"],"names":[],"mappings":";;;AAAA,yCAawB;AAOxB,yEAAuD;AACvD,+CAAiD;AACjD,kDAA2C;AAC3C,+CAIqB;AACrB,2DAAiD;AAEjD,qDAAgD;AAChD,wDAI4B;AAwB5B;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAa,gBAIX,SAAQ,gBAA8B;IAItC,YAAY,OAAU;QACpB,KAAK,CAAC,OAAO,CAAC,CAAC;QAHT,uBAAkB,GAAoC,IAAI,GAAG,EAAE,CAAC;IAIxE,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAuDG;IACO,KAAK;QACb,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrC,IAAI,CAAC,iBAAiB,GAAG,SAAS,CAAC;QACnC,MAAM,aAAa,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAChD,IAAI,aAAa,EAAE,CAAC;YAClB,IAAI,IAAI,CAAC,0BAA0B,EAAE,EAAE,CAAC;gBACtC,IAAI,CAAC,iBAAiB,GAAG,aAAa,CAAC;YACzC,CAAC;iBAAM,CAAC;gBACN,OAAO,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC,CAAC;YAClD,CAAC;QACH,CAAC;QACD,MAAM,SAAS,GAAkB,EAAE,CAAC;QACpC,SAAS,CAAC,uBAAW,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;QAClC,SAAS,CAAC,uBAAW,CAAC,KAAK,CAAC,GAAG,4BAAK,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAClE,MAAM,KAAK,GAAe,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;QAClD,IAAI,IAAI,CAAC,cAAc;YAAE,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,cAA0B,CAAC;QAExE,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,MAAM,SAAS,GAAkB,IAAI,CAAC,cAAc,CAClD,gBAAS,CAAC,GAAG,CACX,IAAI,CAAC,cAAc,EACnB,gBAAS,CAAC,SAAS,CAAI,uBAAW,CAAC,KAAgB,CAAC,CAAC,EAAE,CACrD,KAAK,CAAC,QAAQ,CAAC,uBAAW,CAAC,KAAK,CAAC,CAClC,CACF,CACF,CAAC,QAAQ,CAAC;YACX,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAoB,CAAC;YAC/D,IACE,YAAY,CAAC,MAAM,KAAK,CAAC;gBACzB,MAAM,CAAC,MAAM,CAAC,gCAAoB,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;gBAEnE,QAAQ,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;oBACxB,KAAK,gCAAoB,CAAC,GAAG;wBAC3B,SAAS,CAAC,gCAAoB,CAAC,GAAG,CAAC,GAAG;4BACpC,GAAG,MAAM,CAAC,MAAM,CACd,SAAS,CAAC,gCAAoB,CAAC,GAAG,CAAkB,CACrD,CAAC,MAAM,CAAC,CAAC,KAAsB,EAAE,GAAQ,EAAE,EAAE;gCAC5C,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gCAC9B,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;oCACnB,MAAM,IAAI,KAAK,CACb,gDAAgD,CACjD,CAAC;gCACJ,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;gCAClB,IAAI,CAAC,KAAK,gCAAoB,CAAC,GAAG;oCAChC,KAAK,CAAC,IAAI,CAAC,GAAI,GAAG,CAAC,CAAC,CAAW,CAAC,CAAC;;oCAC9B,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gCACrB,OAAO,KAAK,CAAC;4BACf,CAAC,EAAE,EAAE,CAAC;yBACP,CAAC;wBACF,KAAK,CAAC,QAAQ,GAAG,SAAS,CAAC;wBAC3B,MAAM;oBACR,KAAK,gCAAoB,CAAC,EAAE,CAAC,CAAC,CAAC;wBAC7B,MAAM,CAAC,GAAqB,EAAE,CAAC;wBAC/B,CAAC,CAAC,gCAAoB,CAAC,GAAG,CAAC,GAAG;4BAC5B,SAAS;4BACT,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE;gCACnD,MAAM,MAAM,GAAqB,EAAE,CAAC;gCACpC,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;gCAClB,OAAO,MAAM,CAAC;4BAChB,CAAC,CAAC;yBACH,CAAC;wBACF,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC;wBACnB,MAAM;oBACR,CAAC;oBACD;wBACE,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;gBACjD,CAAC;iBACE,CAAC;gBACJ,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE;oBAC/C,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC;wBACrB,GAAG,CAAC,IAAI,CACN,KAAK,GAAG,2CAA2C,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,GAAG,EAAE,CACnF,CAAC;oBACJ,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;gBAC5B,CAAC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,IAAI,IAAI,CAAC,gBAAgB,EAAE,MAAM,EAAE,CAAC;YAClC,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC;YAC9B,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,IAAK,EAAoB,CAAC;YACzD,KAAK,MAAM,CAAC,WAAW,EAAE,SAAS,CAAC,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBAC7D,MAAM,QAAQ,GAAG,WAAqB,CAAC;gBACvC,MAAM,GAAG,GAAmC,EAAE,CAAC;gBAC/C,GAAG,CAAC,QAAQ,CAAC,GAAG,SAA2B,CAAC;gBAC3C,KAAK,CAAC,IAAyC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAC3D,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAC9B,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,EAAmB,CAAC;oBAC9C,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAmB,CAAC,2BAAe,CAAC,MAAM,CAAC;wBACjE,IAAI,CAAC;gBACT,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,kBAAkB,GAAG,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC;QACpD,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC;QACnC,CAAC;aAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC/B,GAAG,CAAC,IAAI,CACN,6DAA6D,6BAAiB,EAAE,CACjF,CAAC;YACF,KAAK,CAAC,KAAK,GAAG,6BAAiB,CAAC;QAClC,CAAC;QAED,IAAI,IAAI,CAAC,cAAc;YAAE,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC;QAE1D,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;;;;;OAOG;IACO,aAAa,CACrB,CAAM,EACN,MAAe,EACf,YAA6C,EAC7C,GAAY;QAEZ,IAAI,CAAC,CAAC,uBAAW,CAAC,EAAE,CAAC,EAAE,CAAC;YACtB,MAAM,CAAC,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,uBAAW,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,uBAAW,CAAC,SAAS,CAAC,CAAC;YAEtE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC7B,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CACxB,CAAC,EACD,IAAI,CAAC,YAAY,EACjB,eAAQ,CAAC,UAAU,CAAC,YAAY,EAAE,EAAE,CAAC,EACrC,SAAS,EACT,GAAG,CACJ,CAAC;QACJ,CAAC;QACD,OAAO,CAAC,CAAC;IACX,CAAC;IAED;;;;;;OAMG;IACM,KAAK,CAAC,GAAG,CAAI,QAAoB,EAAE,GAAG,IAAW;QACxD,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QAC5C,MAAM,UAAU,GAAI,QAAgB,EAAE,aAAa,CAAC;QACpD,IAAK,QAAgB,EAAE,SAAS,IAAI,UAAU,EAAE,CAAC;YAC/C,OAAO,IAAI,CAAC,gBAAgB,CAAI,UAAU,EAAE,GAAG,CAAC,CAAC;QACnD,CAAC;QACD,MAAM,OAAO,GAAU,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;QAEnE,MAAM,MAAM,GAAG,4BAAK,CAAC,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC3C,MAAM,IAAI,GAAG,qBAAQ,CAAC,GAAG,CACvB,IAAI,CAAC,YAAY,EACjB,qBAAQ,CAAC,GAAG,CAAC,sBAAM,CAAC,EAAE,EAAE,MAAgB,CAAC,CAC1C,EAAE,IAAI,CAAC;QACR,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAClC,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,CAAC,CACzC,CAAC;QACF,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC3B,MAAM,YAAY,GAAG,IAAI,CAAC,wBAAwB,CAChD,SAAS,EACT,IAAI,CAAC,iBAAiB,EACtB,GAAG,CACJ,CAAC;YACF,IAAI,CAAC,iBAAiB,GAAG,SAAS,CAAC;YACnC,OAAO,YAAY,CAAC;QACtB,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,gBAAgB,EAAE,MAAM,EAAE,CAAC;YAC1D,OAAO,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAM,CAAC;QACjD,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,cAAc;YAAE,OAAO,SAAc,CAAC;QAChD,OAAO,OAAY,CAAC;IACtB,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAkCG;IACK,kBAAkB;QACxB,IAAI,CAAC,IAAI,CAAC,YAAY;YAAE,OAAO,SAAS,CAAC;QAEzC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAC3C,MAAM,OAAO,GAAG,IAAI,CAAC,yBAAyB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;YACjE,IAAI,CAAC,OAAO;gBAAE,MAAM,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;YAC5D,MAAM,SAAS,GAAG,IAAI,CAAC,yBAAyB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;YACrE,IAAI,CAAC,SAAS;gBAAE,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;YAChE,OAAO;gBACL,IAAI,EAAE,KAAK;gBACX,SAAS;gBACT,aAAa,EAAE,OAAO,CAAC,UAAU;gBACjC,eAAe,EAAE,SAAS,CAAC,UAAU;aACtC,CAAC;QACJ,CAAC;QAED,IAAI,OAAO,IAAI,CAAC,qBAAqB,KAAK,WAAW,EAAE,CAAC;YACtD,MAAM,SAAS,GAAG,IAAI,CAAC,wBAAwB,CAC7C,IAAI,CAAC,qBAAqB,CAC3B,CAAC;YACF,MAAM,IAAI,GAAG,IAAI,CAAC,yBAAyB,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;YACnE,IAAI,CAAC,IAAI;gBAAE,MAAM,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;YAC9D,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;YAC1B,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,OAAO,IAAI,CAAC,aAAa,KAAK,WAAW,EAAE,CAAC;YAC9C,MAAM,SAAS,GAAG,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YACpE,MAAM,IAAI,GAAG,IAAI,CAAC,yBAAyB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;YAChE,IAAI,CAAC,IAAI;gBAAE,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;YAC3D,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,MAAM,SAAS,GAAG,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAClE,MAAM,IAAI,GAAG,IAAI,CAAC,yBAAyB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;YAC9D,IAAI,CAAC,IAAI;gBAAE,MAAM,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;YACzD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,MAAM,SAAS,GAAG,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAClE,MAAM,IAAI,GAAG,IAAI,CAAC,yBAAyB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;YAC9D,IAAI,CAAC,IAAI;gBAAE,MAAM,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;YACzD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,MAAM,SAAS,GAAG,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAClE,MAAM,IAAI,GAAG,IAAI,CAAC,yBAAyB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;YAC9D,IAAI,CAAC,IAAI;gBAAE,MAAM,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;YACzD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC1B,MAAM,SAAS,GAAG,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;YACvE,MAAM,IAAI,GAAG,IAAI,CAAC,yBAAyB,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;YACnE,IAAI,CAAC,IAAI;gBAAE,MAAM,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;YAC9D,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAEO,yBAAyB,CAC/B,IAAc,EACd,SAAkB;QAElB,IAAI,CAAC,IAAI,CAAC,YAAY;YAAE,OAAO,SAAS,CAAC;QACzC,MAAM,KAAK,GAAG,IAAA,4BAAgB,EAAC,IAAI,CAAC,YAAY,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;QACnE,IAAI,CAAC,KAAK,CAAC,MAAM;YAAE,OAAO,SAAS,CAAC;QACpC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACtB,MAAM,SAAS,GAAG,4BAAK,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACrD,MAAM,QAAQ,GAAG,IAAA,4BAAgB,EAAC,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QACzE,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,IAAA,iCAAqB,EAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QACrE,MAAM,OAAO,GAAwB;YACnC,MAAM,EAAE,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU;SAC5D,CAAC;QACF,IAAI,IAAI,KAAK,UAAU,IAAI,IAAI,KAAK,SAAS;YAAE,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;QACpE,OAAO;YACL,IAAI;YACJ,IAAI;YACJ,UAAU,EAAE;gBACV,IAAI;gBACJ,IAAI,EAAE,QAAQ;gBACd,OAAO;aACR;SACF,CAAC;IACJ,CAAC;IAEO,oBAAoB,CAC1B,IAA0B;QAE1B,OAAO;YACL,QAAQ,EAAE,EAAE;YACZ,SAAS,EAAE,IAAI;YACf,aAAa,EAAE,IAAI;SACqD,CAAC;IAC7E,CAAC;IAEO,0BAA0B;QAChC,OAAO,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC;IAC/B,CAAC;IAEO,KAAK,CAAC,gBAAgB,CAC5B,IAA0B,EAC1B,GAAiB;QAEjB,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;YAChC,OAAO,IAAI,CAAC,aAAa,CAAI,IAAI,EAAE,GAAG,CAAC,CAAC;QAC1C,CAAC;QACD,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QAC5C,MAAM,QAAQ,GAAG,IAAyD,CAAC;QAC3E,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,IAAI,CACtC,QAAQ,CAAC,UAAU,CAAC,IAAI,EACxB,QAAQ,CAAC,UAAU,CAAC,IAAI,EACxB,QAAQ,CAAC,UAAU,CAAC,OAAO,EAC3B,GAAG,CACJ,CAAC;QACF,OAAO,IAAI,CAAC,mBAAmB,CAAI,IAAI,EAAE,QAAQ,CAAC,CAAC;IACrD,CAAC;IAEO,KAAK,CAAC,aAAa,CACzB,IAA0B,EAC1B,GAAiB;QAEjB,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK;YACrB,MAAM,IAAI,iBAAU,CAAC,iCAAiC,CAAC,CAAC;QAC1D,MAAM,CAAC,OAAO,EAAE,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;QACxE,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QAC5C,MAAM,CAAC,WAAW,EAAE,aAAa,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YACrD,YAAY,CAAC,IAAI,CACf,OAAO,CAAC,IAAI,EACZ,OAAO,CAAC,IAAI,EACZ,OAAO,CAAC,OAAO,EACf,GAAG,CACJ;YACD,YAAY,CAAC,IAAI,CACf,SAAS,CAAC,IAAI,EACd,SAAS,CAAC,IAAI,EACd,SAAS,CAAC,OAAO,EACjB,GAAG,CACJ;SACF,CAAC,CAAC;QACH,MAAM,GAAG,GAAG,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC;QAC9C,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC;QAClD,IAAI,CAAC,KAAK;YAAE,OAAO,CAAiB,CAAC;QACrC,OAAO,CAAC,GAAG,GAAG,KAAK,CAAiB,CAAC;IACvC,CAAC;IAEO,wBAAwB,CAC9B,IAAW,EACX,IAA0B;IAC1B,6DAA6D;IAC7D,GAAiB;QAEjB,IAAI,CAAC,IAAI,CAAC,YAAY;YACpB,MAAM,IAAI,iBAAU,CAAC,4CAA4C,CAAC,CAAC;QACrE,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;YACxB,OAAO,IAAI,CAAC,cAAc,CAAI,IAAI,EAAE,IAAI,CAAC,SAAS,CAAM,CAAC;QAC3D,CAAC;QAED,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC5B,OAAO,IAAI,CAAC,cAAc,CAAI,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAM,CAAC;QAChE,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;QACtC,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;YAClB,KAAK,OAAO,CAAC,CAAC,CAAC;gBACb,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;oBACvB,OAAO,IAAI,CAAC,oBAAoB,CAAI,IAAI,EAAE,SAAS,CAAM,CAAC;gBAC5D,CAAC;gBACD,OAAO,IAAI,CAAC,YAAY,CAAI,IAAI,EAAE,SAAS,CAAM,CAAC;YACpD,CAAC;YACD,KAAK,UAAU;gBACb,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;oBACvB,OAAO,IAAI,CAAC,oBAAoB,CAAI,IAAI,EAAE,SAAS,CAAM,CAAC;gBAC5D,CAAC;gBACD,OAAO,IAAI,CAAC,qBAAqB,CAAI,IAAI,EAAE,SAAS,CAAM,CAAC;YAC7D,KAAK,KAAK;gBACR,OAAO,IAAI,CAAC,UAAU,CAAI,IAAI,EAAE,SAAS,CAAM,CAAC;YAClD,KAAK,KAAK;gBACR,OAAO,IAAI,CAAC,aAAa,CAAI,IAAI,EAAE,SAAS,EAAE,KAAK,CAAM,CAAC;YAC5D,KAAK,KAAK;gBACR,OAAO,IAAI,CAAC,aAAa,CAAI,IAAI,EAAE,SAAS,EAAE,KAAK,CAAM,CAAC;YAC5D;gBACE,MAAM,IAAI,iBAAU,CAAC,kCAAkC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QACxE,CAAC;IACH,CAAC;IAEO,YAAY,CAAI,IAAW,EAAE,SAAkB;QACrD,IAAI,CAAC,SAAS;YAAE,OAAO,IAAI,CAAC,MAAsB,CAAC;QACnD,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QACnD,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC;aACnE,MAAW,CAAC;IACjB,CAAC;IAEO,oBAAoB,CAAI,IAAW,EAAE,SAAkB;QAC7D,MAAM,MAAM,GAAG,SAAS;YACtB,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,MAAM,CACxC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,CACjD;YACH,CAAC,CAAC,IAAI,CAAC;QACT,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;QAC/B,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC3D,OAAO,IAAI,CAAC,IAAoB,CAAC;IACnC,CAAC;IAEO,qBAAqB,CAAI,IAAW,EAAE,SAAkB;QAC9D,IAAI,CAAC,SAAS;YAAE,OAAO,EAAkB,CAAC;QAC1C,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QACnD,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;QAC/B,MAAM,MAAM,GAAU,EAAE,CAAC;QACzB,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YACvB,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YAClC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBACnB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBACd,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACrB,CAAC;QACH,CAAC,CAAC,CAAC;QACH,OAAO,MAAsB,CAAC;IAChC,CAAC;IAEO,UAAU,CAAI,IAAW,EAAE,SAAkB;QACnD,IAAI,CAAC,SAAS;YAAE,OAAO,IAAI,CAAC,MAAsB,CAAC;QACnD,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,MAAM,CACvD,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,CACjD,CAAC;QACF,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CACvB,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CACb,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,SAAS,EAAE,eAAe,CAAC,EAC9D,CAAC,CACF,CAAC;QACF,OAAO,GAAmB,CAAC;IAC7B,CAAC;IAEO,cAAc,CAAI,IAAW,EAAE,SAAkB;QACvD,IAAI,CAAC,SAAS;YAAE,OAAO,CAAiB,CAAC;QACzC,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,MAAM,CACvD,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,CACjD,CAAC;QACF,IAAI,CAAC,MAAM,CAAC,MAAM;YAAE,OAAO,CAAiB,CAAC;QAC7C,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CACvB,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CACb,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,SAAS,EAAE,eAAe,CAAC,EAC9D,CAAC,CACF,CAAC;QACF,OAAO,CAAC,GAAG,GAAG,MAAM,CAAC,MAAM,CAAiB,CAAC;IAC/C,CAAC;IAEO,aAAa,CACnB,IAAW,EACX,SAA6B,EAC7B,IAAmB;QAEnB,IAAI,CAAC,SAAS;YAAE,OAAO,IAAoB,CAAC;QAC5C,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,MAAM,CACvD,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,CACjD,CAAC;QACF,IAAI,YAAY,GAAQ,IAAI,CAAC;QAC7B,IAAI,iBAAiB,GAAkB,IAAI,CAAC;QAC5C,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,MAAM,UAAU,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;YACnD,IAAI,UAAU,KAAK,IAAI;gBAAE,SAAS;YAClC,IAAI,iBAAiB,KAAK,IAAI,EAAE,CAAC;gBAC/B,iBAAiB,GAAG,UAAU,CAAC;gBAC/B,YAAY,GAAG,KAAK,CAAC;gBACrB,SAAS;YACX,CAAC;YACD,IACE,CAAC,IAAI,KAAK,KAAK,IAAI,UAAU,GAAG,iBAAiB,CAAC;gBAClD,CAAC,IAAI,KAAK,KAAK,IAAI,UAAU,GAAG,iBAAiB,CAAC,EAClD,CAAC;gBACD,iBAAiB,GAAG,UAAU,CAAC;gBAC/B,YAAY,GAAG,KAAK,CAAC;YACvB,CAAC;QACH,CAAC;QACD,OAAO,YAA4B,CAAC;IACtC,CAAC;IAEO,cAAc,CAAI,IAAW,EAAE,SAAiB;QACtD,MAAM,OAAO,GAA0B,EAAE,CAAC;QAC1C,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QACnD,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;YAC1B,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YACzC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;gBAAE,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;YACrC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACzB,CAAC,CAAC,CAAC;QACH,OAAO,OAAuB,CAAC;IACjC,CAAC;IAEO,kBAAkB,CAAC,IAAW;QACpC,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,MAAM;YAAE,OAAO,EAAE,CAAC;QAC9C,MAAM,SAAS,GAAG,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1E,IAAI,CAAC,SAAS;YAAE,OAAO,EAAE,CAAC;QAC1B,MAAM,OAAO,GAA0B,EAAE,CAAC;QAC1C,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;YACnB,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CACvB,IAAI,CAAC,uBAAuB,CAAC,SAAS,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC,CACxD,CAAC;YACF,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;gBAAE,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;YACrC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACzB,CAAC,CAAC,CAAC;QACH,OAAO,OAAO,CAAC;IACjB,CAAC;IAEO,aAAa,CAAC,IAAW,EAAE,SAAiB;QAClD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;YACtB,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ;gBAAE,OAAO,SAAS,CAAC;YACtD,OAAO,IAAI,CAAC,uBAAuB,CAAC,SAAS,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;QACjE,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,uBAAuB,CAAC,SAAiB,EAAE,KAAU;QAC3D,IAAI,CAAC,IAAI,CAAC,YAAY;YAAE,OAAO,KAAK,CAAC;QACrC,MAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;QACvD,IAAI,aAAa,KAAK,MAAM,EAAE,CAAC;YAC7B,IAAI,KAAK,YAAY,IAAI;gBAAE,OAAO,KAAK,CAAC;YACxC,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;YAC/B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBAAE,OAAO,MAAM,CAAC;QACrD,CAAC;QACD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,SAAS,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YAC1E,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;YAC/B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBAAE,OAAO,MAAM,CAAC;QACrD,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,gBAAgB,CAAC,SAAkB;QACzC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,YAAY;YAAE,OAAO,SAAS,CAAC;QACvD,IAAI,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YAC3C,OAAO,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAChD,CAAC;QACD,MAAM,QAAQ,GACZ,qBAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,SAAgB,CAAC;YACjD,qBAAgB,CAAC,kBAAkB,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC;gBAClE,EAAE,UAAU,CAAC;QACjB,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;QACpD,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;QACnD,OAAO,UAAU,CAAC;IACpB,CAAC;IAEO,iBAAiB,CAAC,QAAa;QACrC,IAAI,CAAC,QAAQ;YAAE,OAAO,SAAS,CAAC;QAChC,IAAI,OAAO,QAAQ,KAAK,QAAQ;YAAE,OAAO,QAAQ,CAAC,WAAW,EAAE,CAAC;QAChE,IAAI,OAAO,QAAQ,KAAK,UAAU,IAAI,QAAQ,CAAC,IAAI;YACjD,OAAO,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QACrC,OAAO,SAAS,CAAC;IACnB,CAAC;IAEO,mBAAmB,CAAC,KAAU;QACpC,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,OAAO,KAAK,CAAC;QAC5C,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;QACpD,IAAI,KAAK,YAAY,IAAI;YAAE,OAAO,KAAK,CAAC,OAAO,EAAE,CAAC;QAClD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACpD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,QAAQ,CAAC,KAAU;QACzB,IAAI,KAAK,KAAK,SAAS;YAAE,OAAO,WAAW,CAAC;QAC5C,IAAI,KAAK,KAAK,IAAI;YAAE,OAAO,MAAM,CAAC;QAClC,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC;QACvD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,IAAI,CAAC;gBACH,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YAC/B,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;YACvB,CAAC;QACH,CAAC;QACD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IAEO,cAAc,CAAC,KAAU,EAAE,KAAa,EAAE,OAAe;QAC/D,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,OAAO,KAAK,CAAC;QAC5C,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;QACpD,IAAI,KAAK,YAAY,IAAI;YAAE,OAAO,KAAK,CAAC,OAAO,EAAE,CAAC;QAClD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACpD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;QACvB,MAAM,IAAI,iBAAU,CAClB,GAAG,OAAO,QAAQ,KAAK,sCAAsC,OAAO,KAAK,EAAE,CAC5E,CAAC;IACJ,CAAC;IAEO,qBAAqB,CAC3B,SAA6B,EAC7B,KAAU;QAEV,IAAI,CAAC,SAAS;YAAE,OAAO,KAAK,CAAC;QAC7B,OAAO,IAAI,CAAC,uBAAuB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IACxD,CAAC;IAEO,wBAAwB,CAC9B,QAAmC;QAEnC,IAAI,QAAQ,IAAI,IAAI;YAAE,OAAO,SAAS,CAAC;QACvC,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC1B,CAAC;IAEO,gBAAgB,CACtB,IAAsB,EACtB,SAAkB;QAElB,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;QAC9C,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY;YAC7B,CAAC,CAAC,4BAAK,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC;YACpC,CAAC,CAAC,iBAAiB,CAAC;QACtB,MAAM,aAAa,GAAG,SAAS,CAAC,CAAC,CAAC,QAAQ,SAAS,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5D,OAAO,IAAI,uBAAgB,CACzB,GAAG,SAAS,sCAAsC,IAAI,eAAe,aAAa,cAAc,KAAK,IAAI,CAC1G,CAAC;IACJ,CAAC;IAEO,gBAAgB,CAAC,IAAsB;QAC7C,MAAM,GAAG,GAA2B;YAClC,KAAK,EAAE,QAAQ;YACf,GAAG,EAAE,MAAM;YACX,GAAG,EAAE,MAAM;YACX,GAAG,EAAE,MAAM;YACX,QAAQ,EAAE,WAAW;YACrB,OAAO,EAAE,UAAU;YACnB,IAAI,EAAE,OAAO;YACb,GAAG,EAAE,MAAM;SACZ,CAAC;QACF,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC;IACjC,CAAC;IAEO,mBAAmB,CACzB,IAA0B,EAC1B,QAAsB;QAEtB,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK;YACrB,MAAM,IAAI,iBAAU,CAClB,0DAA0D,CAC3D,CAAC;QACJ,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,IAAI,EAAE,CAAC;QACjC,MAAM,QAAQ,GAAG,IAAyD,CAAC;QAC3E,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;QAC3B,IAAI,QAAQ,CAAC,aAAa,EAAE,CAAC;YAC3B,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAiB,CAAC;QAC5C,CAAC;QACD,IAAI,QAAQ,CAAC,IAAI,KAAK,UAAU,IAAI,QAAQ,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAChE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CACtB,IAAI,CAAC,qBAAqB,CACxB,QAAQ,CAAC,IAAI,CAAC,SAAS,EACvB,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CACrB,CACc,CAAC;QACpB,CAAC;QACD,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAiB,CAAC;QACxE,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,OAAO,CAAC,QAAQ,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAiB,CAAC;QAChE,CAAC;QACD,OAAO,IAAI,CAAC,qBAAqB,CAC/B,QAAQ,CAAC,IAAI,CAAC,SAAS,EACvB,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,CACrB,CAAC;IACpB,CAAC;IAEO,eAAe,CACrB,IAA0B;QAE1B,OAAO,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC;IAC7B,CAAC;IAEO,eAAe;QACrB,OAAO,IAAI,CAAC,OAAmD,CAAC;IAClE,CAAC;IAES,cAAc,CAAC,SAAuB;QAC9C;;;;;;;WAOG;QACH,SAAS,KAAK,CACZ,EAAiB,EACjB,IAAmB,EACnB,IAAmB;YAEnB,MAAM,MAAM,GAAe,EAAE,QAAQ,EAAE,EAAmB,EAAE,CAAC;YAC7D,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACnC,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,SAIvC,CAAC;QAEF,IAAI,QAAQ,KAAK,eAAQ,CAAC,OAAO,EAAE,CAAC;YAClC,MAAM,IAAI,GAAG,KAAe,CAAC;YAC7B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;gBACvD,MAAM,IAAI,iBAAU,CAAC,iDAAiD,CAAC,CAAC;YAC1E,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,UAAU,CAAC;YAC9B,MAAM,SAAS,GAAkB,EAAmB,CAAC;YACrD,SAAS,CAAC,IAAI,CAAC,GAAG,EAAmB,CAAC;YACrC,SAAS,CAAC,IAAI,CAAmB,CAChC,IAAA,8BAAkB,EAAC,eAAQ,CAAC,SAAS,CAAC,CACvC,GAAG,GAAG,CAAC;YACP,SAAS,CAAC,IAAI,CAAmB,CAChC,IAAA,8BAAkB,EAAC,eAAQ,CAAC,UAAU,CAAC,CACxC,GAAG,GAAG,CAAC;YACR,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;QACjC,CAAC;QAED,IAAI,EAAE,GAAkB,EAAmB,CAAC;QAC5C,IACE,CAAC,oBAAa,CAAC,GAAG,EAAE,oBAAa,CAAC,EAAE,EAAE,eAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,CACzD,QAAyB,CAC1B,KAAK,CAAC,CAAC,EACR,CAAC;YACD,EAAE,CAAC,KAAe,CAAC,GAAG,EAAmB,CAAC;YACzC,EAAE,CAAC,KAAe,CAAmB,CAAC,IAAA,8BAAkB,EAAC,QAAQ,CAAC,CAAC;gBAClE,UAAU,CAAC;QACf,CAAC;aAAM,IAAI,QAAQ,KAAK,eAAQ,CAAC,GAAG,EAAE,CAAC;YACrC,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,KAAqB,CAAC,CAAC,QAAyB,CAAC;YAC1E,EAAE,CAAC,IAAA,8BAAkB,EAAC,eAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,EAAmB,CAAC;YAC1D,EAAE,CAAC,IAAA,8BAAkB,EAAC,eAAQ,CAAC,GAAG,CAAC,CAAmB,CACpD,KAAsC,CAAC,KAAK,CAC9C,GAAG,UAAU,CAAC;QACjB,CAAC;aAAM,CAAC;YACN,MAAM,GAAG,GAAQ,IAAI,CAAC,cAAc,CAAC,KAAqB,CAAC,CAAC,QAAQ,CAAC;YACrE,MAAM,GAAG,GAAQ,IAAI,CAAC,cAAc,CAAC,UAA0B,CAAC,CAAC,QAAQ,CAAC;YAC1E,EAAE,GAAG,KAAK,CAAC,IAAA,8BAAkB,EAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC;QAC9D,CAAC;QAED,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;IAC1B,CAAC;CACF;AAlzBD,4CAkzBC"}
|
package/lib/types.d.ts
CHANGED
|
@@ -153,3 +153,14 @@ export interface MangoQuery {
|
|
|
153
153
|
* Optional, default: false. */
|
|
154
154
|
execution_stats?: boolean;
|
|
155
155
|
}
|
|
156
|
+
export interface ViewRow<D = any> {
|
|
157
|
+
id?: string;
|
|
158
|
+
key?: any;
|
|
159
|
+
value?: any;
|
|
160
|
+
doc?: D;
|
|
161
|
+
}
|
|
162
|
+
export interface ViewResponse<D = any> {
|
|
163
|
+
total_rows?: number;
|
|
164
|
+
offset?: number;
|
|
165
|
+
rows: ViewRow<D>[];
|
|
166
|
+
}
|