@nestia/core 3.0.5 → 3.1.0-dev.20240426

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.
Files changed (139) hide show
  1. package/lib/adaptors/WebSocketAdaptor.d.ts +21 -0
  2. package/lib/adaptors/WebSocketAdaptor.js +277 -0
  3. package/lib/adaptors/WebSocketAdaptor.js.map +1 -0
  4. package/lib/decorators/DynamicModule.js +12 -59
  5. package/lib/decorators/DynamicModule.js.map +1 -1
  6. package/lib/decorators/EncryptedBody.js +36 -73
  7. package/lib/decorators/EncryptedBody.js.map +1 -1
  8. package/lib/decorators/EncryptedController.js +2 -2
  9. package/lib/decorators/EncryptedController.js.map +1 -1
  10. package/lib/decorators/EncryptedModule.js +24 -107
  11. package/lib/decorators/EncryptedModule.js.map +1 -1
  12. package/lib/decorators/EncryptedRoute.js +43 -119
  13. package/lib/decorators/EncryptedRoute.js.map +1 -1
  14. package/lib/decorators/PlainBody.js +24 -61
  15. package/lib/decorators/PlainBody.js.map +1 -1
  16. package/lib/decorators/SwaggerCustomizer.js +2 -2
  17. package/lib/decorators/SwaggerCustomizer.js.map +1 -1
  18. package/lib/decorators/TypedBody.js +12 -14
  19. package/lib/decorators/TypedBody.js.map +1 -1
  20. package/lib/decorators/TypedException.js +5 -5
  21. package/lib/decorators/TypedException.js.map +1 -1
  22. package/lib/decorators/TypedFormData.js +88 -291
  23. package/lib/decorators/TypedFormData.js.map +1 -1
  24. package/lib/decorators/TypedHeaders.js +6 -6
  25. package/lib/decorators/TypedHeaders.js.map +1 -1
  26. package/lib/decorators/TypedParam.d.ts +5 -6
  27. package/lib/decorators/TypedParam.js +14 -15
  28. package/lib/decorators/TypedParam.js.map +1 -1
  29. package/lib/decorators/TypedQuery.d.ts +2 -2
  30. package/lib/decorators/TypedQuery.js +52 -129
  31. package/lib/decorators/TypedQuery.js.map +1 -1
  32. package/lib/decorators/TypedRoute.js +31 -107
  33. package/lib/decorators/TypedRoute.js.map +1 -1
  34. package/lib/decorators/WebSocketRoute.d.ts +120 -0
  35. package/lib/decorators/WebSocketRoute.js +202 -0
  36. package/lib/decorators/WebSocketRoute.js.map +1 -0
  37. package/lib/decorators/internal/IWebSocketRouteReflect.d.ts +25 -0
  38. package/lib/decorators/internal/IWebSocketRouteReflect.js +3 -0
  39. package/lib/decorators/internal/IWebSocketRouteReflect.js.map +1 -0
  40. package/lib/decorators/internal/NoTransformConfigureError.js +1 -1
  41. package/lib/decorators/internal/NoTransformConfigureError.js.map +1 -1
  42. package/lib/decorators/internal/get_path_and_querify.js +67 -131
  43. package/lib/decorators/internal/get_path_and_querify.js.map +1 -1
  44. package/lib/decorators/internal/get_path_and_stringify.js +57 -71
  45. package/lib/decorators/internal/get_path_and_stringify.js.map +1 -1
  46. package/lib/decorators/internal/get_text_body.js +7 -46
  47. package/lib/decorators/internal/get_text_body.js.map +1 -1
  48. package/lib/decorators/internal/headers_to_object.js +3 -42
  49. package/lib/decorators/internal/headers_to_object.js.map +1 -1
  50. package/lib/decorators/internal/load_controller.js +29 -106
  51. package/lib/decorators/internal/load_controller.js.map +1 -1
  52. package/lib/decorators/internal/route_error.js +15 -65
  53. package/lib/decorators/internal/route_error.js.map +1 -1
  54. package/lib/decorators/internal/validate_request_body.js +44 -54
  55. package/lib/decorators/internal/validate_request_body.js.map +1 -1
  56. package/lib/decorators/internal/validate_request_form_data.js +36 -44
  57. package/lib/decorators/internal/validate_request_form_data.js.map +1 -1
  58. package/lib/decorators/internal/validate_request_headers.js +36 -44
  59. package/lib/decorators/internal/validate_request_headers.js.map +1 -1
  60. package/lib/decorators/internal/validate_request_query.js +36 -44
  61. package/lib/decorators/internal/validate_request_query.js.map +1 -1
  62. package/lib/index.js +1 -1
  63. package/lib/index.js.map +1 -1
  64. package/lib/module.d.ts +10 -9
  65. package/lib/module.js +10 -9
  66. package/lib/module.js.map +1 -1
  67. package/lib/programmers/PlainBodyProgrammer.js +29 -44
  68. package/lib/programmers/PlainBodyProgrammer.js.map +1 -1
  69. package/lib/programmers/TypedBodyProgrammer.js +57 -82
  70. package/lib/programmers/TypedBodyProgrammer.js.map +1 -1
  71. package/lib/programmers/TypedExceptionProgrammer.js +51 -54
  72. package/lib/programmers/TypedExceptionProgrammer.js.map +1 -1
  73. package/lib/programmers/TypedFormDataBodyProgrammer.js +50 -73
  74. package/lib/programmers/TypedFormDataBodyProgrammer.js.map +1 -1
  75. package/lib/programmers/TypedHeadersProgrammer.js +24 -43
  76. package/lib/programmers/TypedHeadersProgrammer.js.map +1 -1
  77. package/lib/programmers/TypedParamProgrammer.js +11 -28
  78. package/lib/programmers/TypedParamProgrammer.js.map +1 -1
  79. package/lib/programmers/TypedQueryBodyProgrammer.js +24 -43
  80. package/lib/programmers/TypedQueryBodyProgrammer.js.map +1 -1
  81. package/lib/programmers/TypedQueryProgrammer.js +24 -43
  82. package/lib/programmers/TypedQueryProgrammer.js.map +1 -1
  83. package/lib/programmers/TypedQueryRouteProgrammer.js +22 -39
  84. package/lib/programmers/TypedQueryRouteProgrammer.js.map +1 -1
  85. package/lib/programmers/TypedRouteProgrammer.js +22 -39
  86. package/lib/programmers/TypedRouteProgrammer.js.map +1 -1
  87. package/lib/programmers/http/HttpAssertQuerifyProgrammer.js +12 -29
  88. package/lib/programmers/http/HttpAssertQuerifyProgrammer.js.map +1 -1
  89. package/lib/programmers/http/HttpIsQuerifyProgrammer.js +10 -27
  90. package/lib/programmers/http/HttpIsQuerifyProgrammer.js.map +1 -1
  91. package/lib/programmers/http/HttpQuerifyProgrammer.js +33 -69
  92. package/lib/programmers/http/HttpQuerifyProgrammer.js.map +1 -1
  93. package/lib/programmers/http/HttpValidateQuerifyProgrammer.js +11 -28
  94. package/lib/programmers/http/HttpValidateQuerifyProgrammer.js.map +1 -1
  95. package/lib/programmers/internal/CoreMetadataUtil.js +12 -37
  96. package/lib/programmers/internal/CoreMetadataUtil.js.map +1 -1
  97. package/lib/transform.js +8 -8
  98. package/lib/transform.js.map +1 -1
  99. package/lib/transformers/FileTransformer.js +35 -66
  100. package/lib/transformers/FileTransformer.js.map +1 -1
  101. package/lib/transformers/MethodTransformer.js +36 -50
  102. package/lib/transformers/MethodTransformer.js.map +1 -1
  103. package/lib/transformers/NodeTransformer.js +8 -12
  104. package/lib/transformers/NodeTransformer.js.map +1 -1
  105. package/lib/transformers/ParameterDecoratorTransformer.js +75 -90
  106. package/lib/transformers/ParameterDecoratorTransformer.js.map +1 -1
  107. package/lib/transformers/ParameterTransformer.js +18 -24
  108. package/lib/transformers/ParameterTransformer.js.map +1 -1
  109. package/lib/transformers/TypedExceptionTransformer.js +25 -27
  110. package/lib/transformers/TypedExceptionTransformer.js.map +1 -1
  111. package/lib/transformers/TypedRouteTransformer.js +52 -88
  112. package/lib/transformers/TypedRouteTransformer.js.map +1 -1
  113. package/lib/utils/ArrayUtil.d.ts +3 -0
  114. package/lib/utils/ArrayUtil.js +11 -0
  115. package/lib/utils/ArrayUtil.js.map +1 -0
  116. package/lib/utils/ExceptionManager.js +9 -31
  117. package/lib/utils/ExceptionManager.js.map +1 -1
  118. package/lib/utils/Singleton.js +6 -7
  119. package/lib/utils/Singleton.js.map +1 -1
  120. package/lib/utils/SourceFinder.js +38 -215
  121. package/lib/utils/SourceFinder.js.map +1 -1
  122. package/lib/utils/VersioningStrategy.d.ts +9 -0
  123. package/lib/utils/VersioningStrategy.js +17 -0
  124. package/lib/utils/VersioningStrategy.js.map +1 -0
  125. package/package.json +9 -5
  126. package/src/adaptors/WebSocketAdaptor.ts +414 -0
  127. package/src/decorators/TypedParam.ts +5 -6
  128. package/src/decorators/TypedQuery.ts +251 -251
  129. package/src/decorators/WebSocketRoute.ts +249 -0
  130. package/src/decorators/internal/IWebSocketRouteReflect.ts +23 -0
  131. package/src/decorators/internal/validate_request_body.ts +72 -72
  132. package/src/decorators/internal/validate_request_form_data.ts +75 -75
  133. package/src/decorators/internal/validate_request_headers.ts +83 -83
  134. package/src/decorators/internal/validate_request_query.ts +71 -71
  135. package/src/module.ts +20 -16
  136. package/src/transformers/ParameterDecoratorTransformer.ts +129 -120
  137. package/src/typings/get-function-location.d.ts +7 -0
  138. package/src/utils/ArrayUtil.ts +7 -0
  139. package/src/utils/VersioningStrategy.ts +27 -0
