@ptc-org/nestjs-query-core 0.30.1 → 1.0.0-alpha.1
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/CHANGELOG.md +104 -104
- package/README.md +4 -4
- package/package.json +5 -5
- package/src/assemblers/abstract.assembler.d.ts +33 -0
- package/src/assemblers/abstract.assembler.js +55 -0
- package/src/assemblers/abstract.assembler.js.map +1 -0
- package/src/assemblers/assembler.d.ts +86 -0
- package/src/assemblers/assembler.deserializer.d.ts +4 -0
- package/src/assemblers/assembler.deserializer.js +22 -0
- package/src/assemblers/assembler.deserializer.js.map +1 -0
- package/src/assemblers/assembler.factory.d.ts +8 -0
- package/src/assemblers/assembler.factory.js +29 -0
- package/src/assemblers/assembler.factory.js.map +1 -0
- package/src/assemblers/assembler.js +33 -0
- package/src/assemblers/assembler.js.map +1 -0
- package/src/assemblers/assembler.serializer.d.ts +4 -0
- package/src/assemblers/assembler.serializer.js +22 -0
- package/src/assemblers/assembler.serializer.js.map +1 -0
- package/src/assemblers/class-transformer.assembler.d.ts +17 -0
- package/src/assemblers/class-transformer.assembler.js +67 -0
- package/src/assemblers/class-transformer.assembler.js.map +1 -0
- package/src/assemblers/constants.d.ts +4 -0
- package/src/assemblers/constants.js +8 -0
- package/src/assemblers/constants.js.map +1 -0
- package/src/assemblers/default.assembler.d.ts +8 -0
- package/src/assemblers/default.assembler.js +14 -0
- package/src/assemblers/default.assembler.js.map +1 -0
- package/src/assemblers/index.d.ts +7 -0
- package/src/assemblers/index.js +19 -0
- package/src/assemblers/index.js.map +1 -0
- package/src/common/class.type.d.ts +8 -0
- package/src/common/class.type.js +3 -0
- package/src/common/class.type.js.map +1 -0
- package/src/common/class.utils.d.ts +2 -0
- package/src/common/class.utils.js +12 -0
- package/src/common/class.utils.js.map +1 -0
- package/src/common/deep-partial.type.d.ts +6 -0
- package/src/common/deep-partial.type.js +3 -0
- package/src/common/deep-partial.type.js.map +1 -0
- package/src/common/index.d.ts +5 -0
- package/src/common/index.js +9 -0
- package/src/common/index.js.map +1 -0
- package/src/common/misc.utils.d.ts +4 -0
- package/src/common/misc.utils.js +9 -0
- package/src/common/misc.utils.js.map +1 -0
- package/src/common/reflect.utils.d.ts +31 -0
- package/src/common/reflect.utils.js +98 -0
- package/src/common/reflect.utils.js.map +1 -0
- package/src/decorators/helpers.d.ts +6 -0
- package/src/decorators/helpers.js +12 -0
- package/src/decorators/helpers.js.map +1 -0
- package/src/decorators/index.d.ts +3 -0
- package/src/decorators/index.js +10 -0
- package/src/decorators/index.js.map +1 -0
- package/src/decorators/inject-assembler-query-service.decorator.d.ts +4 -0
- package/src/decorators/inject-assembler-query-service.decorator.js +8 -0
- package/src/decorators/inject-assembler-query-service.decorator.js.map +1 -0
- package/src/decorators/inject-query-service.decorator.d.ts +3 -0
- package/src/decorators/inject-query-service.decorator.js +8 -0
- package/src/decorators/inject-query-service.decorator.js.map +1 -0
- package/src/helpers/aggregate.helpers.d.ts +4 -0
- package/src/helpers/aggregate.helpers.js +56 -0
- package/src/helpers/aggregate.helpers.js.map +1 -0
- package/src/helpers/comparison.builder.d.ts +11 -0
- package/src/helpers/comparison.builder.js +92 -0
- package/src/helpers/comparison.builder.js.map +1 -0
- package/src/helpers/filter.builder.d.ts +10 -0
- package/src/helpers/filter.builder.js +49 -0
- package/src/helpers/filter.builder.js.map +1 -0
- package/src/helpers/filter.helpers.d.ts +24 -0
- package/src/helpers/filter.helpers.js +115 -0
- package/src/helpers/filter.helpers.js.map +1 -0
- package/src/helpers/index.d.ts +3 -0
- package/src/helpers/index.js +17 -0
- package/src/helpers/index.js.map +1 -0
- package/src/helpers/page.builder.d.ts +6 -0
- package/src/helpers/page.builder.js +13 -0
- package/src/helpers/page.builder.js.map +1 -0
- package/src/helpers/query.helpers.d.ts +11 -0
- package/src/helpers/query.helpers.js +60 -0
- package/src/helpers/query.helpers.js.map +1 -0
- package/src/helpers/sort.builder.d.ts +11 -0
- package/src/helpers/sort.builder.js +82 -0
- package/src/helpers/sort.builder.js.map +1 -0
- package/src/helpers/types.d.ts +3 -0
- package/src/helpers/types.js +3 -0
- package/src/helpers/types.js.map +1 -0
- package/src/index.d.ts +7 -0
- package/src/index.js.map +1 -0
- package/src/interfaces/aggregate-query.interface.d.ts +8 -0
- package/src/interfaces/aggregate-query.interface.js +3 -0
- package/src/interfaces/aggregate-query.interface.js.map +1 -0
- package/src/interfaces/aggregate-response.interface.d.ts +14 -0
- package/src/interfaces/aggregate-response.interface.js +3 -0
- package/src/interfaces/aggregate-response.interface.js.map +1 -0
- package/src/interfaces/delete-many-options.interface.d.ts +2 -0
- package/src/interfaces/delete-many-options.interface.js +3 -0
- package/src/interfaces/delete-many-options.interface.js.map +1 -0
- package/src/interfaces/delete-many-response.interface.d.ts +9 -0
- package/src/interfaces/delete-many-response.interface.js +3 -0
- package/src/interfaces/delete-many-response.interface.js.map +1 -0
- package/src/interfaces/delete-one-options.interface.d.ts +7 -0
- package/src/interfaces/delete-one-options.interface.js +3 -0
- package/src/interfaces/delete-one-options.interface.js.map +1 -0
- package/src/interfaces/filter-field-comparison.interface.d.ts +202 -0
- package/src/interfaces/filter-field-comparison.interface.js +3 -0
- package/src/interfaces/filter-field-comparison.interface.js.map +1 -0
- package/src/interfaces/filter.interface.d.ts +113 -0
- package/src/interfaces/filter.interface.js +3 -0
- package/src/interfaces/filter.interface.js.map +1 -0
- package/src/interfaces/filterable.interface.d.ts +13 -0
- package/src/interfaces/filterable.interface.js +3 -0
- package/src/interfaces/filterable.interface.js.map +1 -0
- package/src/interfaces/find-by-id-options.interface.d.ts +7 -0
- package/src/interfaces/find-by-id-options.interface.js +3 -0
- package/src/interfaces/find-by-id-options.interface.js.map +1 -0
- package/src/interfaces/find-relation-options.interface.d.ts +2 -0
- package/src/interfaces/find-relation-options.interface.js +3 -0
- package/src/interfaces/find-relation-options.interface.js.map +1 -0
- package/src/interfaces/get-by-id-options.interface.d.ts +2 -0
- package/src/interfaces/get-by-id-options.interface.js +3 -0
- package/src/interfaces/get-by-id-options.interface.js.map +1 -0
- package/src/interfaces/index.d.ts +17 -0
- package/src/interfaces/index.js +21 -0
- package/src/interfaces/index.js.map +1 -0
- package/src/interfaces/modify-relation-options.interface.d.ts +9 -0
- package/src/interfaces/modify-relation-options.interface.js +3 -0
- package/src/interfaces/modify-relation-options.interface.js.map +1 -0
- package/src/interfaces/paging.interface.d.ts +13 -0
- package/src/interfaces/paging.interface.js +3 -0
- package/src/interfaces/paging.interface.js.map +1 -0
- package/src/interfaces/query.inteface.d.ts +37 -0
- package/src/interfaces/query.inteface.js +3 -0
- package/src/interfaces/query.inteface.js.map +1 -0
- package/src/interfaces/sort-field.interface.d.ts +60 -0
- package/src/interfaces/sort-field.interface.js +26 -0
- package/src/interfaces/sort-field.interface.js.map +1 -0
- package/src/interfaces/update-many-response.interface.d.ts +9 -0
- package/src/interfaces/update-many-response.interface.js +3 -0
- package/src/interfaces/update-many-response.interface.js.map +1 -0
- package/src/interfaces/update-one-options.interface.d.ts +8 -0
- package/src/interfaces/update-one-options.interface.js +3 -0
- package/src/interfaces/update-one-options.interface.js.map +1 -0
- package/src/module.d.ts +10 -0
- package/src/module.js +18 -0
- package/src/module.js.map +1 -0
- package/src/providers.d.ts +4 -0
- package/src/providers.js +24 -0
- package/src/providers.js.map +1 -0
- package/src/services/assembler-query.service.d.ts +63 -0
- package/src/services/assembler-query.service.js +132 -0
- package/src/services/assembler-query.service.js.map +1 -0
- package/src/services/index.d.ts +5 -0
- package/src/services/index.js +14 -0
- package/src/services/index.js.map +1 -0
- package/src/services/noop-query.service.d.ts +32 -0
- package/src/services/noop-query.service.js +76 -0
- package/src/services/noop-query.service.js.map +1 -0
- package/src/services/proxy-query.service.d.ts +59 -0
- package/src/services/proxy-query.service.js +82 -0
- package/src/services/proxy-query.service.js.map +1 -0
- package/src/services/query.service.d.ts +176 -0
- package/src/services/query.service.js +14 -0
- package/src/services/query.service.js.map +1 -0
- package/src/services/relation-query.service.d.ts +50 -0
- package/src/services/relation-query.service.js +103 -0
- package/src/services/relation-query.service.js.map +1 -0
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { Class, DeepPartial } from '../common';
|
|
2
|
+
import { Filter, Query, AggregateQuery, AggregateResponse, FindRelationOptions } from '../interfaces';
|
|
3
|
+
import { ProxyQueryService } from './proxy-query.service';
|
|
4
|
+
import { QueryService } from './query.service';
|
|
5
|
+
export declare type QueryServiceRelation<DTO, Relation> = {
|
|
6
|
+
service: QueryService<Relation, unknown, unknown>;
|
|
7
|
+
query: (dto: DTO) => Query<Relation>;
|
|
8
|
+
};
|
|
9
|
+
export declare class RelationQueryService<DTO, C = DeepPartial<DTO>, U = DeepPartial<DTO>> extends ProxyQueryService<DTO, C, U> {
|
|
10
|
+
readonly relations: Record<string, QueryServiceRelation<DTO, unknown>>;
|
|
11
|
+
constructor(queryService: QueryService<DTO, C, U>, relations: Record<string, QueryServiceRelation<DTO, unknown>>);
|
|
12
|
+
constructor(relations: Record<string, QueryServiceRelation<DTO, unknown>>);
|
|
13
|
+
/**
|
|
14
|
+
* Query for relations for an array of DTOs. This method will return a map with the DTO as the key and the relations as the value.
|
|
15
|
+
* @param RelationClass - The class of the relation.
|
|
16
|
+
* @param relationName - The name of the relation to load.
|
|
17
|
+
* @param dtos - the dtos to find relations for.
|
|
18
|
+
* @param query - A query to use to filter, page, and sort relations.
|
|
19
|
+
*/
|
|
20
|
+
queryRelations<Relation>(RelationClass: Class<Relation>, relationName: string, dtos: DTO[], query: Query<Relation>): Promise<Map<DTO, Relation[]>>;
|
|
21
|
+
/**
|
|
22
|
+
* Query for an array of relations.
|
|
23
|
+
* @param RelationClass - The class to serialize the relations into.
|
|
24
|
+
* @param dto - The dto to query relations for.
|
|
25
|
+
* @param relationName - The name of relation to query for.
|
|
26
|
+
* @param query - A query to filter, page and sort relations.
|
|
27
|
+
*/
|
|
28
|
+
queryRelations<Relation>(RelationClass: Class<Relation>, relationName: string, dto: DTO, query: Query<Relation>): Promise<Relation[]>;
|
|
29
|
+
aggregateRelations<Relation>(RelationClass: Class<Relation>, relationName: string, dto: DTO, filter: Filter<Relation>, aggregate: AggregateQuery<Relation>): Promise<AggregateResponse<Relation>[]>;
|
|
30
|
+
aggregateRelations<Relation>(RelationClass: Class<Relation>, relationName: string, dtos: DTO[], filter: Filter<Relation>, aggregate: AggregateQuery<Relation>): Promise<Map<DTO, AggregateResponse<Relation>[]>>;
|
|
31
|
+
countRelations<Relation>(RelationClass: Class<Relation>, relationName: string, dtos: DTO[], filter: Filter<Relation>): Promise<Map<DTO, number>>;
|
|
32
|
+
countRelations<Relation>(RelationClass: Class<Relation>, relationName: string, dto: DTO, filter: Filter<Relation>): Promise<number>;
|
|
33
|
+
/**
|
|
34
|
+
* Find a relation for an array of DTOs. This will return a Map where the key is the DTO and the value is to relation or undefined if not found.
|
|
35
|
+
* @param RelationClass - the class of the relation
|
|
36
|
+
* @param relationName - the name of the relation to load.
|
|
37
|
+
* @param dtos - the dtos to find the relation for.
|
|
38
|
+
* @param filter - Additional filter to apply when finding relations
|
|
39
|
+
*/
|
|
40
|
+
findRelation<Relation>(RelationClass: Class<Relation>, relationName: string, dtos: DTO[], opts?: FindRelationOptions<Relation>): Promise<Map<DTO, Relation | undefined>>;
|
|
41
|
+
/**
|
|
42
|
+
* Finds a single relation.
|
|
43
|
+
* @param RelationClass - The class to serialize the relation into.
|
|
44
|
+
* @param dto - The dto to find the relation for.
|
|
45
|
+
* @param relationName - The name of the relation to query for.
|
|
46
|
+
* @param filter - Additional filter to apply when finding relations
|
|
47
|
+
*/
|
|
48
|
+
findRelation<Relation>(RelationClass: Class<Relation>, relationName: string, dto: DTO, opts?: FindRelationOptions<Relation>): Promise<Relation | undefined>;
|
|
49
|
+
getRelation<Relation>(name: string): QueryServiceRelation<DTO, Relation> | undefined;
|
|
50
|
+
}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RelationQueryService = void 0;
|
|
4
|
+
const helpers_1 = require("../helpers");
|
|
5
|
+
const noop_query_service_1 = require("./noop-query.service");
|
|
6
|
+
const proxy_query_service_1 = require("./proxy-query.service");
|
|
7
|
+
class RelationQueryService extends proxy_query_service_1.ProxyQueryService {
|
|
8
|
+
constructor(queryService, relations) {
|
|
9
|
+
if (typeof queryService.query === 'function') {
|
|
10
|
+
super(queryService);
|
|
11
|
+
this.relations = relations;
|
|
12
|
+
}
|
|
13
|
+
else {
|
|
14
|
+
super(noop_query_service_1.NoOpQueryService.getInstance());
|
|
15
|
+
this.relations = queryService;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
async queryRelations(RelationClass, relationName, dto, query) {
|
|
19
|
+
const serviceRelation = this.getRelation(relationName);
|
|
20
|
+
if (!serviceRelation) {
|
|
21
|
+
if (Array.isArray(dto)) {
|
|
22
|
+
return super.queryRelations(RelationClass, relationName, dto, query);
|
|
23
|
+
}
|
|
24
|
+
return super.queryRelations(RelationClass, relationName, dto, query);
|
|
25
|
+
}
|
|
26
|
+
const { query: qf, service } = serviceRelation;
|
|
27
|
+
if (Array.isArray(dto)) {
|
|
28
|
+
const map = new Map();
|
|
29
|
+
await Promise.all(dto.map(async (d) => {
|
|
30
|
+
const relations = await service.query((0, helpers_1.mergeQuery)(query, qf(d)));
|
|
31
|
+
map.set(d, relations);
|
|
32
|
+
}));
|
|
33
|
+
return map;
|
|
34
|
+
}
|
|
35
|
+
return service.query((0, helpers_1.mergeQuery)(query, qf(dto)));
|
|
36
|
+
}
|
|
37
|
+
async aggregateRelations(RelationClass, relationName, dto, filter, aggregate) {
|
|
38
|
+
const serviceRelation = this.getRelation(relationName);
|
|
39
|
+
if (!serviceRelation) {
|
|
40
|
+
if (Array.isArray(dto)) {
|
|
41
|
+
return super.aggregateRelations(RelationClass, relationName, dto, filter, aggregate);
|
|
42
|
+
}
|
|
43
|
+
return super.aggregateRelations(RelationClass, relationName, dto, filter, aggregate);
|
|
44
|
+
}
|
|
45
|
+
const { query: qf, service } = serviceRelation;
|
|
46
|
+
if (Array.isArray(dto)) {
|
|
47
|
+
const map = new Map();
|
|
48
|
+
await Promise.all(dto.map(async (d) => {
|
|
49
|
+
const relations = await service.aggregate((0, helpers_1.mergeQuery)({ filter }, qf(d)).filter ?? {}, aggregate);
|
|
50
|
+
map.set(d, relations);
|
|
51
|
+
}));
|
|
52
|
+
return map;
|
|
53
|
+
}
|
|
54
|
+
return service.aggregate((0, helpers_1.mergeQuery)({ filter }, qf(dto)).filter ?? {}, aggregate);
|
|
55
|
+
}
|
|
56
|
+
async countRelations(RelationClass, relationName, dto, filter) {
|
|
57
|
+
const serviceRelation = this.getRelation(relationName);
|
|
58
|
+
if (!serviceRelation) {
|
|
59
|
+
if (Array.isArray(dto)) {
|
|
60
|
+
return super.countRelations(RelationClass, relationName, dto, filter);
|
|
61
|
+
}
|
|
62
|
+
return super.countRelations(RelationClass, relationName, dto, filter);
|
|
63
|
+
}
|
|
64
|
+
const { query: qf, service } = serviceRelation;
|
|
65
|
+
if (Array.isArray(dto)) {
|
|
66
|
+
const map = new Map();
|
|
67
|
+
await Promise.all(dto.map(async (d) => {
|
|
68
|
+
const count = await service.count((0, helpers_1.mergeQuery)({ filter }, qf(d)).filter || {});
|
|
69
|
+
map.set(d, count);
|
|
70
|
+
}));
|
|
71
|
+
return map;
|
|
72
|
+
}
|
|
73
|
+
return service.count((0, helpers_1.mergeQuery)({ filter }, qf(dto)).filter || {});
|
|
74
|
+
}
|
|
75
|
+
async findRelation(RelationClass, relationName, dto, opts) {
|
|
76
|
+
const serviceRelation = this.getRelation(relationName);
|
|
77
|
+
if (!serviceRelation) {
|
|
78
|
+
if (Array.isArray(dto)) {
|
|
79
|
+
return super.findRelation(RelationClass, relationName, dto, opts);
|
|
80
|
+
}
|
|
81
|
+
return super.findRelation(RelationClass, relationName, dto, opts);
|
|
82
|
+
}
|
|
83
|
+
const { query: qf, service } = serviceRelation;
|
|
84
|
+
if (Array.isArray(dto)) {
|
|
85
|
+
const map = new Map();
|
|
86
|
+
await Promise.all(dto.map(async (d) => {
|
|
87
|
+
const relation = await service.query((0, helpers_1.mergeQuery)(qf(d), { paging: { limit: 1 }, filter: opts?.filter }));
|
|
88
|
+
map.set(d, relation[0]);
|
|
89
|
+
}));
|
|
90
|
+
return map;
|
|
91
|
+
}
|
|
92
|
+
return (await service.query((0, helpers_1.mergeQuery)(qf(dto), { paging: { limit: 1 }, filter: opts?.filter })))[0];
|
|
93
|
+
}
|
|
94
|
+
getRelation(name) {
|
|
95
|
+
const relation = this.relations[name];
|
|
96
|
+
if (relation) {
|
|
97
|
+
return relation;
|
|
98
|
+
}
|
|
99
|
+
return undefined;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
exports.RelationQueryService = RelationQueryService;
|
|
103
|
+
//# sourceMappingURL=relation-query.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"relation-query.service.js","sourceRoot":"","sources":["../../../../../packages/core/src/services/relation-query.service.ts"],"names":[],"mappings":";;;AACA,wCAAwC;AAExC,6DAAwD;AACxD,+DAA0D;AAQ1D,MAAa,oBAAsE,SAAQ,uCAI1F;IAOC,YACE,YAA0F,EAC1F,SAA8D;QAE9D,IAAI,OAAO,YAAY,CAAC,KAAK,KAAK,UAAU,EAAE;YAC5C,KAAK,CAAC,YAAuC,CAAC,CAAC;YAC/C,IAAI,CAAC,SAAS,GAAG,SAA+D,CAAC;SAClF;aAAM;YACL,KAAK,CAAC,qCAAgB,CAAC,WAAW,EAAE,CAAC,CAAC;YACtC,IAAI,CAAC,SAAS,GAAG,YAAkE,CAAC;SACrF;IACH,CAAC;IA8BD,KAAK,CAAC,cAAc,CAClB,aAA8B,EAC9B,YAAoB,EACpB,GAAgB,EAChB,KAAsB;QAEtB,MAAM,eAAe,GAAG,IAAI,CAAC,WAAW,CAAW,YAAY,CAAC,CAAC;QACjE,IAAI,CAAC,eAAe,EAAE;YACpB,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;gBACtB,OAAO,KAAK,CAAC,cAAc,CAAC,aAAa,EAAE,YAAY,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;aACtE;YACD,OAAO,KAAK,CAAC,cAAc,CAAC,aAAa,EAAE,YAAY,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;SACtE;QAED,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,eAAe,CAAC;QAC/C,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YACtB,MAAM,GAAG,GAAG,IAAI,GAAG,EAAmB,CAAC;YACvC,MAAM,OAAO,CAAC,GAAG,CACf,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;gBAClB,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,IAAA,oBAAU,EAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAChE,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;YACxB,CAAC,CAAC,CACH,CAAC;YACF,OAAO,GAAG,CAAC;SACZ;QACD,OAAO,OAAO,CAAC,KAAK,CAAC,IAAA,oBAAU,EAAC,KAAK,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACnD,CAAC;IAkBD,KAAK,CAAC,kBAAkB,CACtB,aAA8B,EAC9B,YAAoB,EACpB,GAAgB,EAChB,MAAwB,EACxB,SAAmC;QAEnC,MAAM,eAAe,GAAG,IAAI,CAAC,WAAW,CAAW,YAAY,CAAC,CAAC;QACjE,IAAI,CAAC,eAAe,EAAE;YACpB,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;gBACtB,OAAO,KAAK,CAAC,kBAAkB,CAAC,aAAa,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;aACtF;YACD,OAAO,KAAK,CAAC,kBAAkB,CAAC,aAAa,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;SACtF;QACD,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,eAAe,CAAC;QAC/C,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YACtB,MAAM,GAAG,GAAG,IAAI,GAAG,EAAsC,CAAC;YAC1D,MAAM,OAAO,CAAC,GAAG,CACf,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;gBAClB,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,IAAA,oBAAU,EAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE,EAAE,SAAS,CAAC,CAAC;gBACjG,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;YACxB,CAAC,CAAC,CACH,CAAC;YACF,OAAO,GAAG,CAAC;SACZ;QACD,OAAO,OAAO,CAAC,SAAS,CAAC,IAAA,oBAAU,EAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE,EAAE,SAAS,CAAC,CAAC;IACpF,CAAC;IAgBD,KAAK,CAAC,cAAc,CAClB,aAA8B,EAC9B,YAAoB,EACpB,GAAgB,EAChB,MAAwB;QAExB,MAAM,eAAe,GAAG,IAAI,CAAC,WAAW,CAAW,YAAY,CAAC,CAAC;QACjE,IAAI,CAAC,eAAe,EAAE;YACpB,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;gBACtB,OAAO,KAAK,CAAC,cAAc,CAAC,aAAa,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;aACvE;YACD,OAAO,KAAK,CAAC,cAAc,CAAC,aAAa,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;SACvE;QACD,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,eAAe,CAAC;QAC/C,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YACtB,MAAM,GAAG,GAAG,IAAI,GAAG,EAAe,CAAC;YACnC,MAAM,OAAO,CAAC,GAAG,CACf,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;gBAClB,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,IAAA,oBAAU,EAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;gBAC9E,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;YACpB,CAAC,CAAC,CACH,CAAC;YACF,OAAO,GAAG,CAAC;SACZ;QACD,OAAO,OAAO,CAAC,KAAK,CAAC,IAAA,oBAAU,EAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;IACrE,CAAC;IA8BD,KAAK,CAAC,YAAY,CAChB,aAA8B,EAC9B,YAAoB,EACpB,GAAgB,EAChB,IAAoC;QAEpC,MAAM,eAAe,GAAG,IAAI,CAAC,WAAW,CAAW,YAAY,CAAC,CAAC;QACjE,IAAI,CAAC,eAAe,EAAE;YACpB,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;gBACtB,OAAO,KAAK,CAAC,YAAY,CAAC,aAAa,EAAE,YAAY,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;aACnE;YACD,OAAO,KAAK,CAAC,YAAY,CAAC,aAAa,EAAE,YAAY,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;SACnE;QACD,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,eAAe,CAAC;QAC/C,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YACtB,MAAM,GAAG,GAAG,IAAI,GAAG,EAA6B,CAAC;YACjD,MAAM,OAAO,CAAC,GAAG,CACf,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;gBAClB,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,IAAA,oBAAU,EAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;gBACxG,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1B,CAAC,CAAC,CACH,CAAC;YACF,OAAO,GAAG,CAAC;SACZ;QACD,OAAO,CAAC,MAAM,OAAO,CAAC,KAAK,CAAC,IAAA,oBAAU,EAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACvG,CAAC;IAED,WAAW,CAAW,IAAY;QAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,QAAQ,EAAE;YACZ,OAAO,QAA+C,CAAC;SACxD;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;CACF;AAnOD,oDAmOC"}
|