mormati-mongoose 0.1.24 → 0.1.27
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/helper/query/engine/engine.type.d.ts +22 -0
- package/dist/helper/query/engine/engine.type.js +3 -0
- package/dist/helper/query/engine/engine.type.js.map +1 -0
- package/dist/helper/query/engine/group/index.d.ts +92 -0
- package/dist/helper/query/engine/group/index.js +14 -0
- package/dist/helper/query/engine/group/index.js.map +1 -0
- package/dist/helper/query/{query.engine.d.ts → engine/index.d.ts} +1 -1
- package/dist/helper/query/engine/index.js +53 -0
- package/dist/helper/query/engine/index.js.map +1 -0
- package/dist/helper/query/engine/limit/index.d.ts +8 -0
- package/dist/helper/query/engine/limit/index.js +9 -0
- package/dist/helper/query/engine/limit/index.js.map +1 -0
- package/dist/helper/query/engine/lookup/index.d.ts +6 -0
- package/dist/helper/query/engine/lookup/index.js +46 -0
- package/dist/helper/query/engine/lookup/index.js.map +1 -0
- package/dist/helper/query/engine/lookup/lookup.pipe.d.ts +8 -0
- package/dist/helper/query/engine/lookup/lookup.pipe.js +123 -0
- package/dist/helper/query/engine/lookup/lookup.pipe.js.map +1 -0
- package/dist/helper/query/engine/match/index.d.ts +56 -0
- package/dist/helper/query/engine/match/index.js +77 -0
- package/dist/helper/query/engine/match/index.js.map +1 -0
- package/dist/helper/query/engine/match/match.search.d.ts +7 -0
- package/dist/helper/query/engine/match/match.search.js +37 -0
- package/dist/helper/query/engine/match/match.search.js.map +1 -0
- package/dist/helper/query/engine/project/index.d.ts +8 -0
- package/dist/helper/query/engine/project/index.js +15 -0
- package/dist/helper/query/engine/project/index.js.map +1 -0
- package/dist/helper/query/engine/skip/index.d.ts +8 -0
- package/dist/helper/query/engine/skip/index.js +9 -0
- package/dist/helper/query/engine/skip/index.js.map +1 -0
- package/dist/helper/query/engine/sort/index.d.ts +8 -0
- package/dist/helper/query/engine/sort/index.js +10 -0
- package/dist/helper/query/engine/sort/index.js.map +1 -0
- package/dist/helper/query/engine/unset/index.d.ts +8 -0
- package/dist/helper/query/engine/unset/index.js +10 -0
- package/dist/helper/query/engine/unset/index.js.map +1 -0
- package/dist/helper/query/engine/unwind/index.d.ts +6 -0
- package/dist/helper/query/engine/unwind/index.js +26 -0
- package/dist/helper/query/engine/unwind/index.js.map +1 -0
- package/dist/helper/query/index.d.ts +3 -3
- package/dist/helper/query/index.js +3 -5
- package/dist/helper/query/index.js.map +1 -1
- package/dist/helper/query/query.dto.d.ts +2 -3
- package/dist/helper/query/query.dto.js +1 -0
- package/dist/helper/query/query.dto.js.map +1 -1
- package/dist/helper/query/query.expression.d.ts +1 -0
- package/dist/helper/query/query.expression.js +1 -0
- package/dist/helper/query/query.expression.js.map +1 -1
- package/dist/helper/query/query.method.d.ts +2 -4
- package/dist/helper/query/query.method.js +7 -38
- package/dist/helper/query/query.method.js.map +1 -1
- package/dist/helper/query/{quer.type.js → query.type.js} +1 -1
- package/dist/helper/query/query.type.js.map +1 -0
- package/dist/tsconfig.lib.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/dist/helper/query/quer.type.js.map +0 -1
- package/dist/helper/query/query.engine.js +0 -296
- package/dist/helper/query/query.engine.js.map +0 -1
- /package/dist/helper/query/{quer.type.d.ts → query.type.d.ts} +0 -0
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export interface ICriteria {
|
|
2
|
+
_or?: boolean;
|
|
3
|
+
_rawUpdate?: boolean;
|
|
4
|
+
_updateType?: string;
|
|
5
|
+
_hardDelete?: boolean;
|
|
6
|
+
_search?: {
|
|
7
|
+
_searchWord?: string;
|
|
8
|
+
_searchChar?: string;
|
|
9
|
+
_searchCharFields?: string[];
|
|
10
|
+
};
|
|
11
|
+
_skip?: number;
|
|
12
|
+
_limit?: number;
|
|
13
|
+
_lookup?: object;
|
|
14
|
+
_unwind?: {
|
|
15
|
+
unwind: string;
|
|
16
|
+
unwindPreserve: boolean;
|
|
17
|
+
}[];
|
|
18
|
+
_sort?: object;
|
|
19
|
+
_group?: object[];
|
|
20
|
+
_unset?: string[];
|
|
21
|
+
_project?: string[];
|
|
22
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"engine.type.js","sourceRoot":"","sources":["../../../../../../libs/mongoose/src/helper/query/engine/engine.type.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { ICriteria } from '../engine.type';
|
|
2
|
+
interface IQueryGroup {
|
|
3
|
+
criteria: ICriteria;
|
|
4
|
+
}
|
|
5
|
+
export declare const queryGroup: ({ criteria }: IQueryGroup) => {
|
|
6
|
+
[x: string]: {
|
|
7
|
+
length: number;
|
|
8
|
+
toString(): string;
|
|
9
|
+
toLocaleString(): string;
|
|
10
|
+
toLocaleString(locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string;
|
|
11
|
+
pop(): object;
|
|
12
|
+
push(...items: object[]): number;
|
|
13
|
+
concat(...items: ConcatArray<object>[]): object[];
|
|
14
|
+
concat(...items: (object | ConcatArray<object>)[]): object[];
|
|
15
|
+
join(separator?: string): string;
|
|
16
|
+
reverse(): object[];
|
|
17
|
+
shift(): object;
|
|
18
|
+
slice(start?: number, end?: number): object[];
|
|
19
|
+
sort(compareFn?: (a: object, b: object) => number): object[];
|
|
20
|
+
splice(start: number, deleteCount?: number): object[];
|
|
21
|
+
splice(start: number, deleteCount: number, ...items: object[]): object[];
|
|
22
|
+
unshift(...items: object[]): number;
|
|
23
|
+
indexOf(searchElement: object, fromIndex?: number): number;
|
|
24
|
+
lastIndexOf(searchElement: object, fromIndex?: number): number;
|
|
25
|
+
every<S extends object>(predicate: (value: object, index: number, array: object[]) => value is S, thisArg?: any): this is S[];
|
|
26
|
+
every(predicate: (value: object, index: number, array: object[]) => unknown, thisArg?: any): boolean;
|
|
27
|
+
some(predicate: (value: object, index: number, array: object[]) => unknown, thisArg?: any): boolean;
|
|
28
|
+
forEach(callbackfn: (value: object, index: number, array: object[]) => void, thisArg?: any): void;
|
|
29
|
+
map<U>(callbackfn: (value: object, index: number, array: object[]) => U, thisArg?: any): U[];
|
|
30
|
+
filter<S extends object>(predicate: (value: object, index: number, array: object[]) => value is S, thisArg?: any): S[];
|
|
31
|
+
filter(predicate: (value: object, index: number, array: object[]) => unknown, thisArg?: any): object[];
|
|
32
|
+
reduce(callbackfn: (previousValue: object, currentValue: object, currentIndex: number, array: object[]) => object): object;
|
|
33
|
+
reduce(callbackfn: (previousValue: object, currentValue: object, currentIndex: number, array: object[]) => object, initialValue: object): object;
|
|
34
|
+
reduce<U>(callbackfn: (previousValue: U, currentValue: object, currentIndex: number, array: object[]) => U, initialValue: U): U;
|
|
35
|
+
reduceRight(callbackfn: (previousValue: object, currentValue: object, currentIndex: number, array: object[]) => object): object;
|
|
36
|
+
reduceRight(callbackfn: (previousValue: object, currentValue: object, currentIndex: number, array: object[]) => object, initialValue: object): object;
|
|
37
|
+
reduceRight<U>(callbackfn: (previousValue: U, currentValue: object, currentIndex: number, array: object[]) => U, initialValue: U): U;
|
|
38
|
+
find<S extends object>(predicate: (value: object, index: number, obj: object[]) => value is S, thisArg?: any): S;
|
|
39
|
+
find(predicate: (value: object, index: number, obj: object[]) => unknown, thisArg?: any): object;
|
|
40
|
+
findIndex(predicate: (value: object, index: number, obj: object[]) => unknown, thisArg?: any): number;
|
|
41
|
+
fill(value: object, start?: number, end?: number): object[];
|
|
42
|
+
copyWithin(target: number, start: number, end?: number): object[];
|
|
43
|
+
entries(): ArrayIterator<[number, object]>;
|
|
44
|
+
keys(): ArrayIterator<number>;
|
|
45
|
+
values(): ArrayIterator<object>;
|
|
46
|
+
includes(searchElement: object, fromIndex?: number): boolean;
|
|
47
|
+
flatMap<U, This = undefined>(callback: (this: This, value: object, index: number, array: object[]) => U | readonly U[], thisArg?: This): U[];
|
|
48
|
+
flat<A, D extends number = 1>(this: A, depth?: D): FlatArray<A, D>[];
|
|
49
|
+
[Symbol.iterator](): ArrayIterator<object>;
|
|
50
|
+
[Symbol.unscopables]: {
|
|
51
|
+
[x: number]: boolean;
|
|
52
|
+
length?: boolean;
|
|
53
|
+
toString?: boolean;
|
|
54
|
+
toLocaleString?: boolean;
|
|
55
|
+
pop?: boolean;
|
|
56
|
+
push?: boolean;
|
|
57
|
+
concat?: boolean;
|
|
58
|
+
join?: boolean;
|
|
59
|
+
reverse?: boolean;
|
|
60
|
+
shift?: boolean;
|
|
61
|
+
slice?: boolean;
|
|
62
|
+
sort?: boolean;
|
|
63
|
+
splice?: boolean;
|
|
64
|
+
unshift?: boolean;
|
|
65
|
+
indexOf?: boolean;
|
|
66
|
+
lastIndexOf?: boolean;
|
|
67
|
+
every?: boolean;
|
|
68
|
+
some?: boolean;
|
|
69
|
+
forEach?: boolean;
|
|
70
|
+
map?: boolean;
|
|
71
|
+
filter?: boolean;
|
|
72
|
+
reduce?: boolean;
|
|
73
|
+
reduceRight?: boolean;
|
|
74
|
+
find?: boolean;
|
|
75
|
+
findIndex?: boolean;
|
|
76
|
+
fill?: boolean;
|
|
77
|
+
copyWithin?: boolean;
|
|
78
|
+
entries?: boolean;
|
|
79
|
+
keys?: boolean;
|
|
80
|
+
values?: boolean;
|
|
81
|
+
includes?: boolean;
|
|
82
|
+
flatMap?: boolean;
|
|
83
|
+
flat?: boolean;
|
|
84
|
+
[Symbol.iterator]?: boolean;
|
|
85
|
+
readonly [Symbol.unscopables]?: boolean;
|
|
86
|
+
at?: boolean;
|
|
87
|
+
};
|
|
88
|
+
at(index: number): object;
|
|
89
|
+
_id: string;
|
|
90
|
+
};
|
|
91
|
+
}[];
|
|
92
|
+
export {};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.queryGroup = void 0;
|
|
4
|
+
const query_expression_1 = require("../../query.expression");
|
|
5
|
+
const query_method_1 = require("../../query.method");
|
|
6
|
+
;
|
|
7
|
+
const queryGroup = ({ criteria }) => {
|
|
8
|
+
if (!(0, query_method_1.objKeyLengthCheck)(criteria?._group))
|
|
9
|
+
return [];
|
|
10
|
+
const group = { _id: "$_id", ...criteria._group };
|
|
11
|
+
return [{ [query_expression_1.default.STAGE_GROUP]: group }];
|
|
12
|
+
};
|
|
13
|
+
exports.queryGroup = queryGroup;
|
|
14
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../libs/mongoose/src/helper/query/engine/group/index.ts"],"names":[],"mappings":";;;AAAA,6DAAuC;AAEvC,qDAAuD;AAItD,CAAC;AAEK,MAAM,UAAU,GAAG,CAAC,EAAE,QAAQ,EAAe,EAAE,EAAE;IACpD,IAAI,CAAC,IAAA,gCAAiB,EAAC,QAAQ,EAAE,MAAM,CAAC;QACpC,OAAO,EAAE,CAAC;IAEd,MAAM,KAAK,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC;IAClD,OAAO,CAAC,EAAE,CAAC,0BAAC,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;AACxC,CAAC,CAAC;AANW,QAAA,UAAU,cAMrB"}
|
|
@@ -4,5 +4,5 @@ export declare const QueryEngine: ({ ConfigSystem, CollectionRef, GroupRef }: {
|
|
|
4
4
|
GroupRef: any;
|
|
5
5
|
}) => {
|
|
6
6
|
queryAggregate: (props: any) => any[];
|
|
7
|
-
queryUpdate: (props: any) => import("
|
|
7
|
+
queryUpdate: (props: any) => import("..").TRemoveUndefinedObject;
|
|
8
8
|
};
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.QueryEngine = void 0;
|
|
4
|
+
const query_expression_1 = require("../query.expression");
|
|
5
|
+
const group_1 = require("./group");
|
|
6
|
+
const match_1 = require("./match");
|
|
7
|
+
const skip_1 = require("./skip");
|
|
8
|
+
const limit_1 = require("./limit");
|
|
9
|
+
const lookup_1 = require("./lookup");
|
|
10
|
+
const unwind_1 = require("./unwind");
|
|
11
|
+
const unset_1 = require("./unset");
|
|
12
|
+
const project_1 = require("./project");
|
|
13
|
+
const sort_1 = require("./sort");
|
|
14
|
+
const query_method_1 = require("../query.method");
|
|
15
|
+
const QueryEngine = ({ ConfigSystem, CollectionRef, GroupRef }) => {
|
|
16
|
+
const _defaultLang = ConfigSystem.LANG_DEFAULT;
|
|
17
|
+
const _collectionRef = (0, query_method_1.getFlattenCollectionRef)(CollectionRef);
|
|
18
|
+
const _groupRef = GroupRef;
|
|
19
|
+
const queryAggregate = (props) => {
|
|
20
|
+
const { condAnd = [], condByField = {}, condByQuery = [], criteria = {}, } = props;
|
|
21
|
+
const match = (0, match_1.queryMatch)({ _defaultLang, condAnd, condByField, condByQuery, criteria });
|
|
22
|
+
const skip = (0, skip_1.querySkip)({ criteria });
|
|
23
|
+
const limit = (0, limit_1.queryLimit)({ criteria });
|
|
24
|
+
const lookup = (0, lookup_1.queryLookup)({ _collectionRef, _groupRef, condAnd, criteria });
|
|
25
|
+
const unwind = (0, unwind_1.queryUnwind)({ criteria });
|
|
26
|
+
const group = (0, group_1.queryGroup)({ criteria });
|
|
27
|
+
const unset = (0, unset_1.queryUnset)({ criteria });
|
|
28
|
+
const project = (0, project_1.queryProject)({ criteria });
|
|
29
|
+
const sort = (0, sort_1.querySort)({ criteria });
|
|
30
|
+
return [].concat(match, skip, limit, lookup, unwind, unset, group, project, sort);
|
|
31
|
+
};
|
|
32
|
+
const queryUpdate = (props) => {
|
|
33
|
+
const { condAnd = [], condByField, criteria } = props;
|
|
34
|
+
return (0, query_method_1.removeUndefined)(condByField, {
|
|
35
|
+
ifEmpty: "500 -> Condition required",
|
|
36
|
+
isCallBackRequired: !criteria?._rawUpdate,
|
|
37
|
+
callback: (condByField) => {
|
|
38
|
+
return (0, match_1.queryMatch)({
|
|
39
|
+
_defaultLang,
|
|
40
|
+
condAnd,
|
|
41
|
+
condByField,
|
|
42
|
+
criteria,
|
|
43
|
+
})[0][query_expression_1.default.STAGE_FACET]["AL"][0][query_expression_1.default.STAGE_MATCH];
|
|
44
|
+
},
|
|
45
|
+
});
|
|
46
|
+
};
|
|
47
|
+
return {
|
|
48
|
+
queryAggregate,
|
|
49
|
+
queryUpdate,
|
|
50
|
+
};
|
|
51
|
+
};
|
|
52
|
+
exports.QueryEngine = QueryEngine;
|
|
53
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../libs/mongoose/src/helper/query/engine/index.ts"],"names":[],"mappings":";;;AAAA,0DAAoC;AACpC,mCAAsC;AACtC,mCAAsC;AACtC,iCAAoC;AACpC,mCAAsC;AACtC,qCAAwC;AACxC,qCAAwC;AACxC,mCAAsC;AACtC,uCAA0C;AAC1C,iCAAoC;AACpC,kDAGyB;AAElB,MAAM,WAAW,GAAG,CAAC,EAAE,YAAY,EAAE,aAAa,EAAE,QAAQ,EAAE,EAAE,EAAE;IACrE,MAAM,YAAY,GAAG,YAAY,CAAC,YAAY,CAAC;IAC/C,MAAM,cAAc,GAAG,IAAA,sCAAuB,EAAC,aAAa,CAAC,CAAC;IAC9D,MAAM,SAAS,GAAG,QAAQ,CAAC;IAO3B,MAAM,cAAc,GAAG,CAAC,KAAK,EAAE,EAAE;QAC7B,MAAM,EACF,OAAO,GAAG,EAAE,EACZ,WAAW,GAAG,EAAE,EAChB,WAAW,GAAG,EAAE,EAChB,QAAQ,GAAG,EAAE,GAChB,GAAG,KAAK,CAAC;QAEV,MAAM,KAAK,GAAG,IAAA,kBAAU,EAAC,EAAE,YAAY,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC,CAAC;QAExF,MAAM,IAAI,GAAG,IAAA,gBAAS,EAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;QAErC,MAAM,KAAK,GAAG,IAAA,kBAAU,EAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;QAEvC,MAAM,MAAM,GAAG,IAAA,oBAAW,EAAC,EAAE,cAAc,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;QAE7E,MAAM,MAAM,GAAG,IAAA,oBAAW,EAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;QAEzC,MAAM,KAAK,GAAG,IAAA,kBAAU,EAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;QAEvC,MAAM,KAAK,GAAG,IAAA,kBAAU,EAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;QAEvC,MAAM,OAAO,GAAG,IAAA,sBAAY,EAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;QAE3C,MAAM,IAAI,GAAG,IAAA,gBAAS,EAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;QACrC,OAAO,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IACtF,CAAC,CAAC;IAOF,MAAM,WAAW,GAAG,CAAC,KAAK,EAAE,EAAE;QAC1B,MAAM,EAAE,OAAO,GAAG,EAAE,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;QACtD,OAAO,IAAA,8BAAe,EAAC,WAAW,EAAE;YAChC,OAAO,EAAE,2BAA2B;YACpC,kBAAkB,EAAE,CAAC,QAAQ,EAAE,UAAU;YACzC,QAAQ,EAAE,CAAC,WAAW,EAAE,EAAE;gBACtB,OAAO,IAAA,kBAAU,EAAC;oBACd,YAAY;oBACZ,OAAO;oBACP,WAAW;oBACX,QAAQ;iBACX,CAAC,CAAC,CAAC,CAAC,CAAC,0BAAC,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,0BAAC,CAAC,WAAW,CAAC,CAAC;YACjD,CAAC;SACJ,CAAC,CAAC;IACP,CAAC,CAAC;IAEF,OAAO;QACH,cAAc;QACd,WAAW;KACd,CAAC;AACN,CAAC,CAAC;AA/DW,QAAA,WAAW,eA+DtB"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.queryLimit = void 0;
|
|
4
|
+
const query_expression_1 = require("../../query.expression");
|
|
5
|
+
;
|
|
6
|
+
const queryLimit = ({ criteria }) => criteria?._limit > 0 ?
|
|
7
|
+
[{ [query_expression_1.default.STAGE_LIMIT]: criteria._limit }] : [];
|
|
8
|
+
exports.queryLimit = queryLimit;
|
|
9
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../libs/mongoose/src/helper/query/engine/limit/index.ts"],"names":[],"mappings":";;;AAAA,6DAAuC;AAKtC,CAAC;AAEK,MAAM,UAAU,GAAG,CAAC,EAAE,QAAQ,EAAe,EAAE,EAAE,CAAC,QAAQ,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC;IAC3E,CAAC,EAAE,CAAC,0BAAC,CAAC,WAAW,CAAC,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AADnC,QAAA,UAAU,cACyB"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.queryLookup = void 0;
|
|
4
|
+
const query_expression_1 = require("../../query.expression");
|
|
5
|
+
const match_1 = require("../match");
|
|
6
|
+
const sort_1 = require("../sort");
|
|
7
|
+
const lookup_pipe_1 = require("./lookup.pipe");
|
|
8
|
+
const queryLookup = ({ _collectionRef, _groupRef, condAnd, criteria }) => {
|
|
9
|
+
const { _lookup } = criteria ?? {};
|
|
10
|
+
const lookupQuery = [];
|
|
11
|
+
if (_lookup?.length > 0) {
|
|
12
|
+
_lookup.map(field => {
|
|
13
|
+
const { _lookupRef } = _collectionRef;
|
|
14
|
+
const lookupRef = _lookupRef[field];
|
|
15
|
+
if (!lookupRef)
|
|
16
|
+
return null;
|
|
17
|
+
const { collection, as, constraint } = lookupRef;
|
|
18
|
+
const { preUnwind, pipelineConditions, pipelineSort, postUnwind, merge, group, sort, } = constraint ?? {};
|
|
19
|
+
lookupQuery.push(...(0, lookup_pipe_1.queryLookup_unwind)(preUnwind));
|
|
20
|
+
const { localVaribales, matchConditions, } = (0, lookup_pipe_1.queryLookup_getValues)(pipelineConditions);
|
|
21
|
+
const matchQuery = (0, match_1.queryMatch)({
|
|
22
|
+
condAnd: [condAnd.find(e => e.key == "language")],
|
|
23
|
+
condByQuery: matchConditions,
|
|
24
|
+
});
|
|
25
|
+
lookupQuery.push({
|
|
26
|
+
[query_expression_1.default.STAGE_LOOKUP]: {
|
|
27
|
+
from: collection,
|
|
28
|
+
let: localVaribales,
|
|
29
|
+
pipeline: [
|
|
30
|
+
...matchQuery,
|
|
31
|
+
...(0, sort_1.querySort)({ criteria: { _sort: pipelineSort } }),
|
|
32
|
+
],
|
|
33
|
+
as: as
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
lookupQuery.push(...(0, lookup_pipe_1.queryLookup_unwind)(postUnwind));
|
|
37
|
+
lookupQuery.push(...(0, lookup_pipe_1.queryLookup_merge)(merge));
|
|
38
|
+
lookupQuery.push(...(0, lookup_pipe_1.queryLookup_group)(_groupRef, group));
|
|
39
|
+
lookupQuery.push(...(0, sort_1.querySort)({ criteria: { _sort: sort } }));
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
;
|
|
43
|
+
return lookupQuery;
|
|
44
|
+
};
|
|
45
|
+
exports.queryLookup = queryLookup;
|
|
46
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../libs/mongoose/src/helper/query/engine/lookup/index.ts"],"names":[],"mappings":";;;AAAA,6DAAuC;AACvC,oCAAsC;AACtC,kCAAoC;AACpC,+CAKuB;AAGhB,MAAM,WAAW,GAAG,CAAC,EAAE,cAAc,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE;IAC5E,MAAM,EAAE,OAAO,EAAE,GAAG,QAAQ,IAAI,EAAE,CAAC;IACnC,MAAM,WAAW,GAAG,EAAE,CAAC;IACvB,IAAI,OAAO,EAAE,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;YAChB,MAAM,EAAE,UAAU,EAAE,GAAG,cAAc,CAAC;YACtC,MAAM,SAAS,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;YACpC,IAAI,CAAC,SAAS;gBAAE,OAAO,IAAI,CAAC;YAE5B,MAAM,EAAE,UAAU,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,SAAS,CAAC;YACjD,MAAM,EACF,SAAS,EACT,kBAAkB,EAClB,YAAY,EACZ,UAAU,EACV,KAAK,EACL,KAAK,EACL,IAAI,GACP,GAAG,UAAU,IAAI,EAAE,CAAC;YAGrB,WAAW,CAAC,IAAI,CAAC,GAAG,IAAA,gCAAkB,EAAC,SAAS,CAAC,CAAC,CAAC;YAEnD,MAAM,EAAE,cAAc,EAAE,eAAe,GAAG,GAAG,IAAA,mCAAqB,EAAC,kBAAkB,CAAC,CAAC;YACvF,MAAM,UAAU,GAAG,IAAA,kBAAU,EAAC;gBAC1B,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,UAAU,CAAC,CAAC;gBACjD,WAAW,EAAE,eAAe;aAC/B,CAAC,CAAC;YAEH,WAAW,CAAC,IAAI,CAAC;gBACb,CAAC,0BAAC,CAAC,YAAY,CAAC,EAAE;oBACd,IAAI,EAAE,UAAU;oBAChB,GAAG,EAAE,cAAc;oBACnB,QAAQ,EAAE;wBACN,GAAG,UAAU;wBACb,GAAG,IAAA,gBAAS,EAAC,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,EAAE,CAAC;qBACtD;oBACD,EAAE,EAAE,EAAE;iBACT;aACJ,CAAC,CAAC;YAEH,WAAW,CAAC,IAAI,CAAC,GAAG,IAAA,gCAAkB,EAAC,UAAU,CAAC,CAAC,CAAC;YAEpD,WAAW,CAAC,IAAI,CAAC,GAAG,IAAA,+BAAiB,EAAC,KAAK,CAAC,CAAC,CAAC;YAE9C,WAAW,CAAC,IAAI,CAAC,GAAG,IAAA,+BAAiB,EAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;YAEzD,WAAW,CAAC,IAAI,CAAC,GAAG,IAAA,gBAAS,EAAC,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;QAClE,CAAC,CAAC,CAAC;IACP,CAAC;IAAA,CAAC;IACF,OAAO,WAAW,CAAC;AACvB,CAAC,CAAC;AAnDW,QAAA,WAAW,eAmDtB"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export declare const queryLookup_unwind: (unwind: any[]) => any[];
|
|
2
|
+
export declare const queryLookup_merge: (mergeObject: any[]) => any[];
|
|
3
|
+
export declare const queryLookup_group: (_groupRef: any, group: any[]) => any[];
|
|
4
|
+
export declare const queryLoopup_matchCondition: (localFieldRefPath: any, foreignFieldPath: any, condition: any) => any;
|
|
5
|
+
export declare const queryLookup_getValues: (conditions: any) => {
|
|
6
|
+
localVaribales: Record<string, string>;
|
|
7
|
+
matchConditions: any;
|
|
8
|
+
};
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.queryLookup_getValues = exports.queryLoopup_matchCondition = exports.queryLookup_group = exports.queryLookup_merge = exports.queryLookup_unwind = void 0;
|
|
4
|
+
const query_expression_1 = require("../../query.expression");
|
|
5
|
+
const query_method_1 = require("../../query.method");
|
|
6
|
+
const queryLookup_unwind = (unwind) => {
|
|
7
|
+
const query = [];
|
|
8
|
+
if (unwind?.length > 0) {
|
|
9
|
+
unwind.forEach(e => {
|
|
10
|
+
if (e.unwind)
|
|
11
|
+
query.push({
|
|
12
|
+
[query_expression_1.default.STAGE_UNWIND]: {
|
|
13
|
+
"path": `$${e.unwind}`,
|
|
14
|
+
"preserveNullAndEmptyArrays": e.unwindPreserve ?? false
|
|
15
|
+
}
|
|
16
|
+
});
|
|
17
|
+
if (e.sort)
|
|
18
|
+
query.push({ [query_expression_1.default.STAGE_SORT]: e.sort });
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
;
|
|
22
|
+
return query;
|
|
23
|
+
};
|
|
24
|
+
exports.queryLookup_unwind = queryLookup_unwind;
|
|
25
|
+
const queryLookup_merge = (mergeObject) => {
|
|
26
|
+
const query = [];
|
|
27
|
+
if (mergeObject?.length > 0) {
|
|
28
|
+
mergeObject.forEach(e => {
|
|
29
|
+
query.push({
|
|
30
|
+
[query_expression_1.default.ADDFIELD]: {
|
|
31
|
+
[e.as]: {
|
|
32
|
+
[query_expression_1.default.MERGEOBJECTS]: e.paths,
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
;
|
|
39
|
+
return query;
|
|
40
|
+
};
|
|
41
|
+
exports.queryLookup_merge = queryLookup_merge;
|
|
42
|
+
const queryLookup_group = (_groupRef, group) => {
|
|
43
|
+
const query = [];
|
|
44
|
+
if (group?.length > 0) {
|
|
45
|
+
group.forEach(e => {
|
|
46
|
+
const { id, groupKey, key, value, move } = e ?? {};
|
|
47
|
+
if (!groupKey || !key)
|
|
48
|
+
return;
|
|
49
|
+
const _id = id ?? "$_id";
|
|
50
|
+
const queryGroup = {
|
|
51
|
+
[query_expression_1.default.STAGE_GROUP]: {
|
|
52
|
+
..._groupRef[groupKey],
|
|
53
|
+
[key]: {
|
|
54
|
+
[query_expression_1.default.EXPR_PUSH]: {
|
|
55
|
+
[query_expression_1.default.EXPR_COND]: [
|
|
56
|
+
{ $ne: [`$${value}`, {}] },
|
|
57
|
+
`$${value}`,
|
|
58
|
+
"$$REMOVE"
|
|
59
|
+
]
|
|
60
|
+
},
|
|
61
|
+
},
|
|
62
|
+
_id: _id,
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
query.push(queryGroup);
|
|
66
|
+
if (!move)
|
|
67
|
+
return;
|
|
68
|
+
move.forEach(e => {
|
|
69
|
+
const { from, to } = e ?? {};
|
|
70
|
+
if (!from || !from)
|
|
71
|
+
return;
|
|
72
|
+
const moveQuery = {
|
|
73
|
+
$addFields: { [to]: `$${from}` },
|
|
74
|
+
};
|
|
75
|
+
query.push(moveQuery);
|
|
76
|
+
});
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
;
|
|
80
|
+
return query;
|
|
81
|
+
};
|
|
82
|
+
exports.queryLookup_group = queryLookup_group;
|
|
83
|
+
const queryLoopup_matchCondition = (localFieldRefPath, foreignFieldPath, condition) => {
|
|
84
|
+
const localField = `$$${localFieldRefPath}`;
|
|
85
|
+
const foreignField = `$${foreignFieldPath}`;
|
|
86
|
+
const sizeIntersection = (a, b) => ({ [query_expression_1.default.EXPR_SIZE]: { [query_expression_1.default.EXPR_SET_INTERSECTION]: [a, b] } });
|
|
87
|
+
const CONDITIONS = {
|
|
88
|
+
EQ: { [query_expression_1.default.EXPR_EQ]: [foreignField, localField] },
|
|
89
|
+
ARRAY_LT: { [query_expression_1.default.EXPR_IN]: [foreignField, localField] },
|
|
90
|
+
ARRAY_RT: { [query_expression_1.default.EXPR_IN]: [localField, foreignField] },
|
|
91
|
+
ARRAY_BO_ONE_EQ_BO: {
|
|
92
|
+
[query_expression_1.default.EXPR_GT]: [sizeIntersection(foreignField, localField), 0]
|
|
93
|
+
},
|
|
94
|
+
ARRAY_BO_ALL_EQ_LT: {
|
|
95
|
+
[query_expression_1.default.EXPR_EQ]: [sizeIntersection(foreignField, localField), { $size: foreignField }]
|
|
96
|
+
},
|
|
97
|
+
ARRAY_BO_ALL_EQ_RT: {
|
|
98
|
+
[query_expression_1.default.EXPR_EQ]: [sizeIntersection(foreignField, localField), { $size: localField }]
|
|
99
|
+
},
|
|
100
|
+
ARRAY_LT_WITH_CHECK: {
|
|
101
|
+
[query_expression_1.default.EXPR_IN]: [foreignField, (0, query_method_1.returnArray)(localField)]
|
|
102
|
+
},
|
|
103
|
+
ARRAY_RT_WITH_CHECK: {
|
|
104
|
+
[query_expression_1.default.EXPR_IN]: [foreignField, (0, query_method_1.returnArray)(foreignField)]
|
|
105
|
+
},
|
|
106
|
+
};
|
|
107
|
+
const __MAP_COND__ = CONDITIONS[condition] ?? { [query_expression_1.default.EXPR_EQ]: [foreignField, localField] };
|
|
108
|
+
return __MAP_COND__;
|
|
109
|
+
};
|
|
110
|
+
exports.queryLoopup_matchCondition = queryLoopup_matchCondition;
|
|
111
|
+
const queryLookup_getValues = (conditions) => {
|
|
112
|
+
const localVaribales = {};
|
|
113
|
+
const matchConditions = conditions.map((condition) => {
|
|
114
|
+
localVaribales[condition.localFieldRefPath] = `$${condition.localFieldPath}`;
|
|
115
|
+
return (0, exports.queryLoopup_matchCondition)(condition.localFieldRefPath, condition.foreignFieldPath, condition.type);
|
|
116
|
+
});
|
|
117
|
+
return {
|
|
118
|
+
localVaribales,
|
|
119
|
+
matchConditions,
|
|
120
|
+
};
|
|
121
|
+
};
|
|
122
|
+
exports.queryLookup_getValues = queryLookup_getValues;
|
|
123
|
+
//# sourceMappingURL=lookup.pipe.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lookup.pipe.js","sourceRoot":"","sources":["../../../../../../../libs/mongoose/src/helper/query/engine/lookup/lookup.pipe.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
export declare const queryMatch: (props: any) => ({
|
|
2
|
+
[x: string]: {
|
|
3
|
+
$or: any[];
|
|
4
|
+
};
|
|
5
|
+
} | {
|
|
6
|
+
[x: string]: {
|
|
7
|
+
[x: string]: {
|
|
8
|
+
[x: string]: any[];
|
|
9
|
+
};
|
|
10
|
+
};
|
|
11
|
+
})[] | ({
|
|
12
|
+
[x: string]: {
|
|
13
|
+
$or: any[];
|
|
14
|
+
};
|
|
15
|
+
} | {
|
|
16
|
+
[x: string]: {
|
|
17
|
+
DL: {
|
|
18
|
+
[x: string]: {
|
|
19
|
+
[x: string]: {
|
|
20
|
+
[x: string]: any[];
|
|
21
|
+
};
|
|
22
|
+
};
|
|
23
|
+
}[];
|
|
24
|
+
AL: {
|
|
25
|
+
[x: string]: {
|
|
26
|
+
[x: string]: {
|
|
27
|
+
[x: string]: any[];
|
|
28
|
+
};
|
|
29
|
+
};
|
|
30
|
+
}[];
|
|
31
|
+
};
|
|
32
|
+
} | {
|
|
33
|
+
[x: string]: {
|
|
34
|
+
doc: {
|
|
35
|
+
[x: string]: {
|
|
36
|
+
[x: string]: string | {
|
|
37
|
+
[x: string]: (string | {
|
|
38
|
+
[x: string]: (number | {
|
|
39
|
+
[x: string]: {
|
|
40
|
+
[x: string]: string | {
|
|
41
|
+
[x: string]: string[];
|
|
42
|
+
};
|
|
43
|
+
};
|
|
44
|
+
})[];
|
|
45
|
+
})[];
|
|
46
|
+
};
|
|
47
|
+
};
|
|
48
|
+
};
|
|
49
|
+
};
|
|
50
|
+
} | {
|
|
51
|
+
[x: string]: string;
|
|
52
|
+
} | {
|
|
53
|
+
[x: string]: {
|
|
54
|
+
[x: string]: string;
|
|
55
|
+
};
|
|
56
|
+
})[];
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.queryMatch = void 0;
|
|
4
|
+
const query_expression_1 = require("../../query.expression");
|
|
5
|
+
const match_search_1 = require("./match.search");
|
|
6
|
+
const queryMatch = (props) => {
|
|
7
|
+
const { _defaultLang, condAnd = [], condByField = {}, condByQuery = [], criteria = {}, } = props;
|
|
8
|
+
const { _or } = criteria;
|
|
9
|
+
const expr = _or == true ? query_expression_1.default.EXPR_OR : query_expression_1.default.EXPR_AND;
|
|
10
|
+
const condByFieldQuery = Object.keys(condByField).map(e => ({ [query_expression_1.default.EXPR_EQ]: [`$${e}`, condByField[e]] }));
|
|
11
|
+
if (condByQuery.length == 0 && condByFieldQuery.length == 0)
|
|
12
|
+
throw "500 -> Query required";
|
|
13
|
+
let skipFacet = false;
|
|
14
|
+
const condAndQuery = (lang) => condAnd
|
|
15
|
+
.filter(e => e.value != undefined)
|
|
16
|
+
.map(e => {
|
|
17
|
+
if (e.key == "language") {
|
|
18
|
+
if (lang == e.value)
|
|
19
|
+
skipFacet = true;
|
|
20
|
+
return { [query_expression_1.default.EXPR_EQ]: [`$${e.key}`, lang ? lang : e.value] };
|
|
21
|
+
}
|
|
22
|
+
return { [query_expression_1.default.EXPR_EQ]: [`$${e.key}`, e.value] };
|
|
23
|
+
});
|
|
24
|
+
const match = (lang) => ({
|
|
25
|
+
[query_expression_1.default.STAGE_MATCH]: {
|
|
26
|
+
[query_expression_1.default.EXPR]: {
|
|
27
|
+
[query_expression_1.default.EXPR_AND]: [
|
|
28
|
+
...condAndQuery(lang),
|
|
29
|
+
...(condByQuery.length > 0 ? condByQuery : [{ [expr]: condByFieldQuery }])
|
|
30
|
+
]
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
const defaultMatch = match(_defaultLang);
|
|
35
|
+
if (skipFacet)
|
|
36
|
+
return [
|
|
37
|
+
...(0, match_search_1.querySearch)({ criteria }),
|
|
38
|
+
defaultMatch,
|
|
39
|
+
];
|
|
40
|
+
return [
|
|
41
|
+
...(0, match_search_1.querySearch)({ criteria }),
|
|
42
|
+
{
|
|
43
|
+
[query_expression_1.default.STAGE_FACET]: { DL: [defaultMatch], AL: [match()] },
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
[query_expression_1.default.STAGE_PROJECT]: {
|
|
47
|
+
"doc": {
|
|
48
|
+
[query_expression_1.default.MAP.MAP]: {
|
|
49
|
+
[query_expression_1.default.MAP.INPUT]: "$DL",
|
|
50
|
+
[query_expression_1.default.MAP.AS]: "item_DL",
|
|
51
|
+
[query_expression_1.default.MAP.IN]: {
|
|
52
|
+
[query_expression_1.default.MERGEOBJECTS]: [
|
|
53
|
+
"$$item_DL",
|
|
54
|
+
{
|
|
55
|
+
[query_expression_1.default.ARRAYELEMAT]: [
|
|
56
|
+
{
|
|
57
|
+
[query_expression_1.default.FILTER.FILTER]: {
|
|
58
|
+
[query_expression_1.default.FILTER.INPUT]: "$AL",
|
|
59
|
+
[query_expression_1.default.FILTER.AS]: "item_AL",
|
|
60
|
+
[query_expression_1.default.FILTER.COND]: { [query_expression_1.default.EXPR_EQ]: ["$$item_DL._uid", "$$item_AL._uid"] }
|
|
61
|
+
}
|
|
62
|
+
},
|
|
63
|
+
0
|
|
64
|
+
]
|
|
65
|
+
}
|
|
66
|
+
]
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
},
|
|
72
|
+
{ [query_expression_1.default.STAGE_UNWIND]: "$doc" },
|
|
73
|
+
{ [query_expression_1.default.STAGE_REPLACEROOT.REPLACEROOT]: { [query_expression_1.default.STAGE_REPLACEROOT.NEW_ROOT]: "$doc" } }
|
|
74
|
+
];
|
|
75
|
+
};
|
|
76
|
+
exports.queryMatch = queryMatch;
|
|
77
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../libs/mongoose/src/helper/query/engine/match/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.querySearch = void 0;
|
|
4
|
+
const query_expression_1 = require("../../query.expression");
|
|
5
|
+
const querySearch = ({ criteria }) => {
|
|
6
|
+
const { _search } = criteria ?? {};
|
|
7
|
+
const { _searchWord, _searchChar, _searchCharFields } = _search ?? {};
|
|
8
|
+
if (!_searchWord && (!_searchChar || !criteria._searchCharFields?.length))
|
|
9
|
+
return [];
|
|
10
|
+
const searchWordQuery = !_searchWord ? [] :
|
|
11
|
+
[{
|
|
12
|
+
[query_expression_1.default.TEXT]: {
|
|
13
|
+
[query_expression_1.default.SEARCH]: _searchWord
|
|
14
|
+
},
|
|
15
|
+
}];
|
|
16
|
+
const searchCharQuery = (fields) => !fields ? [] :
|
|
17
|
+
fields.map(searchField => {
|
|
18
|
+
return {
|
|
19
|
+
[searchField]: {
|
|
20
|
+
"$regex": _searchChar,
|
|
21
|
+
"$options": "i"
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
});
|
|
25
|
+
return [
|
|
26
|
+
{
|
|
27
|
+
[query_expression_1.default.STAGE_MATCH]: {
|
|
28
|
+
"$or": [
|
|
29
|
+
...searchWordQuery,
|
|
30
|
+
...searchCharQuery(_searchCharFields),
|
|
31
|
+
]
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
];
|
|
35
|
+
};
|
|
36
|
+
exports.querySearch = querySearch;
|
|
37
|
+
//# sourceMappingURL=match.search.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"match.search.js","sourceRoot":"","sources":["../../../../../../../libs/mongoose/src/helper/query/engine/match/match.search.ts"],"names":[],"mappings":";;;AAAA,6DAAuC;AAEhC,MAAM,WAAW,GAAG,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE;IACxC,MAAM,EAAE,OAAO,EAAE,GAAG,QAAQ,IAAI,EAAE,CAAC;IACnC,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,iBAAiB,EAAE,GAAG,OAAO,IAAI,EAAE,CAAC;IACtE,IAAI,CAAC,WAAW,IAAI,CAAC,CAAC,WAAW,IAAI,CAAC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;QACrE,OAAO,EAAE,CAAC;IAGd,MAAM,eAAe,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACvC,CAAC;gBACG,CAAC,0BAAC,CAAC,IAAI,CAAC,EAAE;oBACN,CAAC,0BAAC,CAAC,MAAM,CAAC,EAAE,WAAW;iBAC1B;aACJ,CAAC,CAAC;IAGP,MAAM,eAAe,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC9C,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE;YACrB,OAAO;gBACH,CAAC,WAAW,CAAC,EAAE;oBACX,QAAQ,EAAE,WAAW;oBACrB,UAAU,EAAE,GAAG;iBAClB;aACJ,CAAA;QACL,CAAC,CAAC,CAAC;IAEP,OAAO;QACH;YACI,CAAC,0BAAC,CAAC,WAAW,CAAC,EAAE;gBACb,KAAK,EAAE;oBACH,GAAG,eAAe;oBAClB,GAAG,eAAe,CAAC,iBAAiB,CAAC;iBACxC;aACJ;SACJ;KACJ,CAAC;AACN,CAAC,CAAC;AAnCW,QAAA,WAAW,eAmCtB"}
|