@klerick/json-api-nestjs 10.0.0-beta.9 → 10.1.0
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 +176 -0
- package/README.md +299 -23
- package/package.json +4 -8
- package/src/index.d.ts +3 -2
- package/src/index.js +4 -1
- package/src/index.js.map +1 -1
- package/src/lib/constants/di.d.ts +1 -0
- package/src/lib/constants/di.js +2 -1
- package/src/lib/constants/di.js.map +1 -1
- package/src/lib/json-api.module.js +3 -2
- package/src/lib/json-api.module.js.map +1 -1
- package/src/lib/modules/atomic-operation/atomic-operation.module.d.ts +1 -2
- package/src/lib/modules/atomic-operation/atomic-operation.module.js +6 -5
- package/src/lib/modules/atomic-operation/atomic-operation.module.js.map +1 -1
- package/src/lib/modules/atomic-operation/controllers/operation.controller.js +4 -4
- package/src/lib/modules/atomic-operation/controllers/operation.controller.js.map +1 -1
- package/src/lib/modules/atomic-operation/factory/map-controller-entity.d.ts +1 -2
- package/src/lib/modules/atomic-operation/factory/map-controller-entity.js +8 -7
- package/src/lib/modules/atomic-operation/factory/map-controller-entity.js.map +1 -1
- package/src/lib/modules/atomic-operation/pipes/input-operation.pipe.js.map +1 -1
- package/src/lib/modules/atomic-operation/service/execute.service.d.ts +13 -3
- package/src/lib/modules/atomic-operation/service/execute.service.js +80 -33
- package/src/lib/modules/atomic-operation/service/execute.service.js.map +1 -1
- package/src/lib/modules/atomic-operation/service/explorer.service.js +10 -6
- package/src/lib/modules/atomic-operation/service/explorer.service.js.map +1 -1
- package/src/lib/modules/atomic-operation/service/swagger.service.js +6 -6
- package/src/lib/modules/atomic-operation/service/swagger.service.js.map +1 -1
- package/src/lib/modules/atomic-operation/utils/zod/zod-helper.d.ts +14 -7
- package/src/lib/modules/atomic-operation/utils/zod/zod-helper.js +12 -9
- package/src/lib/modules/atomic-operation/utils/zod/zod-helper.js.map +1 -1
- package/src/lib/modules/mixin/config/bindings.js +20 -0
- package/src/lib/modules/mixin/config/bindings.js.map +1 -1
- package/src/lib/modules/mixin/controllers/json-base.controller.d.ts +5 -5
- package/src/lib/modules/mixin/controllers/json-base.controller.js +5 -5
- package/src/lib/modules/mixin/controllers/json-base.controller.js.map +1 -1
- package/src/lib/modules/mixin/decorators/index.d.ts +1 -0
- package/src/lib/modules/mixin/decorators/index.js +1 -0
- package/src/lib/modules/mixin/decorators/index.js.map +1 -1
- package/src/lib/modules/mixin/decorators/json-api-response-from/json-api-response-from.decorator.d.ts +19 -0
- package/src/lib/modules/mixin/decorators/json-api-response-from/json-api-response-from.decorator.js +35 -0
- package/src/lib/modules/mixin/decorators/json-api-response-from/json-api-response-from.decorator.js.map +1 -0
- package/src/lib/modules/mixin/factory/zod-validate.factory.d.ts +2 -1
- package/src/lib/modules/mixin/factory/zod-validate.factory.js +5 -1
- package/src/lib/modules/mixin/factory/zod-validate.factory.js.map +1 -1
- package/src/lib/modules/mixin/helpers/bind-controller.js +4 -1
- package/src/lib/modules/mixin/helpers/bind-controller.js.map +1 -1
- package/src/lib/modules/mixin/mixin.module.js +1 -0
- package/src/lib/modules/mixin/mixin.module.js.map +1 -1
- package/src/lib/modules/mixin/pipe/index.d.ts +1 -0
- package/src/lib/modules/mixin/pipe/index.js +5 -0
- package/src/lib/modules/mixin/pipe/index.js.map +1 -1
- package/src/lib/modules/mixin/pipe/meta-extractor/index.d.ts +1 -0
- package/src/lib/modules/mixin/pipe/meta-extractor/index.js +5 -0
- package/src/lib/modules/mixin/pipe/meta-extractor/index.js.map +1 -0
- package/src/lib/modules/mixin/pipe/meta-extractor/meta-extractor.pipe.d.ts +6 -0
- package/src/lib/modules/mixin/pipe/meta-extractor/meta-extractor.pipe.js +27 -0
- package/src/lib/modules/mixin/pipe/meta-extractor/meta-extractor.pipe.js.map +1 -0
- package/src/lib/modules/mixin/service/json-api-transformer.service.d.ts +2 -2
- package/src/lib/modules/mixin/service/json-api-transformer.service.js.map +1 -1
- package/src/lib/modules/mixin/swagger/error-response-model.d.ts +11 -0
- package/src/lib/modules/mixin/swagger/error-response-model.js +63 -0
- package/src/lib/modules/mixin/swagger/error-response-model.js.map +1 -0
- package/src/lib/modules/mixin/swagger/method/delete-one.js +3 -3
- package/src/lib/modules/mixin/swagger/method/delete-one.js.map +1 -1
- package/src/lib/modules/mixin/swagger/method/delete-relationship.js +6 -6
- package/src/lib/modules/mixin/swagger/method/delete-relationship.js.map +1 -1
- package/src/lib/modules/mixin/swagger/method/get-all.js +9 -39
- package/src/lib/modules/mixin/swagger/method/get-all.js.map +1 -1
- package/src/lib/modules/mixin/swagger/method/get-one.js +5 -5
- package/src/lib/modules/mixin/swagger/method/get-one.js.map +1 -1
- package/src/lib/modules/mixin/swagger/method/get-relationship.js +5 -4
- package/src/lib/modules/mixin/swagger/method/get-relationship.js.map +1 -1
- package/src/lib/modules/mixin/swagger/method/patch-one.js +5 -5
- package/src/lib/modules/mixin/swagger/method/patch-one.js.map +1 -1
- package/src/lib/modules/mixin/swagger/method/patch-relationship.js +7 -7
- package/src/lib/modules/mixin/swagger/method/patch-relationship.js.map +1 -1
- package/src/lib/modules/mixin/swagger/method/post-one.js +5 -5
- package/src/lib/modules/mixin/swagger/method/post-one.js.map +1 -1
- package/src/lib/modules/mixin/swagger/method/post-relationship.js +7 -7
- package/src/lib/modules/mixin/swagger/method/post-relationship.js.map +1 -1
- package/src/lib/modules/mixin/swagger/open-api-types.d.ts +18 -0
- package/src/lib/modules/mixin/swagger/open-api-types.js +3 -0
- package/src/lib/modules/mixin/swagger/open-api-types.js.map +1 -0
- package/src/lib/modules/mixin/swagger/swagger-bind.service.d.ts +1 -0
- package/src/lib/modules/mixin/swagger/swagger-bind.service.js +52 -13
- package/src/lib/modules/mixin/swagger/swagger-bind.service.js.map +1 -1
- package/src/lib/modules/mixin/swagger/utils.d.ts +17 -142
- package/src/lib/modules/mixin/swagger/utils.js +178 -124
- package/src/lib/modules/mixin/swagger/utils.js.map +1 -1
- package/src/lib/modules/mixin/zod/index.d.ts +1 -1
- package/src/lib/modules/mixin/zod/index.js +4 -0
- package/src/lib/modules/mixin/zod/index.js.map +1 -1
- package/src/lib/modules/mixin/zod/map-transform-to-json-shema.d.ts +2 -0
- package/src/lib/modules/mixin/zod/map-transform-to-json-shema.js +10 -0
- package/src/lib/modules/mixin/zod/map-transform-to-json-shema.js.map +1 -1
- package/src/lib/modules/mixin/zod/zod-input-patch-relationship-schema/index.d.ts +8 -0
- package/src/lib/modules/mixin/zod/zod-input-patch-relationship-schema/index.js +8 -3
- package/src/lib/modules/mixin/zod/zod-input-patch-relationship-schema/index.js.map +1 -1
- package/src/lib/modules/mixin/zod/zod-input-patch-schema/index.d.ts +3 -1
- package/src/lib/modules/mixin/zod/zod-input-patch-schema/index.js +1 -0
- package/src/lib/modules/mixin/zod/zod-input-patch-schema/index.js.map +1 -1
- package/src/lib/modules/mixin/zod/zod-input-post-relationship-schema/index.d.ts +1 -0
- package/src/lib/modules/mixin/zod/zod-input-post-relationship-schema/index.js +1 -0
- package/src/lib/modules/mixin/zod/zod-input-post-relationship-schema/index.js.map +1 -1
- package/src/lib/modules/mixin/zod/zod-input-post-schema/index.d.ts +4 -2
- package/src/lib/modules/mixin/zod/zod-input-post-schema/index.js +2 -1
- package/src/lib/modules/mixin/zod/zod-input-post-schema/index.js.map +1 -1
- package/src/lib/modules/mixin/zod/zod-input-query-schema/fields.d.ts +8 -5
- package/src/lib/modules/mixin/zod/zod-input-query-schema/fields.js +16 -12
- package/src/lib/modules/mixin/zod/zod-input-query-schema/fields.js.map +1 -1
- package/src/lib/modules/mixin/zod/zod-input-query-schema/filter.d.ts +76 -6
- package/src/lib/modules/mixin/zod/zod-input-query-schema/filter.js +32 -10
- package/src/lib/modules/mixin/zod/zod-input-query-schema/filter.js.map +1 -1
- package/src/lib/modules/mixin/zod/zod-input-query-schema/index.d.ts +40 -15
- package/src/lib/modules/mixin/zod/zod-input-query-schema/index.js +3 -1
- package/src/lib/modules/mixin/zod/zod-input-query-schema/index.js.map +1 -1
- package/src/lib/modules/mixin/zod/zod-query-schema/fields.d.ts +1 -1
- package/src/lib/modules/mixin/zod/zod-query-schema/fields.js +5 -4
- package/src/lib/modules/mixin/zod/zod-query-schema/fields.js.map +1 -1
- package/src/lib/modules/mixin/zod/zod-query-schema/filter.d.ts +4 -2
- package/src/lib/modules/mixin/zod/zod-query-schema/filter.js +19 -8
- package/src/lib/modules/mixin/zod/zod-query-schema/filter.js.map +1 -1
- package/src/lib/modules/mixin/zod/zod-query-schema/include.d.ts +9 -2
- package/src/lib/modules/mixin/zod/zod-query-schema/include.js +2 -1
- package/src/lib/modules/mixin/zod/zod-query-schema/include.js.map +1 -1
- package/src/lib/modules/mixin/zod/zod-query-schema/sort.d.ts +2 -2
- package/src/lib/modules/mixin/zod/zod-query-schema/sort.js +5 -4
- package/src/lib/modules/mixin/zod/zod-query-schema/sort.js.map +1 -1
- package/src/lib/modules/mixin/zod/zod-share/attributes.d.ts +12 -6
- package/src/lib/modules/mixin/zod/zod-share/attributes.js +30 -11
- package/src/lib/modules/mixin/zod/zod-share/attributes.js.map +1 -1
- package/src/lib/modules/mixin/zod/zod-share/id.d.ts +12 -0
- package/src/lib/modules/mixin/zod/zod-share/id.js +17 -0
- package/src/lib/modules/mixin/zod/zod-share/id.js.map +1 -1
- package/src/lib/modules/mixin/zod/zod-share/index.d.ts +1 -0
- package/src/lib/modules/mixin/zod/zod-share/index.js +1 -0
- package/src/lib/modules/mixin/zod/zod-share/index.js.map +1 -1
- package/src/lib/modules/mixin/zod/zod-share/meta.d.ts +11 -0
- package/src/lib/modules/mixin/zod/zod-share/meta.js +15 -0
- package/src/lib/modules/mixin/zod/zod-share/meta.js.map +1 -0
- package/src/lib/modules/mixin/zod/zod-share/page.d.ts +2 -2
- package/src/lib/modules/mixin/zod/zod-utils.d.ts +2 -0
- package/src/lib/modules/mixin/zod/zod-utils.js +20 -0
- package/src/lib/modules/mixin/zod/zod-utils.js.map +1 -1
- package/src/lib/types/entity-param.type.d.ts +21 -7
- package/src/lib/types/module-options.types.d.ts +1 -0
- package/src/lib/utils/column-type.d.ts +13 -0
- package/src/lib/utils/column-type.js +27 -0
- package/src/lib/utils/column-type.js.map +1 -0
- package/src/lib/utils/index.d.ts +1 -0
- package/src/lib/utils/index.js +1 -0
- package/src/lib/utils/index.js.map +1 -1
- package/src/lib/utils/module-helper.js +1 -0
- package/src/lib/utils/module-helper.js.map +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Union, Object } from 'ts-toolbelt';
|
|
2
|
-
import {
|
|
2
|
+
import { AttrKeys, RelationKeys, IsIterator, Constructor } from '@klerick/json-api-nestjs-shared';
|
|
3
3
|
import { CastIteratorType, UnionToTuple, IsArray, CastArrayType } from './utils-type';
|
|
4
4
|
type ExtractBaseType<T> = T extends Date ? Date : T extends boolean ? boolean : T extends number ? number : T extends string ? string : T extends null ? null : T extends undefined ? undefined : T extends (infer U)[] ? U[] : object;
|
|
5
5
|
export declare enum TypeField {
|
|
@@ -14,15 +14,28 @@ export declare enum TypeField {
|
|
|
14
14
|
export type TypeForId = Extract<TypeField, TypeField.number | TypeField.string>;
|
|
15
15
|
type TypeProps<T> = T extends Date ? TypeField.date : T extends any[] ? TypeField.array : T extends object ? TypeField.object : T extends boolean ? TypeField.boolean : T extends number ? TypeField.number : T extends string ? TypeField.string : T extends undefined ? never : TypeField.object;
|
|
16
16
|
export type PropertyWithType<E extends object, IdKey extends string = 'id'> = {
|
|
17
|
-
[K in
|
|
17
|
+
[K in AttrKeys<E, IdKey>]: Exclude<E[K], null | undefined> extends never ? TypeField.null : TypeProps<ExtractBaseType<Exclude<E[K], null | undefined>>>;
|
|
18
18
|
};
|
|
19
19
|
export type ArrayProperty<E extends object, IdKey extends string = 'id'> = {
|
|
20
|
-
[K in
|
|
21
|
-
}[
|
|
20
|
+
[K in AttrKeys<E, IdKey>]: Exclude<E[K], null | undefined> extends never ? never : IsArray<Exclude<E[K], null | undefined>> extends 1 ? K : never;
|
|
21
|
+
}[AttrKeys<E, IdKey>];
|
|
22
22
|
export type ArrayPropertyType<E extends object, IdKey extends string = 'id'> = {
|
|
23
23
|
[K in ArrayProperty<E, IdKey>]: TypeProps<CastArrayType<Exclude<E[K], null | undefined>>>;
|
|
24
24
|
};
|
|
25
|
-
export type
|
|
25
|
+
export type DateProperty<E extends object, IdKey extends string = 'id'> = {
|
|
26
|
+
[K in AttrKeys<E, IdKey>]: Exclude<E[K], null | undefined> extends Date ? K : never;
|
|
27
|
+
}[AttrKeys<E, IdKey>];
|
|
28
|
+
/**
|
|
29
|
+
* Whether a date column carries a timezone, keyed by property. True for types
|
|
30
|
+
* like `timestamptz`, false for `timestamp without time zone`.
|
|
31
|
+
*
|
|
32
|
+
* Only the runtime metadata knows this -- both column kinds surface as `Date`
|
|
33
|
+
* in TypeScript -- so a property is absent whenever the adapter could not read
|
|
34
|
+
* a column type. Absent is read as "carries a timezone", the stricter of the
|
|
35
|
+
* two, which keeps a zone mandatory for anything not positively identified.
|
|
36
|
+
*/
|
|
37
|
+
export type DatePropertyTimezone<E extends object, IdKey extends string = 'id'> = Partial<Record<DateProperty<E, IdKey>, boolean>>;
|
|
38
|
+
export type NullableProperty<E extends object, IdKey extends string = 'id'> = Union.Intersect<Object.NullableKeys<E>, AttrKeys<E, IdKey>>;
|
|
26
39
|
export type RelationProperty<E extends object, IdKey extends string = 'id'> = {
|
|
27
40
|
[K in RelationKeys<E, IdKey>]: {
|
|
28
41
|
entityClass: Constructor<CastIteratorType<E[K]>>;
|
|
@@ -32,9 +45,10 @@ export type RelationProperty<E extends object, IdKey extends string = 'id'> = {
|
|
|
32
45
|
};
|
|
33
46
|
type PrimaryType<E extends object, IdKey extends string = 'id'> = IdKey extends keyof E ? TypeProps<E[IdKey]> extends TypeField ? TypeProps<E[IdKey]> : TypeField.string : TypeField.string;
|
|
34
47
|
export type EntityParam<E extends object, IdKey extends string = 'id'> = {
|
|
35
|
-
props: UnionToTuple<
|
|
48
|
+
props: UnionToTuple<AttrKeys<E, IdKey>>;
|
|
36
49
|
propsType: PropertyWithType<E, IdKey>;
|
|
37
50
|
propsArrayType: ArrayPropertyType<E, IdKey>;
|
|
51
|
+
propsDateTimezone?: DatePropertyTimezone<E, IdKey>;
|
|
38
52
|
propsNullable: UnionToTuple<NullableProperty<E, IdKey>>;
|
|
39
53
|
primaryColumnName: IdKey;
|
|
40
54
|
primaryColumnType: PrimaryType<E, IdKey>;
|
|
@@ -46,6 +60,6 @@ export type EntityParam<E extends object, IdKey extends string = 'id'> = {
|
|
|
46
60
|
};
|
|
47
61
|
type RelationType<E extends object, IdKey extends string, K extends keyof EntityParam<E, IdKey>['relationProperty']> = EntityParam<E, IdKey>['relationProperty'][K]['entityClass'] extends Constructor<infer T> ? Exclude<T, null> : never;
|
|
48
62
|
export type EntityRelationProps<E extends object, IdKey extends string = 'id'> = {
|
|
49
|
-
[K in keyof EntityParam<E, IdKey>['relationProperty']]: UnionToTuple<
|
|
63
|
+
[K in keyof EntityParam<E, IdKey>['relationProperty']]: UnionToTuple<AttrKeys<RelationType<E, IdKey, K>>>;
|
|
50
64
|
};
|
|
51
65
|
export {};
|
|
@@ -5,6 +5,7 @@ import { NestController, NestImport, NestProvider, PipeMixin } from './common-ty
|
|
|
5
5
|
import { ExtractNestType, IfEquals } from './utils-type';
|
|
6
6
|
type ModuleCommonParams = {
|
|
7
7
|
entities: NonEmptyArray<EntityClass<AnyEntity>>;
|
|
8
|
+
excludeControllers?: EntityClass<AnyEntity>[];
|
|
8
9
|
connectionName?: string;
|
|
9
10
|
controllers?: NestController;
|
|
10
11
|
providers?: NestProvider;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Whether a database column type stores a timezone alongside the value.
|
|
3
|
+
*
|
|
4
|
+
* The adapters read the column type from their own metadata and hand the raw
|
|
5
|
+
* string here, so the dialect spellings live in one place: Postgres reports
|
|
6
|
+
* `timestamp with time zone` or the `timestamptz` shorthand, MikroORM adds the
|
|
7
|
+
* precision inside the phrase (`timestamp(0) with time zone`), and MySQL and
|
|
8
|
+
* SQL Server have no timezone-aware type at all.
|
|
9
|
+
*
|
|
10
|
+
* `without time zone` has to be ruled out before `with time zone` is looked
|
|
11
|
+
* for, since the former contains the latter as a substring.
|
|
12
|
+
*/
|
|
13
|
+
export declare function isTimezoneAwareColumnType(columnType: unknown): boolean;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isTimezoneAwareColumnType = isTimezoneAwareColumnType;
|
|
4
|
+
/**
|
|
5
|
+
* Whether a database column type stores a timezone alongside the value.
|
|
6
|
+
*
|
|
7
|
+
* The adapters read the column type from their own metadata and hand the raw
|
|
8
|
+
* string here, so the dialect spellings live in one place: Postgres reports
|
|
9
|
+
* `timestamp with time zone` or the `timestamptz` shorthand, MikroORM adds the
|
|
10
|
+
* precision inside the phrase (`timestamp(0) with time zone`), and MySQL and
|
|
11
|
+
* SQL Server have no timezone-aware type at all.
|
|
12
|
+
*
|
|
13
|
+
* `without time zone` has to be ruled out before `with time zone` is looked
|
|
14
|
+
* for, since the former contains the latter as a substring.
|
|
15
|
+
*/
|
|
16
|
+
function isTimezoneAwareColumnType(columnType) {
|
|
17
|
+
if (typeof columnType !== 'string') {
|
|
18
|
+
return false;
|
|
19
|
+
}
|
|
20
|
+
const normalized = columnType.toLowerCase();
|
|
21
|
+
if (normalized.includes('without time zone')) {
|
|
22
|
+
return false;
|
|
23
|
+
}
|
|
24
|
+
return (normalized.includes('with time zone') ||
|
|
25
|
+
/\b(timestamptz|timetz)\b/.test(normalized));
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=column-type.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"column-type.js","sourceRoot":"","sources":["../../../../../../../libs/json-api/json-api-nestjs/src/lib/utils/column-type.ts"],"names":[],"mappings":";;AAYA,8DAeC;AA3BD;;;;;;;;;;;GAWG;AACH,SAAgB,yBAAyB,CAAC,UAAmB;IAC3D,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE,CAAC;QACnC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,UAAU,GAAG,UAAU,CAAC,WAAW,EAAE,CAAC;IAE5C,IAAI,UAAU,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC;QAC7C,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,CACL,UAAU,CAAC,QAAQ,CAAC,gBAAgB,CAAC;QACrC,0BAA0B,CAAC,IAAI,CAAC,UAAU,CAAC,CAC5C,CAAC;AACJ,CAAC"}
|
package/src/lib/utils/index.d.ts
CHANGED
package/src/lib/utils/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../libs/json-api/json-api-nestjs/src/lib/utils/index.ts"],"names":[],"mappings":";;;AAAA,0DAAgC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../libs/json-api/json-api-nestjs/src/lib/utils/index.ts"],"names":[],"mappings":";;;AAAA,0DAAgC;AAChC,wDAA8B"}
|
|
@@ -12,6 +12,7 @@ function prepareConfig(moduleParams) {
|
|
|
12
12
|
providers: moduleParams['providers'] || [],
|
|
13
13
|
controllers: moduleParams['controllers'] || [],
|
|
14
14
|
entities: moduleParams['entities'],
|
|
15
|
+
excludeControllers: moduleParams['excludeControllers'] || [],
|
|
15
16
|
options: {
|
|
16
17
|
...options,
|
|
17
18
|
operationUrl: options['operationUrl'] || undefined,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module-helper.js","sourceRoot":"","sources":["../../../../../../../libs/json-api/json-api-nestjs/src/lib/utils/module-helper.ts"],"names":[],"mappings":";;AAcA,
|
|
1
|
+
{"version":3,"file":"module-helper.js","sourceRoot":"","sources":["../../../../../../../libs/json-api/json-api-nestjs/src/lib/utils/module-helper.ts"],"names":[],"mappings":";;AAcA,sCAwBC;AAED,sCAQC;AAhDD,2CAA8C;AAS9C,4CAGsB;AAEtB,SAAgB,aAAa,CAC3B,YAA+B;IAE/B,MAAM,OAAO,GAAG,YAAY,CAAC,SAAS,CAAC,IAAK,EAAgC,CAAC;IAE7E,OAAO;QACL,cAAc,EAAE,YAAY,CAAC,gBAAgB,CAAC,IAAI,mCAAuB;QACzE,OAAO,EAAE,YAAY,CAAC,SAAS,CAAC,IAAI,EAAE;QACtC,SAAS,EAAE,YAAY,CAAC,WAAW,CAAC,IAAI,EAAE;QAC1C,WAAW,EAAE,YAAY,CAAC,aAAa,CAAC,IAAI,EAAE;QAC9C,QAAQ,EAAE,YAAY,CAAC,UAAU,CAAC;QAClC,kBAAkB,EAAE,YAAY,CAAC,oBAAoB,CAAC,IAAI,EAAE;QAC5D,OAAO,EAAE;YACP,GAAG,OAAO;YACV,YAAY,EAAE,OAAO,CAAC,cAAc,CAAC,IAAI,SAAS;YAClD,mBAAmB,EAAE,CAAC,CAAC,OAAO,CAAC,qBAAqB,CAAC;YACrD,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;YACzB,SAAS,EAAE,OAAO,CAAC,WAAW,CAAC,IAAI,qBAAY;YAC/C,UAAU,EAAE,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC;SACpC;QACD,KAAK,EAAE;YACL,qBAAqB,EAAE,YAAY,CAAC,OAAO,CAAC,IAAI,YAAY,CAAC,OAAO,CAAC,CAAC,uBAAuB,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;SACjH;KACF,CAAC;AACJ,CAAC;AAED,SAAgB,aAAa,CAC3B,MAA8B,EAC9B,WAA2B;IAE3B,OAAO,WAAW,CAAC,IAAI,CACrB,CAAC,IAAI,EAAE,EAAE,CACP,IAAI,IAAI,OAAO,CAAC,WAAW,CAAC,qCAAyB,EAAE,IAAI,CAAC,KAAK,MAAM,CAC1E,CAAC;AACJ,CAAC"}
|