@@ -0,0 +1,202 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.WebSocketRoute = void 0;
7
+ const typia_1 = __importDefault(require("typia"));
8
+ const NoTransformConfigureError_1 = require("./internal/NoTransformConfigureError");
9
+ const validate_request_body_1 = require("./internal/validate_request_body");
10
+ const validate_request_query_1 = require("./internal/validate_request_query");
11
+ /**
12
+ * WebSocket route decorator.
13
+ *
14
+ * `@WebSocketRoute` is a route decorator function for WebSocket routes.
15
+ * If you want to define a WebSocket route with this `@WebSocketRoute` decorator,
16
+ * please don't forget to call the {@link WebSocketAdaptor.upgrade} function
17
+ * to the {@link INestApplication} instance.
18
+ *
19
+ * Also, `WebSocketRoute` is a module containing parameter decorator
20
+ * functions of below for the `@WebSocketRoute` decorated method, at the same
21
+ * time. Note that, every parameters must be decorated by one of the parameter
22
+ * decorators in the `WebSocketRoute` module. One thing more important is,
23
+ * {@link WebSocketRoute.Acceptor} decorated parameter must be defined in the
24
+ * method. If not, it would be both compilation/runtime error.
25
+ *
26
+ * - {@link WebSocketRoute.Acceptor}
27
+ * - {@link WebSocketRoute.Driver}
28
+ * - {@link WebSocketRoute.Header}
29
+ * - {@link WebSocketRoute.Param}
30
+ * - {@link WebSocketRoute.Query}
31
+ *
32
+ * For reference, key difference between `@WebSocketGateway()` of NestJS and
33
+ * `@WebSocketRoute()` of Nestia is, `@WebSocketRoute()` can make multiple
34
+ * WebSocket routes by configuring *paths*, besides `@WebSocketGateway()`
35
+ * can't do it.
36
+ *
37
+ * Furthermore, if you build SDK (Software Development Kit) library through
38
+ * `@nestia/sdk`, you can make safe WebSocket client taking advantages of
39
+ * TypeScript type hints and checkings.
40
+ *
41
+ * @param path Path(s) of the WebSocket request
42
+ * @returns Method decorator
43
+ * @author Jeongho Nam - https://github.com/samchon
44
+ */
45
+ function WebSocketRoute(path) {
46
+ return function WebSocketRoute(_target, _propertyKey, descriptor) {
47
+ Reflect.defineMetadata("nestia/WebSocketRoute", {
48
+ paths: path === undefined ? [] : Array.isArray(path) ? path : [path],
49
+ }, descriptor.value);
50
+ return descriptor;
51
+ };
52
+ }
53
+ exports.WebSocketRoute = WebSocketRoute;
54
+ (function (WebSocketRoute) {
55
+ /**
56
+ * Acceptor parameter decorator.
57
+ *
58
+ * `@WebSocketRoute.Acceptor()` is a parameter decorator function for the
59
+ * `WebAcceptor<Header, Provider, Listener>` (of `tgrid`) typed parameter.
60
+ *
61
+ * In the controller method decorated by `@WebSocketRoute()` and
62
+ * `@WebSocketRoute.Acceptor()`, call {@link WebAcceptor.accept} function
63
+ * with `Provider` instance when you want to accept the WebSocket client
64
+ * connection. Otherwise you want to reject the connection, call
65
+ * {@link WebSocketAcceptor.rejcet} function instead.
66
+ *
67
+ * For reference, this `@WebSocketRoute.Acceptor()` parameter decorator is
68
+ * essential for the method decorated by `@WebSocketRoute()` decorator.
69
+ * If you forget it, it would be both compilation/runtime error.
70
+ */
71
+ function Acceptor() {
72
+ return function WebSocketAcceptor(target, propertyKey, parameterIndex) {
73
+ emplace(target, propertyKey !== null && propertyKey !== void 0 ? propertyKey : "", {
74
+ category: "acceptor",
75
+ index: parameterIndex,
76
+ });
77
+ };
78
+ }
79
+ WebSocketRoute.Acceptor = Acceptor;
80
+ /**
81
+ * Driver parameter decorator.
82
+ *
83
+ * `@WebSocketRoute.Driver()` is a parameter decorator function for the
84
+ * `Driver<Listener>` (of `tgrid`) typed parameter.
85
+ *
86
+ * With the `@WebSocketRoute.Driver()` decorated parameter, you can call
87
+ * function of `Listener` typed instance provided by remote WebSocket client
88
+ * by calling the `Driver<Listener>` instance.
89
+ *
90
+ * For reference, this `@WebSocketRoute.Driver()` decorator is optional, and
91
+ * can be substituted by `@WebSocketRoute.Acceptor()` decorated parameter
92
+ * by calling the {@link WebAcceptor.getDriver} function.
93
+ */
94
+ function Driver() {
95
+ return function WebSocketDriver(target, propertyKey, parameterIndex) {
96
+ emplace(target, propertyKey !== null && propertyKey !== void 0 ? propertyKey : "", {
97
+ category: "driver",
98
+ index: parameterIndex,
99
+ });
100
+ };
101
+ }
102
+ WebSocketRoute.Driver = Driver;
103
+ /**
104
+ * Header decorator.
105
+ *
106
+ * `@WebSocketRoute.Header()` is a parameter decorator function for the
107
+ * WebSocket header with type casting and assertion.
108
+ *
109
+ * For reference, `@WebSocketRoute.Header()` is different with HTTP headers.
110
+ * It's for WebSocket protocol, especially for TGrid's {@link WebConnector}
111
+ * and {@link WebAcceptor}'s special header.
112
+ *
113
+ * Also, this `@WebSocketRoute.Header()` decorator is optional, and
114
+ * can be substituted by `@WebSocketRoute.Acceptor()` decorated parameter
115
+ * by accessting to the {@link WebAcceptor.header} property.
116
+ */
117
+ function Header(validator) {
118
+ const validate = (0, validate_request_body_1.validate_request_body)("WebSocketRoute.Header")(validator);
119
+ return function WebSocketHeader(target, propertyKey, parameterIndex) {
120
+ emplace(target, propertyKey !== null && propertyKey !== void 0 ? propertyKey : "", {
121
+ category: "header",
122
+ index: parameterIndex,
123
+ validate,
124
+ });
125
+ };
126
+ }
127
+ WebSocketRoute.Header = Header;
128
+ Object.assign(Header, typia_1.default.is);
129
+ Object.assign(Header, typia_1.default.assert);
130
+ Object.assign(Header, typia_1.default.validate);
131
+ /**
132
+ * URL parameter decorator.
133
+ *
134
+ * `@WebSocketRoute.Param()` is a parameter decorator function for the URL
135
+ * parameter with type casting and assertion.
136
+ *
137
+ * It's almost same with the {@link TypedParam}, but
138
+ * `@WebSocketRoute.Param()` is only for WebSocket protocol router function
139
+ * decorated by {@link WebSocketRoute}.
140
+ *
141
+ * @param field URL parameter field name
142
+ */
143
+ function Param(field, assert) {
144
+ if (assert === undefined)
145
+ throw (0, NoTransformConfigureError_1.NoTransformConfigureError)("WebSocketRoute.Param");
146
+ return function WebSocketParam(target, propertyKey, parameterIndex) {
147
+ emplace(target, propertyKey !== null && propertyKey !== void 0 ? propertyKey : "", {
148
+ category: "param",
149
+ index: parameterIndex,
150
+ field,
151
+ assert,
152
+ });
153
+ };
154
+ }
155
+ WebSocketRoute.Param = Param;
156
+ Object.assign(Param, typia_1.default.http.parameter);
157
+ /**
158
+ * URL query decorator.
159
+ *
160
+ * `@WebSocketRoute.Query()` is a parameter decorator function for the URL
161
+ * query string with type casting and assertion.
162
+ *
163
+ * It is almost same with {@link TypedQuery}, but
164
+ * `@WebSocketRoute.Query()` is only for WebSocket protocol router function
165
+ * decorated by {@link WebSocketRoute}.
166
+ *
167
+ * For reference, as same with {@link TypedQuery}, `@WebSocketRoute.Query()`
168
+ * has same restriction for the target type `T`. If actual URL query
169
+ * parameter values are different with their promised type `T`,
170
+ * it would be runtime error.
171
+ *
172
+ * 1. Type `T` must be an object type
173
+ * 2. Do not allow dynamic property
174
+ * 3. Only `boolean`, `bigint`, `number`, `string` or their array types are allowed
175
+ * 4. By the way, union type never be not allowed
176
+ */
177
+ function Query(validator) {
178
+ const validate = (0, validate_request_query_1.validate_request_query)("WebSocketRoute.Query")(validator);
179
+ return function WebSocketQuery(target, propertyKey, parameterIndex) {
180
+ emplace(target, propertyKey !== null && propertyKey !== void 0 ? propertyKey : "", {
181
+ category: "query",
182
+ index: parameterIndex,
183
+ validate,
184
+ });
185
+ };
186
+ }
187
+ WebSocketRoute.Query = Query;
188
+ Object.assign(Query, typia_1.default.http.assertQuery);
189
+ Object.assign(Query, typia_1.default.http.isQuery);
190
+ Object.assign(Query, typia_1.default.http.validateQuery);
191
+ /**
192
+ * @internal
193
+ */
194
+ const emplace = (target, propertyKey, value) => {
195
+ const array = Reflect.getMetadata("nestia/WebSocketRoute/Parameters", target, propertyKey);
196
+ if (array !== undefined)
197
+ array.push(value);
198
+ else
199
+ Reflect.defineMetadata("nestia/WebSocketRoute/Parameters", [value], target, propertyKey);
200
+ };
201
+ })(WebSocketRoute || (exports.WebSocketRoute = WebSocketRoute = {}));
202
+ //# sourceMappingURL=WebSocketRoute.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WebSocketRoute.js","sourceRoot":"","sources":["../../src/decorators/WebSocketRoute.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ export interface IWebSocketRouteReflect {
2
+ paths: string[];
3
+ }
4
+ export declare namespace IWebSocketRouteReflect {
5
+ export type IArgument = IAcceptor | IDriver | IHeader | IParam | IQuery;
6
+ export interface IAcceptor extends IBase<"acceptor"> {
7
+ }
8
+ export interface IDriver extends IBase<"driver"> {
9
+ }
10
+ export interface IHeader extends IBase<"header"> {
11
+ validate: (input?: any) => Error | null;
12
+ }
13
+ export interface IParam extends IBase<"param"> {
14
+ field: string;
15
+ assert: (value: string) => any;
16
+ }
17
+ export interface IQuery extends IBase<"query"> {
18
+ validate: (input: URLSearchParams) => any | Error;
19
+ }
20
+ interface IBase<Category extends string> {
21
+ category: Category;
22
+ index: number;
23
+ }
24
+ export {};
25
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=IWebSocketRouteReflect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IWebSocketRouteReflect.js","sourceRoot":"","sources":["../../../src/decorators/internal/IWebSocketRouteReflect.ts"],"names":[],"mappings":""}
@@ -5,7 +5,7 @@ exports.NoTransformConfigureError = void 0;
5
5
  * @internal
6
6
  */
7
7
  function NoTransformConfigureError(method) {
8
- return new Error("Error on nestia.core.".concat(method, "(): no transform has been configured. Run \"npx typia setup\" command, or check if you're using non-standard TypeScript compiler like Babel or SWC."));
8
+ return new Error(`Error on nestia.core.${method}(): no transform has been configured. Run "npx typia setup" command, or check if you're using non-standard TypeScript compiler like Babel or SWC.`);
9
9
  }
10
10
  exports.NoTransformConfigureError = NoTransformConfigureError;
11
11
  //# sourceMappingURL=NoTransformConfigureError.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"NoTransformConfigureError.js","sourceRoot":"","sources":["../../../src/decorators/internal/NoTransformConfigureError.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACH,SAAgB,yBAAyB,CAAC,MAAc;IACtD,OAAO,IAAI,KAAK,CACd,+BAAwB,MAAM,wJAAmJ,CAClL,CAAC;AACJ,CAAC;AAJD,8DAIC"}
1
+ {"version":3,"file":"NoTransformConfigureError.js","sourceRoot":"","sources":["../../../src/decorators/internal/NoTransformConfigureError.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACH,SAAgB,yBAAyB,CAAC,MAAc;IACtD,OAAO,IAAI,KAAK,CACd,wBAAwB,MAAM,mJAAmJ,CAClL,CAAC;AACJ,CAAC;AAJD,8DAIC"}
@@ -1,167 +1,103 @@
1
1
  "use strict";
2
- var __values = (this && this.__values) || function(o) {
3
- var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
4
- if (m) return m.call(o);
5
- if (o && typeof o.length === "number") return {
6
- next: function () {
7
- if (o && i >= o.length) o = void 0;
8
- return { value: o && o[i++], done: !o };
9
- }
10
- };
11
- throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
12
- };
13
- var __read = (this && this.__read) || function (o, n) {
14
- var m = typeof Symbol === "function" && o[Symbol.iterator];
15
- if (!m) return o;
16
- var i = m.call(o), r, ar = [], e;
17
- try {
18
- while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
19
- }
20
- catch (error) { e = { error: error }; }
21
- finally {
22
- try {
23
- if (r && !r.done && (m = i["return"])) m.call(i);
24
- }
25
- finally { if (e) throw e.error; }
26
- }
27
- return ar;
28
- };
29
2
  var __importDefault = (this && this.__importDefault) || function (mod) {
30
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
31
4
  };
32
5
  Object.defineProperty(exports, "__esModule", { value: true });
33
6
  exports.get_path_and_querify = void 0;
34
- var common_1 = require("@nestjs/common");
35
- var typia_1 = __importDefault(require("typia"));
36
- var NoTransformConfigureError_1 = require("./NoTransformConfigureError");
7
+ const common_1 = require("@nestjs/common");
8
+ const typia_1 = __importDefault(require("typia"));
9
+ const NoTransformConfigureError_1 = require("./NoTransformConfigureError");
37
10
  /**
38
11
  * @internal
39
12
  */
40
- var get_path_and_querify = function (method) {
41
- return function () {
42
- var args = [];
43
- for (var _i = 0; _i < arguments.length; _i++) {
44
- args[_i] = arguments[_i];
45
- }
46
- var path = args[0] === undefined ||
47
- typeof args[0] === "string" ||
48
- Array.isArray(args[0])
49
- ? args[0]
50
- : null;
51
- var functor = path === null ? args[0] : args[1];
52
- return [path !== null && path !== void 0 ? path : undefined, take(method)(functor)];
53
- };
13
+ const get_path_and_querify = (method) => (...args) => {
14
+ const path = args[0] === undefined ||
15
+ typeof args[0] === "string" ||
16
+ Array.isArray(args[0])
17
+ ? args[0]
18
+ : null;
19
+ const functor = path === null ? args[0] : args[1];
20
+ return [path !== null && path !== void 0 ? path : undefined, take(method)(functor)];
54
21
  };
55
22
  exports.get_path_and_querify = get_path_and_querify;
56
23
  /**
57
24
  * @internal
58
25
  */
59
- var take = function (method) {
60
- return function (functor) {
61
- if (functor === undefined)
62
- throw (0, NoTransformConfigureError_1.NoTransformConfigureError)(method);
63
- else if (functor === null)
64
- return querify;
65
- else if (functor.type === "stringify")
66
- return functor.stringify;
67
- else if (functor.type === "assert")
68
- return assert(functor.assert);
69
- else if (functor.type === "is")
70
- return is(functor.is);
71
- else if (functor.type === "validate")
72
- return validate(functor.validate);
73
- throw new Error("Error on nestia.core.".concat(method, "(): invalid typed stringify function."));
74
- };
26
+ const take = (method) => (functor) => {
27
+ if (functor === undefined)
28
+ throw (0, NoTransformConfigureError_1.NoTransformConfigureError)(method);
29
+ else if (functor === null)
30
+ return querify;
31
+ else if (functor.type === "stringify")
32
+ return functor.stringify;
33
+ else if (functor.type === "assert")
34
+ return assert(functor.assert);
35
+ else if (functor.type === "is")
36
+ return is(functor.is);
37
+ else if (functor.type === "validate")
38
+ return validate(functor.validate);
39
+ throw new Error(`Error on nestia.core.${method}(): invalid typed stringify function.`);
75
40
  };
76
41
  /**
77
42
  * @internal
78
43
  */
79
- var querify = function (input) {
80
- var e_1, _a, e_2, _b;
81
- var output = new URLSearchParams();
82
- try {
83
- for (var _c = __values(Object.entries(input)), _d = _c.next(); !_d.done; _d = _c.next()) {
84
- var _e = __read(_d.value, 2), key = _e[0], value = _e[1];
85
- if (key === undefined)
86
- continue;
87
- else if (Array.isArray(value))
88
- try {
89
- for (var value_1 = (e_2 = void 0, __values(value)), value_1_1 = value_1.next(); !value_1_1.done; value_1_1 = value_1.next()) {
90
- var elem = value_1_1.value;
91
- output.append(key, String(elem));
92
- }
93
- }
94
- catch (e_2_1) { e_2 = { error: e_2_1 }; }
95
- finally {
96
- try {
97
- if (value_1_1 && !value_1_1.done && (_b = value_1.return)) _b.call(value_1);
98
- }
99
- finally { if (e_2) throw e_2.error; }
100
- }
101
- else
102
- output.append(key, String(value));
103
- }
104
- }
105
- catch (e_1_1) { e_1 = { error: e_1_1 }; }
106
- finally {
107
- try {
108
- if (_d && !_d.done && (_a = _c.return)) _a.call(_c);
109
- }
110
- finally { if (e_1) throw e_1.error; }
111
- }
44
+ const querify = (input) => {
45
+ const output = new URLSearchParams();
46
+ for (const [key, value] of Object.entries(input))
47
+ if (key === undefined)
48
+ continue;
49
+ else if (Array.isArray(value))
50
+ for (const elem of value)
51
+ output.append(key, String(elem));
52
+ else
53
+ output.append(key, String(value));
112
54
  return output;
113
55
  };
114
56
  /**
115
57
  * @internal
116
58
  */
117
- var assert = function (closure) {
118
- return function (data) {
119
- try {
120
- return closure(data);
121
- }
122
- catch (exp) {
123
- if ((function (input) {
124
- var $io0 = function (input) { return "string" === typeof input.method && (undefined === input.path || "string" === typeof input.path) && "string" === typeof input.expected && true && "string" === typeof input.name && "string" === typeof input.message && (undefined === input.stack || "string" === typeof input.stack); };
125
- return "object" === typeof input && null !== input && $io0(input);
126
- })(exp))
127
- throw new common_1.InternalServerErrorException({
128
- path: exp.path,
129
- reason: exp.message,
130
- expected: exp.expected,
131
- value: exp.value,
132
- message: MESSAGE,
133
- });
134
- throw exp;
135
- }
136
- };
59
+ const assert = (closure) => (data) => {
60
+ try {
61
+ return closure(data);
62
+ }
63
+ catch (exp) {
64
+ if ((input => {
65
+ const $io0 = input => "string" === typeof input.method && (undefined === input.path || "string" === typeof input.path) && "string" === typeof input.expected && true && "string" === typeof input.name && "string" === typeof input.message && (undefined === input.stack || "string" === typeof input.stack);
66
+ return "object" === typeof input && null !== input && $io0(input);
67
+ })(exp))
68
+ throw new common_1.InternalServerErrorException({
69
+ path: exp.path,
70
+ reason: exp.message,
71
+ expected: exp.expected,
72
+ value: exp.value,
73
+ message: MESSAGE,
74
+ });
75
+ throw exp;
76
+ }
137
77
  };
138
78
  /**
139
79
  * @internal
140
80
  */
141
- var is = function (closure) {
142
- return function (data) {
143
- var result = closure(data);
144
- if (result === null)
145
- throw new common_1.InternalServerErrorException(MESSAGE);
146
- return result;
147
- };
81
+ const is = (closure) => (data) => {
82
+ const result = closure(data);
83
+ if (result === null)
84
+ throw new common_1.InternalServerErrorException(MESSAGE);
85
+ return result;
148
86
  };
149
87
  /**
150
88
  * @internal
151
89
  */
152
- var validate = function (closure) {
153
- return function (data) {
154
- var result = closure(data);
155
- if (result.success === false)
156
- throw new common_1.InternalServerErrorException({
157
- errors: result.errors,
158
- message: MESSAGE,
159
- });
160
- return result.data;
161
- };
90
+ const validate = (closure) => (data) => {
91
+ const result = closure(data);
92
+ if (result.success === false)
93
+ throw new common_1.InternalServerErrorException({
94
+ errors: result.errors,
95
+ message: MESSAGE,
96
+ });
97
+ return result.data;
162
98
  };
163
99
  /**
164
100
  * @internal
165
101
  */
166
- var MESSAGE = "Response body data is not following the promised type.";
102
+ const MESSAGE = "Response body data is not following the promised type.";
167
103
  //# sourceMappingURL=get_path_and_querify.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"get_path_and_querify.js","sourceRoot":"","sources":["../../../src/decorators/internal/get_path_and_querify.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"get_path_and_querify.js","sourceRoot":"","sources":["../../../src/decorators/internal/get_path_and_querify.ts"],"names":[],"mappings":"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"}