@nestia/core 7.3.1 → 7.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/decorators/DynamicModule.d.ts +3 -2
- package/lib/decorators/DynamicModule.js +3 -2
- package/lib/decorators/DynamicModule.js.map +1 -1
- package/lib/decorators/EncryptedBody.d.ts +11 -11
- package/lib/decorators/EncryptedBody.js +13 -17
- package/lib/decorators/EncryptedBody.js.map +1 -1
- package/lib/decorators/EncryptedController.d.ts +15 -13
- package/lib/decorators/EncryptedController.js +15 -13
- package/lib/decorators/EncryptedController.js.map +1 -1
- package/lib/decorators/EncryptedModule.d.ts +22 -22
- package/lib/decorators/EncryptedModule.js +23 -25
- package/lib/decorators/EncryptedModule.js.map +1 -1
- package/lib/decorators/EncryptedRoute.d.ts +20 -20
- package/lib/decorators/EncryptedRoute.js +23 -29
- package/lib/decorators/EncryptedRoute.js.map +1 -1
- package/lib/decorators/HumanRoute.d.ts +3 -3
- package/lib/decorators/HumanRoute.js +3 -3
- package/lib/decorators/NoTransformConfigurationError.d.ts +10 -8
- package/lib/decorators/NoTransformConfigurationError.js +10 -8
- package/lib/decorators/NoTransformConfigurationError.js.map +1 -1
- package/lib/decorators/PlainBody.d.ts +7 -6
- package/lib/decorators/PlainBody.js +2 -6
- package/lib/decorators/PlainBody.js.map +1 -1
- package/lib/decorators/SwaggerCustomizer.d.ts +12 -30
- package/lib/decorators/SwaggerCustomizer.js +3 -3
- package/lib/decorators/TypedBody.d.ts +7 -7
- package/lib/decorators/TypedBody.js +8 -10
- package/lib/decorators/TypedBody.js.map +1 -1
- package/lib/decorators/TypedException.d.ts +41 -58
- package/lib/decorators/TypedException.js +1 -3
- package/lib/decorators/TypedException.js.map +1 -1
- package/lib/decorators/TypedFormData.d.ts +16 -16
- package/lib/decorators/TypedFormData.js +17 -23
- package/lib/decorators/TypedFormData.js.map +1 -1
- package/lib/decorators/TypedHeaders.d.ts +27 -25
- package/lib/decorators/TypedHeaders.js +27 -25
- package/lib/decorators/TypedHeaders.js.map +1 -1
- package/lib/decorators/TypedParam.d.ts +5 -5
- package/lib/decorators/TypedParam.js +5 -5
- package/lib/decorators/TypedQuery.d.ts +7 -6
- package/lib/decorators/TypedQuery.js +13 -24
- package/lib/decorators/TypedQuery.js.map +1 -1
- package/lib/decorators/TypedRoute.d.ts +24 -34
- package/lib/decorators/TypedRoute.js +19 -28
- package/lib/decorators/TypedRoute.js.map +1 -1
- package/lib/decorators/WebSocketRoute.d.ts +33 -31
- package/lib/decorators/WebSocketRoute.js +34 -34
- package/lib/decorators/WebSocketRoute.js.map +1 -1
- package/lib/decorators/internal/EncryptedConstant.js +1 -3
- package/lib/decorators/internal/EncryptedConstant.js.map +1 -1
- package/lib/decorators/internal/get_path_and_querify.js +7 -21
- package/lib/decorators/internal/get_path_and_querify.js.map +1 -1
- package/lib/decorators/internal/get_path_and_stringify.js +6 -18
- package/lib/decorators/internal/get_path_and_stringify.js.map +1 -1
- package/lib/decorators/internal/get_text_body.js +2 -6
- package/lib/decorators/internal/get_text_body.js.map +1 -1
- package/lib/decorators/internal/headers_to_object.js +1 -3
- package/lib/decorators/internal/headers_to_object.js.map +1 -1
- package/lib/decorators/internal/is_request_body_undefined.js +1 -3
- package/lib/decorators/internal/is_request_body_undefined.js.map +1 -1
- package/lib/decorators/internal/load_controller.js +3 -7
- package/lib/decorators/internal/load_controller.js.map +1 -1
- package/lib/decorators/internal/route_error.js +1 -3
- package/lib/decorators/internal/route_error.js.map +1 -1
- package/lib/decorators/internal/validate_request_body.js +5 -15
- package/lib/decorators/internal/validate_request_body.js.map +1 -1
- package/lib/decorators/internal/validate_request_form_data.js +5 -15
- package/lib/decorators/internal/validate_request_form_data.js.map +1 -1
- package/lib/decorators/internal/validate_request_headers.js +5 -15
- package/lib/decorators/internal/validate_request_headers.js.map +1 -1
- package/lib/decorators/internal/validate_request_query.js +5 -15
- package/lib/decorators/internal/validate_request_query.js.map +1 -1
- package/lib/utils/ExceptionManager.d.ts +27 -20
- package/lib/utils/ExceptionManager.js +20 -20
- package/lib/utils/ExceptionManager.js.map +1 -1
- package/lib/utils/Singleton.js +2 -6
- package/lib/utils/Singleton.js.map +1 -1
- package/package.json +6 -6
- package/src/decorators/DynamicModule.ts +3 -2
- package/src/decorators/EncryptedBody.ts +13 -17
- package/src/decorators/EncryptedController.ts +15 -13
- package/src/decorators/EncryptedModule.ts +23 -25
- package/src/decorators/EncryptedRoute.ts +23 -29
- package/src/decorators/HumanRoute.ts +3 -3
- package/src/decorators/NoTransformConfigurationError.ts +10 -8
- package/src/decorators/PlainBody.ts +9 -12
- package/src/decorators/SwaggerCustomizer.ts +12 -30
- package/src/decorators/TypedBody.ts +8 -10
- package/src/decorators/TypedException.ts +42 -61
- package/src/decorators/TypedFormData.ts +34 -34
- package/src/decorators/TypedHeaders.ts +27 -25
- package/src/decorators/TypedParam.ts +5 -5
- package/src/decorators/TypedQuery.ts +13 -24
- package/src/decorators/TypedRoute.ts +28 -46
- package/src/decorators/WebSocketRoute.ts +34 -34
- package/src/decorators/internal/EncryptedConstant.ts +1 -3
- package/src/decorators/internal/get_path_and_querify.ts +7 -21
- package/src/decorators/internal/get_path_and_stringify.ts +6 -18
- package/src/decorators/internal/get_text_body.ts +2 -6
- package/src/decorators/internal/headers_to_object.ts +1 -3
- package/src/decorators/internal/is_request_body_undefined.ts +1 -3
- package/src/decorators/internal/load_controller.ts +3 -7
- package/src/decorators/internal/route_error.ts +1 -3
- package/src/decorators/internal/validate_request_body.ts +5 -15
- package/src/decorators/internal/validate_request_form_data.ts +5 -15
- package/src/decorators/internal/validate_request_headers.ts +5 -15
- package/src/decorators/internal/validate_request_query.ts +5 -15
- package/src/utils/ExceptionManager.ts +29 -26
- package/src/utils/Singleton.ts +2 -6
|
@@ -2,13 +2,14 @@ import { IRequestHeadersValidator } from "../options/IRequestHeadersValidator";
|
|
|
2
2
|
/**
|
|
3
3
|
* Type safe HTTP headers decorator.
|
|
4
4
|
*
|
|
5
|
-
* `TypedHeaders` is a decorator function that can parse HTTP headers. It is
|
|
6
|
-
* same with {@link nest.Headers}, but it can automatically cast property
|
|
7
|
-
* its DTO definition. Also, `TypedHeaders` performs type
|
|
5
|
+
* `TypedHeaders` is a decorator function that can parse HTTP headers. It is
|
|
6
|
+
* almost same with {@link nest.Headers}, but it can automatically cast property
|
|
7
|
+
* type following its DTO definition. Also, `TypedHeaders` performs type
|
|
8
|
+
* validation.
|
|
8
9
|
*
|
|
9
|
-
* For reference, target type `T` must follow such restrictions. Also, if actual
|
|
10
|
-
* header values are different with their promised type `T`,
|
|
11
|
-
* error (status code: 400) would be thrown.
|
|
10
|
+
* For reference, target type `T` must follow such restrictions. Also, if actual
|
|
11
|
+
* HTTP header values are different with their promised type `T`,
|
|
12
|
+
* `BadRequestException` error (status code: 400) would be thrown.
|
|
12
13
|
*
|
|
13
14
|
* 1. Type `T` must be an object type
|
|
14
15
|
* 2. Do not allow dynamic property
|
|
@@ -18,26 +19,27 @@ import { IRequestHeadersValidator } from "../options/IRequestHeadersValidator";
|
|
|
18
19
|
* 6. By the way, union type never be not allowed
|
|
19
20
|
* 7. Property `set-cookie` must be array type
|
|
20
21
|
* 8. Those properties cannot be array type
|
|
21
|
-
* - age
|
|
22
|
-
* - authorization
|
|
23
|
-
* - content-length
|
|
24
|
-
* - content-type
|
|
25
|
-
* - etag
|
|
26
|
-
* - expires
|
|
27
|
-
* - from
|
|
28
|
-
* - host
|
|
29
|
-
* - if-modified-since
|
|
30
|
-
* - if-unmodified-since
|
|
31
|
-
* - last-modified
|
|
32
|
-
* - location
|
|
33
|
-
* - max-forwards
|
|
34
|
-
* - proxy-authorization
|
|
35
|
-
* - referer
|
|
36
|
-
* - retry-after
|
|
37
|
-
* - server
|
|
38
|
-
* - user-agent
|
|
39
22
|
*
|
|
40
|
-
*
|
|
23
|
+
* - Age
|
|
24
|
+
* - Authorization
|
|
25
|
+
* - Content-length
|
|
26
|
+
* - Content-type
|
|
27
|
+
* - Etag
|
|
28
|
+
* - Expires
|
|
29
|
+
* - From
|
|
30
|
+
* - Host
|
|
31
|
+
* - If-modified-since
|
|
32
|
+
* - If-unmodified-since
|
|
33
|
+
* - Last-modified
|
|
34
|
+
* - Location
|
|
35
|
+
* - Max-forwards
|
|
36
|
+
* - Proxy-authorization
|
|
37
|
+
* - Referer
|
|
38
|
+
* - Retry-after
|
|
39
|
+
* - Server
|
|
40
|
+
* - User-agent
|
|
41
|
+
*
|
|
41
42
|
* @author Jeongho Nam - https://github.com/samchon
|
|
43
|
+
* @returns Parameter decorator
|
|
42
44
|
*/
|
|
43
45
|
export declare function TypedHeaders<T extends object>(validator?: IRequestHeadersValidator<T>): ParameterDecorator;
|
|
@@ -6,13 +6,14 @@ const validate_request_headers_1 = require("./internal/validate_request_headers"
|
|
|
6
6
|
/**
|
|
7
7
|
* Type safe HTTP headers decorator.
|
|
8
8
|
*
|
|
9
|
-
* `TypedHeaders` is a decorator function that can parse HTTP headers. It is
|
|
10
|
-
* same with {@link nest.Headers}, but it can automatically cast property
|
|
11
|
-
* its DTO definition. Also, `TypedHeaders` performs type
|
|
9
|
+
* `TypedHeaders` is a decorator function that can parse HTTP headers. It is
|
|
10
|
+
* almost same with {@link nest.Headers}, but it can automatically cast property
|
|
11
|
+
* type following its DTO definition. Also, `TypedHeaders` performs type
|
|
12
|
+
* validation.
|
|
12
13
|
*
|
|
13
|
-
* For reference, target type `T` must follow such restrictions. Also, if actual
|
|
14
|
-
* header values are different with their promised type `T`,
|
|
15
|
-
* error (status code: 400) would be thrown.
|
|
14
|
+
* For reference, target type `T` must follow such restrictions. Also, if actual
|
|
15
|
+
* HTTP header values are different with their promised type `T`,
|
|
16
|
+
* `BadRequestException` error (status code: 400) would be thrown.
|
|
16
17
|
*
|
|
17
18
|
* 1. Type `T` must be an object type
|
|
18
19
|
* 2. Do not allow dynamic property
|
|
@@ -22,27 +23,28 @@ const validate_request_headers_1 = require("./internal/validate_request_headers"
|
|
|
22
23
|
* 6. By the way, union type never be not allowed
|
|
23
24
|
* 7. Property `set-cookie` must be array type
|
|
24
25
|
* 8. Those properties cannot be array type
|
|
25
|
-
* - age
|
|
26
|
-
* - authorization
|
|
27
|
-
* - content-length
|
|
28
|
-
* - content-type
|
|
29
|
-
* - etag
|
|
30
|
-
* - expires
|
|
31
|
-
* - from
|
|
32
|
-
* - host
|
|
33
|
-
* - if-modified-since
|
|
34
|
-
* - if-unmodified-since
|
|
35
|
-
* - last-modified
|
|
36
|
-
* - location
|
|
37
|
-
* - max-forwards
|
|
38
|
-
* - proxy-authorization
|
|
39
|
-
* - referer
|
|
40
|
-
* - retry-after
|
|
41
|
-
* - server
|
|
42
|
-
* - user-agent
|
|
43
26
|
*
|
|
44
|
-
*
|
|
27
|
+
* - Age
|
|
28
|
+
* - Authorization
|
|
29
|
+
* - Content-length
|
|
30
|
+
* - Content-type
|
|
31
|
+
* - Etag
|
|
32
|
+
* - Expires
|
|
33
|
+
* - From
|
|
34
|
+
* - Host
|
|
35
|
+
* - If-modified-since
|
|
36
|
+
* - If-unmodified-since
|
|
37
|
+
* - Last-modified
|
|
38
|
+
* - Location
|
|
39
|
+
* - Max-forwards
|
|
40
|
+
* - Proxy-authorization
|
|
41
|
+
* - Referer
|
|
42
|
+
* - Retry-after
|
|
43
|
+
* - Server
|
|
44
|
+
* - User-agent
|
|
45
|
+
*
|
|
45
46
|
* @author Jeongho Nam - https://github.com/samchon
|
|
47
|
+
* @returns Parameter decorator
|
|
46
48
|
*/
|
|
47
49
|
function TypedHeaders(validator) {
|
|
48
50
|
const checker = (0, validate_request_headers_1.validate_request_headers)(validator);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TypedHeaders.js","sourceRoot":"","sources":["../../src/decorators/TypedHeaders.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"TypedHeaders.js","sourceRoot":"","sources":["../../src/decorators/TypedHeaders.ts"],"names":[],"mappings":";;AAkDA,oCAeC;AAjED,2CAAwE;AAKxE,kFAA+E;AAE/E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,SAAgB,YAAY,CAC1B,SAAuC;IAEvC,MAAM,OAAO,GAAG,IAAA,mDAAwB,EAAC,SAAS,CAAC,CAAC;IACpD,OAAO,IAAA,6BAAoB,EAAC,SAAS,YAAY,CAC/C,QAAa,EACb,OAAyB;QAEzB,MAAM,OAAO,GAAqC,OAAO;aACtD,YAAY,EAAE;aACd,UAAU,EAAE,CAAC;QAChB,MAAM,MAAM,GAAc,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACnD,IAAI,MAAM,YAAY,KAAK;YAAE,MAAM,MAAM,CAAC;QAC1C,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC,EAAE,CAAC;AACP,CAAC"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Type safe URL parameter decorator.
|
|
3
3
|
*
|
|
4
|
-
* `TypedParam` is a decorator function getting specific typed parameter from
|
|
5
|
-
* HTTP request URL. It's almost same with the {@link nest.Param}, but
|
|
6
|
-
* automatically casts parameter value to be following its type,
|
|
4
|
+
* `TypedParam` is a decorator function getting specific typed parameter from
|
|
5
|
+
* the HTTP request URL. It's almost same with the {@link nest.Param}, but
|
|
6
|
+
* `TypedParam` automatically casts parameter value to be following its type,
|
|
7
|
+
* and validates it.
|
|
7
8
|
*
|
|
8
9
|
* ```typescript
|
|
9
10
|
* import { tags } from "typia";
|
|
@@ -16,9 +17,8 @@
|
|
|
16
17
|
* ): Promise<void>;
|
|
17
18
|
* ```
|
|
18
19
|
*
|
|
20
|
+
* @author Jeongho Nam - https://github.com/samchon
|
|
19
21
|
* @param name URL Parameter name
|
|
20
22
|
* @returns Parameter decorator
|
|
21
|
-
*
|
|
22
|
-
* @author Jeongho Nam - https://github.com/samchon
|
|
23
23
|
*/
|
|
24
24
|
export declare function TypedParam<T extends boolean | bigint | number | string | null>(name: string, assert?: (value: string) => T, validate?: boolean): ParameterDecorator;
|
|
@@ -10,9 +10,10 @@ const NoTransformConfigurationError_1 = require("./NoTransformConfigurationError
|
|
|
10
10
|
/**
|
|
11
11
|
* Type safe URL parameter decorator.
|
|
12
12
|
*
|
|
13
|
-
* `TypedParam` is a decorator function getting specific typed parameter from
|
|
14
|
-
* HTTP request URL. It's almost same with the {@link nest.Param}, but
|
|
15
|
-
* automatically casts parameter value to be following its type,
|
|
13
|
+
* `TypedParam` is a decorator function getting specific typed parameter from
|
|
14
|
+
* the HTTP request URL. It's almost same with the {@link nest.Param}, but
|
|
15
|
+
* `TypedParam` automatically casts parameter value to be following its type,
|
|
16
|
+
* and validates it.
|
|
16
17
|
*
|
|
17
18
|
* ```typescript
|
|
18
19
|
* import { tags } from "typia";
|
|
@@ -25,10 +26,9 @@ const NoTransformConfigurationError_1 = require("./NoTransformConfigurationError
|
|
|
25
26
|
* ): Promise<void>;
|
|
26
27
|
* ```
|
|
27
28
|
*
|
|
29
|
+
* @author Jeongho Nam - https://github.com/samchon
|
|
28
30
|
* @param name URL Parameter name
|
|
29
31
|
* @returns Parameter decorator
|
|
30
|
-
*
|
|
31
|
-
* @author Jeongho Nam - https://github.com/samchon
|
|
32
32
|
*/
|
|
33
33
|
function TypedParam(name, assert, validate) {
|
|
34
34
|
if (assert === undefined) {
|
|
@@ -3,12 +3,13 @@ import { IResponseBodyQuerifier } from "../options/IResponseBodyQuerifier";
|
|
|
3
3
|
/**
|
|
4
4
|
* Type safe URL query decorator.
|
|
5
5
|
*
|
|
6
|
-
* `TypedQuery` is a decorator function that can parse URL query string. It is
|
|
7
|
-
* same with {@link nest.Query}, but it can automatically cast property
|
|
8
|
-
* its DTO definition. Also, `TypedQuery` performs type
|
|
6
|
+
* `TypedQuery` is a decorator function that can parse URL query string. It is
|
|
7
|
+
* almost same with {@link nest.Query}, but it can automatically cast property
|
|
8
|
+
* type following its DTO definition. Also, `TypedQuery` performs type
|
|
9
|
+
* validation.
|
|
9
10
|
*
|
|
10
|
-
* For reference, target type `T` must follow such restriction. Also, if
|
|
11
|
-
*
|
|
11
|
+
* For reference, target type `T` must follow such restriction. Also, if actual
|
|
12
|
+
* URL query parameter values are different with their promised type `T`,
|
|
12
13
|
* `BadRequestException` error (status code: 400) would be thrown.
|
|
13
14
|
*
|
|
14
15
|
* 1. Type `T` must be an object type
|
|
@@ -16,8 +17,8 @@ import { IResponseBodyQuerifier } from "../options/IResponseBodyQuerifier";
|
|
|
16
17
|
* 3. Only `boolean`, `bigint`, `number`, `string` or their array types are allowed
|
|
17
18
|
* 4. By the way, union type never be not allowed
|
|
18
19
|
*
|
|
19
|
-
* @returns Parameter decorator
|
|
20
20
|
* @author Jeongho Nam - https://github.com/samchon
|
|
21
|
+
* @returns Parameter decorator
|
|
21
22
|
*/
|
|
22
23
|
export declare function TypedQuery<T extends object>(validator?: IRequestQueryValidator<T>): ParameterDecorator;
|
|
23
24
|
export declare namespace TypedQuery {
|
|
@@ -13,12 +13,13 @@ const validate_request_query_1 = require("./internal/validate_request_query");
|
|
|
13
13
|
/**
|
|
14
14
|
* Type safe URL query decorator.
|
|
15
15
|
*
|
|
16
|
-
* `TypedQuery` is a decorator function that can parse URL query string. It is
|
|
17
|
-
* same with {@link nest.Query}, but it can automatically cast property
|
|
18
|
-
* its DTO definition. Also, `TypedQuery` performs type
|
|
16
|
+
* `TypedQuery` is a decorator function that can parse URL query string. It is
|
|
17
|
+
* almost same with {@link nest.Query}, but it can automatically cast property
|
|
18
|
+
* type following its DTO definition. Also, `TypedQuery` performs type
|
|
19
|
+
* validation.
|
|
19
20
|
*
|
|
20
|
-
* For reference, target type `T` must follow such restriction. Also, if
|
|
21
|
-
*
|
|
21
|
+
* For reference, target type `T` must follow such restriction. Also, if actual
|
|
22
|
+
* URL query parameter values are different with their promised type `T`,
|
|
22
23
|
* `BadRequestException` error (status code: 400) would be thrown.
|
|
23
24
|
*
|
|
24
25
|
* 1. Type `T` must be an object type
|
|
@@ -26,8 +27,8 @@ const validate_request_query_1 = require("./internal/validate_request_query");
|
|
|
26
27
|
* 3. Only `boolean`, `bigint`, `number`, `string` or their array types are allowed
|
|
27
28
|
* 4. By the way, union type never be not allowed
|
|
28
29
|
*
|
|
29
|
-
* @returns Parameter decorator
|
|
30
30
|
* @author Jeongho Nam - https://github.com/samchon
|
|
31
|
+
* @returns Parameter decorator
|
|
31
32
|
*/
|
|
32
33
|
function TypedQuery(validator) {
|
|
33
34
|
const checker = (0, validate_request_query_1.validate_request_query)("TypedQuery")(validator);
|
|
@@ -101,9 +102,7 @@ function TypedQuery(validator) {
|
|
|
101
102
|
* @returns Method decorator
|
|
102
103
|
*/
|
|
103
104
|
TypedQuery.Delete = Generator("Delete");
|
|
104
|
-
/**
|
|
105
|
-
* @internal
|
|
106
|
-
*/
|
|
105
|
+
/** @internal */
|
|
107
106
|
function Generator(method) {
|
|
108
107
|
function route(...args) {
|
|
109
108
|
const [path, stringify] = (0, get_path_and_querify_1.get_path_and_querify)(`TypedQuery.${method}`)(...args);
|
|
@@ -122,16 +121,12 @@ function TypedQuery(validator) {
|
|
|
122
121
|
])
|
|
123
122
|
deco[key] = value;
|
|
124
123
|
})(TypedQuery || (exports.TypedQuery = TypedQuery = {}));
|
|
125
|
-
/**
|
|
126
|
-
* @internal
|
|
127
|
-
*/
|
|
124
|
+
/** @internal */
|
|
128
125
|
function tail(url) {
|
|
129
126
|
const index = url.indexOf("?");
|
|
130
127
|
return index === -1 ? "" : url.substring(index + 1);
|
|
131
128
|
}
|
|
132
|
-
/**
|
|
133
|
-
* @internal
|
|
134
|
-
*/
|
|
129
|
+
/** @internal */
|
|
135
130
|
function isApplicationQuery(text) {
|
|
136
131
|
return (text !== undefined &&
|
|
137
132
|
text
|
|
@@ -139,9 +134,7 @@ function isApplicationQuery(text) {
|
|
|
139
134
|
.map((str) => str.trim())
|
|
140
135
|
.some((str) => str === "application/x-www-form-urlencoded"));
|
|
141
136
|
}
|
|
142
|
-
/**
|
|
143
|
-
* @internal
|
|
144
|
-
*/
|
|
137
|
+
/** @internal */
|
|
145
138
|
class FakeURLSearchParams {
|
|
146
139
|
constructor(target) {
|
|
147
140
|
this.target = target;
|
|
@@ -163,9 +156,7 @@ class FakeURLSearchParams {
|
|
|
163
156
|
return value === undefined ? [] : Array.isArray(value) ? value : [value];
|
|
164
157
|
}
|
|
165
158
|
}
|
|
166
|
-
/**
|
|
167
|
-
* @internal
|
|
168
|
-
*/
|
|
159
|
+
/** @internal */
|
|
169
160
|
class TypedQueryRouteInterceptor {
|
|
170
161
|
constructor(toSearchParams) {
|
|
171
162
|
this.toSearchParams = toSearchParams;
|
|
@@ -177,9 +168,7 @@ class TypedQueryRouteInterceptor {
|
|
|
177
168
|
return next.handle().pipe((0, rxjs_1.map)((value) => this.toSearchParams(value).toString()), (0, rxjs_1.catchError)((err) => (0, route_error_1.route_error)(http.getRequest(), err)));
|
|
178
169
|
}
|
|
179
170
|
}
|
|
180
|
-
/**
|
|
181
|
-
* @internal
|
|
182
|
-
*/
|
|
171
|
+
/** @internal */
|
|
183
172
|
const ROUTERS = {
|
|
184
173
|
Get: common_1.Get,
|
|
185
174
|
Post: common_1.Post,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TypedQuery.js","sourceRoot":"","sources":["../../src/decorators/TypedQuery.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"TypedQuery.js","sourceRoot":"","sources":["../../src/decorators/TypedQuery.ts"],"names":[],"mappings":";;;;;AA8CA,gCAiBC;AA/DD,2CAawB;AAIxB,+BAAuC;AACvC,kDAA0B;AAI1B,0EAAuE;AACvE,wDAAqD;AACrD,8EAA2E;AAE3E;;;;;;;;;;;;;;;;;;;GAmBG;AACH,SAAgB,UAAU,CACxB,SAAqC;IAErC,MAAM,OAAO,GAAG,IAAA,+CAAsB,EAAC,YAAY,CAAC,CAAC,SAAS,CAAC,CAAC;IAChE,OAAO,IAAA,6BAAoB,EAAC,SAAS,UAAU,CAC7C,QAAa,EACb,OAAyB;QAEzB,MAAM,OAAO,GAAqC,OAAO;aACtD,YAAY,EAAE;aACd,UAAU,EAAE,CAAC;QAChB,MAAM,MAAM,GAAoB,IAAI,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;QAEvE,MAAM,MAAM,GAAc,OAAO,CAAC,MAAM,CAAC,CAAC;QAC1C,IAAI,MAAM,YAAY,KAAK;YAAE,MAAM,MAAM,CAAC;QAC1C,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC,EAAE,CAAC;AACP,CAAC;AACD,WAAiB,UAAU;IACzB;;;;OAIG;IACH,SAAgB,IAAI,CAClB,SAAqC;QAErC,MAAM,OAAO,GAAG,IAAA,+CAAsB,EAAC,iBAAiB,CAAC,CAAC,SAAS,CAAC,CAAC;QACrE,OAAO,IAAA,6BAAoB,EAAC,SAAS,cAAc,CACjD,QAAa,EACb,OAAyB;YAEzB,MAAM,OAAO,GAAqC,OAAO;iBACtD,YAAY,EAAE;iBACd,UAAU,EAAE,CAAC;YAChB,IAAI,kBAAkB,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,KAAK,KAAK;gBAC/D,MAAM,IAAI,4BAAmB,CAC3B,+DAA+D,CAChE,CAAC;YACJ,MAAM,MAAM,GACV,OAAO,CAAC,IAAI,YAAY,eAAe;gBACrC,CAAC,CAAC,OAAO,CAAC,IAAI;gBACd,CAAC,CAAE,IAAI,mBAAmB,CAAC,OAAO,CAAC,IAAI,CAAS,CAAC;YAErD,MAAM,MAAM,GAAc,OAAO,CAAC,MAAM,CAAC,CAAC;YAC1C,IAAI,MAAM,YAAY,KAAK;gBAAE,MAAM,MAAM,CAAC;YAC1C,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC,EAAE,CAAC;IACP,CAAC;IAxBe,eAAI,OAwBnB,CAAA;IAED;;;;;OAKG;IACU,cAAG,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;IAEpC;;;;;OAKG;IACU,eAAI,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;IAEtC;;;;;OAKG;IACU,gBAAK,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;IAExC;;;;;OAKG;IACU,cAAG,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;IAEpC;;;;;OAKG;IACU,iBAAM,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;IAE1C,gBAAgB;IAChB,SAAS,SAAS,CAAC,MAAmD;QAQpE,SAAS,KAAK,CAAC,GAAG,IAAW;YAC3B,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,GAAG,IAAA,2CAAoB,EAAC,cAAc,MAAM,EAAE,CAAC,CACpE,GAAG,IAAI,CACR,CAAC;YACF,OAAO,IAAA,wBAAe,EACpB,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EACrB,IAAA,wBAAe,EAAC,IAAI,0BAA0B,CAAC,SAAS,CAAC,CAAC,CAC3D,CAAC;QACJ,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,KAAK,MAAM,MAAM,IAAI,CAAC,eAAK,CAAC,MAAM,EAAE,eAAK,CAAC,EAAE,EAAE,eAAK,CAAC,QAAQ,CAAC;QAC3D,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;YAC/C,KAAK,MAAM,IAAI,IAAI;gBACjB,UAAU,CAAC,GAAG;gBACd,UAAU,CAAC,MAAM;gBACjB,UAAU,CAAC,IAAI;gBACf,UAAU,CAAC,GAAG;gBACd,UAAU,CAAC,KAAK;aACjB;gBACE,IAAY,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACnC,CAAC,EAtGgB,UAAU,0BAAV,UAAU,QAsG1B;AAED,gBAAgB;AAChB,SAAS,IAAI,CAAC,GAAW;IACvB,MAAM,KAAK,GAAW,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACvC,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;AACtD,CAAC;AAED,gBAAgB;AAChB,SAAS,kBAAkB,CAAC,IAAa;IACvC,OAAO,CACL,IAAI,KAAK,SAAS;QAClB,IAAI;aACD,KAAK,CAAC,GAAG,CAAC;aACV,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;aACxB,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,mCAAmC,CAAC,CAC9D,CAAC;AACJ,CAAC;AAED,gBAAgB;AAChB,MAAM,mBAAmB;IACvB,YAAoC,MAAgC;QAAhC,WAAM,GAAN,MAAM,CAA0B;IAAG,CAAC;IAEjE,GAAG,CAAC,GAAW;QACpB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC;IACxC,CAAC;IAEM,GAAG,CAAC,GAAW;;QACpB,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC/B,OAAO,KAAK,KAAK,SAAS;YACxB,CAAC,CAAC,IAAI;YACN,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;gBACpB,CAAC,CAAC,CAAC,MAAA,KAAK,CAAC,CAAC,CAAC,mCAAI,IAAI,CAAC;gBACpB,CAAC,CAAC,KAAK,CAAC;IACd,CAAC;IAEM,MAAM,CAAC,GAAW;QACvB,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC/B,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAC3E,CAAC;CACF;AAED,gBAAgB;AAChB,MAAM,0BAA0B;IAC9B,YACmB,cAA+C;QAA/C,mBAAc,GAAd,cAAc,CAAiC;IAC/D,CAAC;IAEG,SAAS,CAAC,OAAyB,EAAE,IAAiB;QAC3D,MAAM,IAAI,GAAsB,OAAO,CAAC,YAAY,EAAE,CAAC;QACvD,MAAM,QAAQ,GAAqB,IAAI,CAAC,WAAW,EAAE,CAAC;QACtD,QAAQ,CAAC,MAAM,CAAC,cAAc,EAAE,mCAAmC,CAAC,CAAC;QAErE,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CACvB,IAAA,UAAG,EAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC,EACrD,IAAA,iBAAU,EAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAA,yBAAW,EAAC,IAAI,CAAC,UAAU,EAAE,EAAE,GAAG,CAAC,CAAC,CACzD,CAAC;IACJ,CAAC;CACF;AAED,gBAAgB;AAChB,MAAM,OAAO,GAAG;IACd,GAAG,EAAH,YAAG;IACH,IAAI,EAAJ,aAAI;IACJ,KAAK,EAAL,cAAK;IACL,GAAG,EAAH,YAAG;IACH,MAAM,EAAN,eAAM;CACP,CAAC"}
|
|
@@ -3,15 +3,15 @@ import { IResponseBodyStringifier } from "../options/IResponseBodyStringifier";
|
|
|
3
3
|
/**
|
|
4
4
|
* Type safe router decorator functions.
|
|
5
5
|
*
|
|
6
|
-
* `TypedRoute` is a module containing router decorator functions which can
|
|
7
|
-
* JSON string conversion speed about 200x times faster than
|
|
8
|
-
* Furthermore, such JSON string conversion is even type
|
|
9
|
-
* [typia](https://github.com/samchon/typia).
|
|
6
|
+
* `TypedRoute` is a module containing router decorator functions which can
|
|
7
|
+
* boost up JSON string conversion speed about 200x times faster than
|
|
8
|
+
* `class-transformer`. Furthermore, such JSON string conversion is even type
|
|
9
|
+
* safe through [typia](https://github.com/samchon/typia).
|
|
10
10
|
*
|
|
11
11
|
* For reference, if you try to invalid data that is not following the promised
|
|
12
|
-
* type `T`, 500 internal server error would be thrown. Also, as `TypedRoute`
|
|
13
|
-
* JSON string through `typia.assertStringify<T>()` function, it is not
|
|
14
|
-
* modify response data through interceptors.
|
|
12
|
+
* type `T`, 500 internal server error would be thrown. Also, as `TypedRoute`
|
|
13
|
+
* composes JSON string through `typia.assertStringify<T>()` function, it is not
|
|
14
|
+
* possible to modify response data through interceptors.
|
|
15
15
|
*
|
|
16
16
|
* @author Jeongho Nam - https://github.com/samchon
|
|
17
17
|
*/
|
|
@@ -74,50 +74,40 @@ export declare namespace TypedRoute {
|
|
|
74
74
|
/**
|
|
75
75
|
* Set the logger function for the response validation failure.
|
|
76
76
|
*
|
|
77
|
-
* If you've configured the transformation option to `validate.log`
|
|
78
|
-
*
|
|
79
|
-
*
|
|
80
|
-
*
|
|
77
|
+
* If you've configured the transformation option to `validate.log` in the
|
|
78
|
+
* `tsconfig.json` file, then the error log information of the response
|
|
79
|
+
* validation failure would be logged through this function instead of
|
|
80
|
+
* throwing the 400 bad request error.
|
|
81
81
|
*
|
|
82
|
-
* By the way, be careful. If you've configured the response
|
|
83
|
-
*
|
|
84
|
-
*
|
|
85
|
-
* backend server case.
|
|
82
|
+
* By the way, be careful. If you've configured the response transformation
|
|
83
|
+
* option to be `validate.log`, client may get wrong response data. Therefore,
|
|
84
|
+
* this way is not recommended in the common backend server case.
|
|
86
85
|
*
|
|
87
|
-
* @param func Logger function
|
|
88
86
|
* @default console.log
|
|
87
|
+
* @param func Logger function
|
|
89
88
|
*/
|
|
90
89
|
function setValidateErrorLogger(func: (log: IValidateErrorLog) => void): void;
|
|
91
90
|
/**
|
|
92
91
|
* Error log information of the response validation failure.
|
|
93
92
|
*
|
|
94
|
-
* `IValidationErrorLog` is a structure representing the error log
|
|
95
|
-
*
|
|
96
|
-
*
|
|
97
|
-
* the promised type `T`.
|
|
93
|
+
* `IValidationErrorLog` is a structure representing the error log information
|
|
94
|
+
* when the returned value from the `@TypedRoute` or `@EncryptedRoute`
|
|
95
|
+
* decorated controller method is not following the promised type `T`.
|
|
98
96
|
*
|
|
99
97
|
* If you've configured the transformation option to `validate.log` or
|
|
100
98
|
* `validateEquals.log` in the `tsconfig.json` file, then this error log
|
|
101
99
|
* information `IValidateErrorLog` would be logged through the
|
|
102
|
-
* {@link setValidateErrorLogger} function instead of throwing the
|
|
103
|
-
*
|
|
100
|
+
* {@link setValidateErrorLogger} function instead of throwing the 400 bad
|
|
101
|
+
* request error.
|
|
104
102
|
*/
|
|
105
103
|
interface IValidateErrorLog {
|
|
106
|
-
/**
|
|
107
|
-
* HTTP method of the request.
|
|
108
|
-
*/
|
|
104
|
+
/** HTTP method of the request. */
|
|
109
105
|
method: string;
|
|
110
|
-
/**
|
|
111
|
-
* HTTP path of the request.
|
|
112
|
-
*/
|
|
106
|
+
/** HTTP path of the request. */
|
|
113
107
|
path: string;
|
|
114
|
-
/**
|
|
115
|
-
* Validation error information with detailed reasons.
|
|
116
|
-
*/
|
|
108
|
+
/** Validation error information with detailed reasons. */
|
|
117
109
|
errors: IValidation.IError[];
|
|
118
|
-
/**
|
|
119
|
-
* Data that is not following the promised type `T`.
|
|
120
|
-
*/
|
|
110
|
+
/** Data that is not following the promised type `T`. */
|
|
121
111
|
data: unknown;
|
|
122
112
|
}
|
|
123
113
|
}
|
|
@@ -12,15 +12,15 @@ const route_error_1 = require("./internal/route_error");
|
|
|
12
12
|
/**
|
|
13
13
|
* Type safe router decorator functions.
|
|
14
14
|
*
|
|
15
|
-
* `TypedRoute` is a module containing router decorator functions which can
|
|
16
|
-
* JSON string conversion speed about 200x times faster than
|
|
17
|
-
* Furthermore, such JSON string conversion is even type
|
|
18
|
-
* [typia](https://github.com/samchon/typia).
|
|
15
|
+
* `TypedRoute` is a module containing router decorator functions which can
|
|
16
|
+
* boost up JSON string conversion speed about 200x times faster than
|
|
17
|
+
* `class-transformer`. Furthermore, such JSON string conversion is even type
|
|
18
|
+
* safe through [typia](https://github.com/samchon/typia).
|
|
19
19
|
*
|
|
20
20
|
* For reference, if you try to invalid data that is not following the promised
|
|
21
|
-
* type `T`, 500 internal server error would be thrown. Also, as `TypedRoute`
|
|
22
|
-
* JSON string through `typia.assertStringify<T>()` function, it is not
|
|
23
|
-
* modify response data through interceptors.
|
|
21
|
+
* type `T`, 500 internal server error would be thrown. Also, as `TypedRoute`
|
|
22
|
+
* composes JSON string through `typia.assertStringify<T>()` function, it is not
|
|
23
|
+
* possible to modify response data through interceptors.
|
|
24
24
|
*
|
|
25
25
|
* @author Jeongho Nam - https://github.com/samchon
|
|
26
26
|
*/
|
|
@@ -64,30 +64,25 @@ var TypedRoute;
|
|
|
64
64
|
/**
|
|
65
65
|
* Set the logger function for the response validation failure.
|
|
66
66
|
*
|
|
67
|
-
* If you've configured the transformation option to `validate.log`
|
|
68
|
-
*
|
|
69
|
-
*
|
|
70
|
-
*
|
|
67
|
+
* If you've configured the transformation option to `validate.log` in the
|
|
68
|
+
* `tsconfig.json` file, then the error log information of the response
|
|
69
|
+
* validation failure would be logged through this function instead of
|
|
70
|
+
* throwing the 400 bad request error.
|
|
71
71
|
*
|
|
72
|
-
* By the way, be careful. If you've configured the response
|
|
73
|
-
*
|
|
74
|
-
*
|
|
75
|
-
* backend server case.
|
|
72
|
+
* By the way, be careful. If you've configured the response transformation
|
|
73
|
+
* option to be `validate.log`, client may get wrong response data. Therefore,
|
|
74
|
+
* this way is not recommended in the common backend server case.
|
|
76
75
|
*
|
|
77
|
-
* @param func Logger function
|
|
78
76
|
* @default console.log
|
|
77
|
+
* @param func Logger function
|
|
79
78
|
*/
|
|
80
79
|
function setValidateErrorLogger(func) {
|
|
81
80
|
TypedRoute.__logger = func;
|
|
82
81
|
}
|
|
83
82
|
TypedRoute.setValidateErrorLogger = setValidateErrorLogger;
|
|
84
|
-
/**
|
|
85
|
-
* @internal
|
|
86
|
-
*/
|
|
83
|
+
/** @internal */
|
|
87
84
|
TypedRoute.__logger = console.log;
|
|
88
|
-
/**
|
|
89
|
-
* @internal
|
|
90
|
-
*/
|
|
85
|
+
/** @internal */
|
|
91
86
|
function Generator(method) {
|
|
92
87
|
function route(...args) {
|
|
93
88
|
const [path, stringify] = (0, get_path_and_stringify_1.get_path_and_stringify)(() => TypedRoute.__logger)(`TypedRoute.${method}`)(...args);
|
|
@@ -111,9 +106,7 @@ for (const method of [
|
|
|
111
106
|
TypedRoute.Patch,
|
|
112
107
|
])
|
|
113
108
|
deco[key] = value;
|
|
114
|
-
/**
|
|
115
|
-
* @internal
|
|
116
|
-
*/
|
|
109
|
+
/** @internal */
|
|
117
110
|
class TypedRouteInterceptor {
|
|
118
111
|
constructor(stringify) {
|
|
119
112
|
this.stringify = stringify;
|
|
@@ -126,9 +119,7 @@ class TypedRouteInterceptor {
|
|
|
126
119
|
return next.handle().pipe((0, operators_1.map)((value) => this.stringify(value, request.method, request.url)), (0, operators_1.catchError)((err) => (0, route_error_1.route_error)(http.getRequest(), err)));
|
|
127
120
|
}
|
|
128
121
|
}
|
|
129
|
-
/**
|
|
130
|
-
* @internal
|
|
131
|
-
*/
|
|
122
|
+
/** @internal */
|
|
132
123
|
const ROUTERS = {
|
|
133
124
|
Get: common_1.Get,
|
|
134
125
|
Post: common_1.Post,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TypedRoute.js","sourceRoot":"","sources":["../../src/decorators/TypedRoute.ts"],"names":[],"mappings":";;;;;;AAAA,2CAWwB;AAGxB,8CAAiD;AACjD,kDAA2C;AAG3C,8EAA2E;AAC3E,wDAAqD;AAErD;;;;;;;;;;;;;;GAcG;AACH,IAAiB,UAAU,
|
|
1
|
+
{"version":3,"file":"TypedRoute.js","sourceRoot":"","sources":["../../src/decorators/TypedRoute.ts"],"names":[],"mappings":";;;;;;AAAA,2CAWwB;AAGxB,8CAAiD;AACjD,kDAA2C;AAG3C,8EAA2E;AAC3E,wDAAqD;AAErD;;;;;;;;;;;;;;GAcG;AACH,IAAiB,UAAU,CAgH1B;AAhHD,WAAiB,UAAU;IACzB;;;;;OAKG;IACU,cAAG,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;IAEpC;;;;;OAKG;IACU,eAAI,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;IAEtC;;;;;OAKG;IACU,gBAAK,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;IAExC;;;;;OAKG;IACU,cAAG,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;IAEpC;;;;;OAKG;IACU,iBAAM,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;IAE1C;;;;;;;;;;;;;;OAcG;IACH,SAAgB,sBAAsB,CACpC,IAAsC;QAEtC,WAAA,QAAQ,GAAG,IAAI,CAAC;IAClB,CAAC;IAJe,iCAAsB,yBAIrC,CAAA;IA6BD,gBAAgB;IACL,mBAAQ,GAAqC,OAAO,CAAC,GAAG,CAAC;IAEpE,gBAAgB;IAChB,SAAS,SAAS,CAAC,MAAmD;QAQpE,SAAS,KAAK,CAAC,GAAG,IAAW;YAC3B,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,GAAG,IAAA,+CAAsB,EAAC,GAAG,EAAE,CAAC,WAAA,QAAQ,CAAC,CAC9D,cAAc,MAAM,EAAE,CACvB,CAAC,GAAG,IAAI,CAAC,CAAC;YACX,OAAO,IAAA,wBAAe,EACpB,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EACrB,IAAA,wBAAe,EAAC,IAAI,qBAAqB,CAAC,SAAS,CAAC,CAAC,CACtD,CAAC;QACJ,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC,EAhHgB,UAAU,0BAAV,UAAU,QAgH1B;AACD,KAAK,MAAM,MAAM,IAAI;IACnB,eAAK,CAAC,IAAI,CAAC,SAAS;IACpB,eAAK,CAAC,IAAI,CAAC,WAAW;IACtB,eAAK,CAAC,IAAI,CAAC,eAAe;IAC1B,eAAK,CAAC,IAAI,CAAC,iBAAiB;CAC7B;IACC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;QAC/C,KAAK,MAAM,IAAI,IAAI;YACjB,UAAU,CAAC,GAAG;YACd,UAAU,CAAC,MAAM;YACjB,UAAU,CAAC,IAAI;YACf,UAAU,CAAC,GAAG;YACd,UAAU,CAAC,KAAK;SACjB;YACE,IAAY,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AAEjC,gBAAgB;AAChB,MAAM,qBAAqB;IACzB,YACmB,SAIN;QAJM,cAAS,GAAT,SAAS,CAIf;IACV,CAAC;IAEG,SAAS,CAAC,OAAyB,EAAE,IAAiB;QAC3D,MAAM,IAAI,GAAsB,OAAO,CAAC,YAAY,EAAE,CAAC;QACvD,MAAM,OAAO,GAAoB,IAAI,CAAC,UAAU,EAAE,CAAC;QACnD,MAAM,QAAQ,GAAqB,IAAI,CAAC,WAAW,EAAE,CAAC;QACtD,QAAQ,CAAC,MAAM,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC;QAEpD,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CACvB,IAAA,eAAG,EAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,EAClE,IAAA,sBAAU,EAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAA,yBAAW,EAAC,IAAI,CAAC,UAAU,EAAE,EAAE,GAAG,CAAC,CAAC,CACzD,CAAC;IACJ,CAAC;CACF;AAED,gBAAgB;AAChB,MAAM,OAAO,GAAG;IACd,GAAG,EAAH,YAAG;IACH,IAAI,EAAJ,aAAI;IACJ,KAAK,EAAL,cAAK;IACL,GAAG,EAAH,YAAG;IACH,MAAM,EAAN,eAAM;CACP,CAAC"}
|