@spinajs/http 2.0.180 → 2.0.181

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 (247) hide show
  1. package/lib/cjs/bootstrap.d.ts +4 -4
  2. package/lib/cjs/bootstrap.js +29 -29
  3. package/lib/cjs/bootstrap.js.map +1 -1
  4. package/lib/cjs/config/http.d.ts +58 -58
  5. package/lib/cjs/config/http.js +86 -86
  6. package/lib/cjs/controllers.d.ts +48 -48
  7. package/lib/cjs/controllers.d.ts.map +1 -1
  8. package/lib/cjs/controllers.js +307 -312
  9. package/lib/cjs/controllers.js.map +1 -1
  10. package/lib/cjs/decorators.d.ts +183 -183
  11. package/lib/cjs/decorators.js +441 -441
  12. package/lib/cjs/hydrators/DateTimeHydrator.d.ts +5 -5
  13. package/lib/cjs/hydrators/DateTimeHydrator.js +36 -36
  14. package/lib/cjs/hydrators/DateTimeHydrator.js.map +1 -1
  15. package/lib/cjs/index.d.ts +9 -9
  16. package/lib/cjs/index.js +25 -25
  17. package/lib/cjs/interfaces.d.ts +569 -550
  18. package/lib/cjs/interfaces.d.ts.map +1 -1
  19. package/lib/cjs/interfaces.js +266 -259
  20. package/lib/cjs/interfaces.js.map +1 -1
  21. package/lib/cjs/middlewares/RealIp.d.ts +8 -8
  22. package/lib/cjs/middlewares/RealIp.js +34 -34
  23. package/lib/cjs/middlewares/RealIp.js.map +1 -1
  24. package/lib/cjs/middlewares/RequestId.d.ts +8 -8
  25. package/lib/cjs/middlewares/RequestId.js +35 -35
  26. package/lib/cjs/middlewares/RequestId.js.map +1 -1
  27. package/lib/cjs/middlewares/ResponseTime.d.ts +10 -10
  28. package/lib/cjs/middlewares/ResponseTime.js +41 -41
  29. package/lib/cjs/middlewares/ResponseTime.js.map +1 -1
  30. package/lib/cjs/response-methods/badRequest.d.ts +12 -12
  31. package/lib/cjs/response-methods/badRequest.js +20 -20
  32. package/lib/cjs/response-methods/conflict.d.ts +12 -12
  33. package/lib/cjs/response-methods/conflict.js +20 -20
  34. package/lib/cjs/response-methods/cookieResponse.d.ts +19 -19
  35. package/lib/cjs/response-methods/cookieResponse.js +73 -73
  36. package/lib/cjs/response-methods/created.d.ts +12 -12
  37. package/lib/cjs/response-methods/created.js +19 -19
  38. package/lib/cjs/response-methods/errorResponse.d.ts +7 -7
  39. package/lib/cjs/response-methods/errorResponse.js +24 -24
  40. package/lib/cjs/response-methods/file.d.ts +26 -26
  41. package/lib/cjs/response-methods/file.d.ts.map +1 -1
  42. package/lib/cjs/response-methods/file.js +112 -133
  43. package/lib/cjs/response-methods/file.js.map +1 -1
  44. package/lib/cjs/response-methods/forbidden.d.ts +12 -12
  45. package/lib/cjs/response-methods/forbidden.js +20 -20
  46. package/lib/cjs/response-methods/index.d.ts +13 -13
  47. package/lib/cjs/response-methods/index.js +29 -29
  48. package/lib/cjs/response-methods/noContent.d.ts +12 -12
  49. package/lib/cjs/response-methods/noContent.js +20 -20
  50. package/lib/cjs/response-methods/notAcceptable.d.ts +13 -13
  51. package/lib/cjs/response-methods/notAcceptable.js +21 -21
  52. package/lib/cjs/response-methods/notAllowed.d.ts +12 -12
  53. package/lib/cjs/response-methods/notAllowed.js +20 -20
  54. package/lib/cjs/response-methods/notFound.d.ts +12 -12
  55. package/lib/cjs/response-methods/notFound.js +20 -20
  56. package/lib/cjs/response-methods/ok.d.ts +12 -12
  57. package/lib/cjs/response-methods/ok.js +19 -19
  58. package/lib/cjs/response-methods/redirect.d.ts +12 -12
  59. package/lib/cjs/response-methods/redirect.js +19 -19
  60. package/lib/cjs/response-methods/serverError.d.ts +12 -12
  61. package/lib/cjs/response-methods/serverError.js +20 -20
  62. package/lib/cjs/response-methods/template.d.ts +15 -15
  63. package/lib/cjs/response-methods/template.js +36 -36
  64. package/lib/cjs/response-methods/unauthorized.d.ts +12 -12
  65. package/lib/cjs/response-methods/unauthorized.js +20 -20
  66. package/lib/cjs/response-methods/validationError.d.ts +12 -12
  67. package/lib/cjs/response-methods/validationError.js +20 -20
  68. package/lib/cjs/responses.d.ts +34 -34
  69. package/lib/cjs/responses.js +173 -173
  70. package/lib/cjs/route-args/ArgAsRequest.d.ts +11 -11
  71. package/lib/cjs/route-args/ArgAsRequest.js +24 -24
  72. package/lib/cjs/route-args/ArgAsRequest.js.map +1 -1
  73. package/lib/cjs/route-args/ArgAsResponse.d.ts +10 -10
  74. package/lib/cjs/route-args/ArgAsResponse.js +24 -24
  75. package/lib/cjs/route-args/ArgAsResponse.js.map +1 -1
  76. package/lib/cjs/route-args/ArgHydrator.d.ts +4 -4
  77. package/lib/cjs/route-args/ArgHydrator.js +6 -6
  78. package/lib/cjs/route-args/FromBody.d.ts +10 -10
  79. package/lib/cjs/route-args/FromBody.js +26 -26
  80. package/lib/cjs/route-args/FromBody.js.map +1 -1
  81. package/lib/cjs/route-args/FromCookie.d.ts +13 -13
  82. package/lib/cjs/route-args/FromCookie.js +72 -72
  83. package/lib/cjs/route-args/FromCookie.js.map +1 -1
  84. package/lib/cjs/route-args/FromDi.d.ts +13 -13
  85. package/lib/cjs/route-args/FromDi.js +35 -35
  86. package/lib/cjs/route-args/FromDi.js.map +1 -1
  87. package/lib/cjs/route-args/FromForm.d.ts +66 -92
  88. package/lib/cjs/route-args/FromForm.d.ts.map +1 -1
  89. package/lib/cjs/route-args/FromForm.js +214 -291
  90. package/lib/cjs/route-args/FromForm.js.map +1 -1
  91. package/lib/cjs/route-args/FromHeaderArg.d.ts +10 -10
  92. package/lib/cjs/route-args/FromHeaderArg.js +25 -25
  93. package/lib/cjs/route-args/FromHeaderArg.js.map +1 -1
  94. package/lib/cjs/route-args/FromParams.d.ts +10 -10
  95. package/lib/cjs/route-args/FromParams.js +27 -27
  96. package/lib/cjs/route-args/FromParams.js.map +1 -1
  97. package/lib/cjs/route-args/FromQuery.d.ts +10 -10
  98. package/lib/cjs/route-args/FromQuery.js +27 -27
  99. package/lib/cjs/route-args/FromQuery.js.map +1 -1
  100. package/lib/cjs/route-args/RequestFields.d.ts +40 -40
  101. package/lib/cjs/route-args/RequestFields.js +110 -110
  102. package/lib/cjs/route-args/RequestFields.js.map +1 -1
  103. package/lib/cjs/route-args/RouteArgs.d.ts +22 -22
  104. package/lib/cjs/route-args/RouteArgs.js +114 -114
  105. package/lib/cjs/route-args/RouteArgs.js.map +1 -1
  106. package/lib/cjs/route-args/index.d.ts +12 -12
  107. package/lib/cjs/route-args/index.js +28 -28
  108. package/lib/cjs/schemas/RouteArgsSchemas.d.ts +36 -36
  109. package/lib/cjs/schemas/RouteArgsSchemas.js +26 -26
  110. package/lib/cjs/server.d.ts +50 -50
  111. package/lib/cjs/server.js +272 -272
  112. package/lib/cjs/server.js.map +1 -1
  113. package/lib/cjs/transformers/PureTransformer.d.ts +9 -9
  114. package/lib/cjs/transformers/PureTransformer.js +27 -27
  115. package/lib/cjs/transformers/PureTransformer.js.map +1 -1
  116. package/lib/cjs/transformers/index.d.ts +1 -1
  117. package/lib/cjs/transformers/index.js +17 -17
  118. package/lib/cjs/uploaders/ImmediateFileUploader.d.ts +19 -0
  119. package/lib/cjs/uploaders/ImmediateFileUploader.d.ts.map +1 -0
  120. package/lib/cjs/uploaders/ImmediateFileUploader.js +69 -0
  121. package/lib/cjs/uploaders/ImmediateFileUploader.js.map +1 -0
  122. package/lib/mjs/bootstrap.d.ts +4 -4
  123. package/lib/mjs/bootstrap.js +26 -26
  124. package/lib/mjs/bootstrap.js.map +1 -1
  125. package/lib/mjs/config/http.d.ts +58 -58
  126. package/lib/mjs/config/http.js +81 -81
  127. package/lib/mjs/controllers.d.ts +48 -48
  128. package/lib/mjs/controllers.d.ts.map +1 -1
  129. package/lib/mjs/controllers.js +276 -281
  130. package/lib/mjs/controllers.js.map +1 -1
  131. package/lib/mjs/decorators.d.ts +183 -183
  132. package/lib/mjs/decorators.js +404 -404
  133. package/lib/mjs/exceptions.d.ts +1 -1
  134. package/lib/mjs/exceptions.js +1 -1
  135. package/lib/mjs/hydrators/DateTimeHydrator.d.ts +5 -5
  136. package/lib/mjs/hydrators/DateTimeHydrator.js +30 -30
  137. package/lib/mjs/hydrators/DateTimeHydrator.js.map +1 -1
  138. package/lib/mjs/index.d.ts +9 -9
  139. package/lib/mjs/index.js +9 -9
  140. package/lib/mjs/interfaces.d.ts +569 -550
  141. package/lib/mjs/interfaces.d.ts.map +1 -1
  142. package/lib/mjs/interfaces.js +257 -251
  143. package/lib/mjs/interfaces.js.map +1 -1
  144. package/lib/mjs/middlewares/RealIp.d.ts +8 -8
  145. package/lib/mjs/middlewares/RealIp.js +31 -31
  146. package/lib/mjs/middlewares/RealIp.js.map +1 -1
  147. package/lib/mjs/middlewares/RequestId.d.ts +8 -8
  148. package/lib/mjs/middlewares/RequestId.js +32 -32
  149. package/lib/mjs/middlewares/RequestId.js.map +1 -1
  150. package/lib/mjs/middlewares/ResponseTime.d.ts +10 -10
  151. package/lib/mjs/middlewares/ResponseTime.js +38 -38
  152. package/lib/mjs/middlewares/ResponseTime.js.map +1 -1
  153. package/lib/mjs/response-methods/badRequest.d.ts +12 -12
  154. package/lib/mjs/response-methods/badRequest.js +16 -16
  155. package/lib/mjs/response-methods/conflict.d.ts +12 -12
  156. package/lib/mjs/response-methods/conflict.js +16 -16
  157. package/lib/mjs/response-methods/cookieResponse.d.ts +19 -19
  158. package/lib/mjs/response-methods/cookieResponse.js +46 -46
  159. package/lib/mjs/response-methods/created.d.ts +12 -12
  160. package/lib/mjs/response-methods/created.js +15 -15
  161. package/lib/mjs/response-methods/errorResponse.d.ts +7 -7
  162. package/lib/mjs/response-methods/errorResponse.js +17 -17
  163. package/lib/mjs/response-methods/file.d.ts +26 -26
  164. package/lib/mjs/response-methods/file.d.ts.map +1 -1
  165. package/lib/mjs/response-methods/file.js +103 -124
  166. package/lib/mjs/response-methods/file.js.map +1 -1
  167. package/lib/mjs/response-methods/forbidden.d.ts +12 -12
  168. package/lib/mjs/response-methods/forbidden.js +16 -16
  169. package/lib/mjs/response-methods/index.d.ts +13 -13
  170. package/lib/mjs/response-methods/index.js +13 -13
  171. package/lib/mjs/response-methods/noContent.d.ts +12 -12
  172. package/lib/mjs/response-methods/noContent.js +16 -16
  173. package/lib/mjs/response-methods/notAcceptable.d.ts +13 -13
  174. package/lib/mjs/response-methods/notAcceptable.js +17 -17
  175. package/lib/mjs/response-methods/notAllowed.d.ts +12 -12
  176. package/lib/mjs/response-methods/notAllowed.js +16 -16
  177. package/lib/mjs/response-methods/notFound.d.ts +12 -12
  178. package/lib/mjs/response-methods/notFound.js +16 -16
  179. package/lib/mjs/response-methods/ok.d.ts +12 -12
  180. package/lib/mjs/response-methods/ok.js +15 -15
  181. package/lib/mjs/response-methods/redirect.d.ts +12 -12
  182. package/lib/mjs/response-methods/redirect.js +15 -15
  183. package/lib/mjs/response-methods/serverError.d.ts +12 -12
  184. package/lib/mjs/response-methods/serverError.js +16 -16
  185. package/lib/mjs/response-methods/template.d.ts +15 -15
  186. package/lib/mjs/response-methods/template.js +29 -29
  187. package/lib/mjs/response-methods/unauthorized.d.ts +12 -12
  188. package/lib/mjs/response-methods/unauthorized.js +16 -16
  189. package/lib/mjs/response-methods/validationError.d.ts +12 -12
  190. package/lib/mjs/response-methods/validationError.js +16 -16
  191. package/lib/mjs/responses.d.ts +34 -34
  192. package/lib/mjs/responses.js +143 -143
  193. package/lib/mjs/route-args/ArgAsRequest.d.ts +11 -11
  194. package/lib/mjs/route-args/ArgAsRequest.js +21 -21
  195. package/lib/mjs/route-args/ArgAsRequest.js.map +1 -1
  196. package/lib/mjs/route-args/ArgAsResponse.d.ts +10 -10
  197. package/lib/mjs/route-args/ArgAsResponse.js +21 -21
  198. package/lib/mjs/route-args/ArgAsResponse.js.map +1 -1
  199. package/lib/mjs/route-args/ArgHydrator.d.ts +4 -4
  200. package/lib/mjs/route-args/ArgHydrator.js +2 -2
  201. package/lib/mjs/route-args/FromBody.d.ts +10 -10
  202. package/lib/mjs/route-args/FromBody.js +23 -23
  203. package/lib/mjs/route-args/FromBody.js.map +1 -1
  204. package/lib/mjs/route-args/FromCookie.d.ts +13 -13
  205. package/lib/mjs/route-args/FromCookie.js +46 -46
  206. package/lib/mjs/route-args/FromCookie.js.map +1 -1
  207. package/lib/mjs/route-args/FromDi.d.ts +13 -13
  208. package/lib/mjs/route-args/FromDi.js +32 -32
  209. package/lib/mjs/route-args/FromDi.js.map +1 -1
  210. package/lib/mjs/route-args/FromForm.d.ts +66 -92
  211. package/lib/mjs/route-args/FromForm.d.ts.map +1 -1
  212. package/lib/mjs/route-args/FromForm.js +210 -284
  213. package/lib/mjs/route-args/FromForm.js.map +1 -1
  214. package/lib/mjs/route-args/FromHeaderArg.d.ts +10 -10
  215. package/lib/mjs/route-args/FromHeaderArg.js +22 -22
  216. package/lib/mjs/route-args/FromHeaderArg.js.map +1 -1
  217. package/lib/mjs/route-args/FromParams.d.ts +10 -10
  218. package/lib/mjs/route-args/FromParams.js +24 -24
  219. package/lib/mjs/route-args/FromParams.js.map +1 -1
  220. package/lib/mjs/route-args/FromQuery.d.ts +10 -10
  221. package/lib/mjs/route-args/FromQuery.js +24 -24
  222. package/lib/mjs/route-args/FromQuery.js.map +1 -1
  223. package/lib/mjs/route-args/RequestFields.d.ts +40 -40
  224. package/lib/mjs/route-args/RequestFields.js +107 -107
  225. package/lib/mjs/route-args/RequestFields.js.map +1 -1
  226. package/lib/mjs/route-args/RouteArgs.d.ts +22 -22
  227. package/lib/mjs/route-args/RouteArgs.js +107 -107
  228. package/lib/mjs/route-args/RouteArgs.js.map +1 -1
  229. package/lib/mjs/route-args/index.d.ts +12 -12
  230. package/lib/mjs/route-args/index.js +12 -12
  231. package/lib/mjs/schemas/RouteArgsSchemas.d.ts +36 -36
  232. package/lib/mjs/schemas/RouteArgsSchemas.js +23 -23
  233. package/lib/mjs/server.d.ts +50 -50
  234. package/lib/mjs/server.js +266 -266
  235. package/lib/mjs/server.js.map +1 -1
  236. package/lib/mjs/transformers/PureTransformer.d.ts +9 -9
  237. package/lib/mjs/transformers/PureTransformer.js +24 -24
  238. package/lib/mjs/transformers/PureTransformer.js.map +1 -1
  239. package/lib/mjs/transformers/index.d.ts +1 -1
  240. package/lib/mjs/transformers/index.js +1 -1
  241. package/lib/mjs/uploaders/ImmediateFileUploader.d.ts +19 -0
  242. package/lib/mjs/uploaders/ImmediateFileUploader.d.ts.map +1 -0
  243. package/lib/mjs/uploaders/ImmediateFileUploader.js +66 -0
  244. package/lib/mjs/uploaders/ImmediateFileUploader.js.map +1 -0
  245. package/lib/tsconfig.cjs.tsbuildinfo +1 -1
  246. package/lib/tsconfig.mjs.tsbuildinfo +1 -1
  247. package/package.json +17 -17
@@ -1,282 +1,277 @@
1
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
- return c > 3 && r && Object.defineProperty(target, key, r), r;
6
- };
7
- var __metadata = (this && this.__metadata) || function (k, v) {
8
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
- };
10
- import { BasePolicy, ParameterType } from './interfaces.js';
11
- import { AsyncService, Autoinject, DI, ClassInfo, Container } from '@spinajs/di';
12
- import * as express from 'express';
13
- import { CONTROLLED_DESCRIPTOR_SYMBOL } from './decorators.js';
14
- import { UnexpectedServerError, IOFail } from '@spinajs/exceptions';
15
- import { TypescriptCompiler, ResolveFromFiles } from '@spinajs/reflection';
16
- import { HttpServer } from './server.js';
17
- import { Logger, Log } from '@spinajs/log';
18
- import { DataValidator } from '@spinajs/validation';
19
- import { AsyncLocalStorage } from 'node:async_hooks';
20
- import { isPromise } from 'node:util/types';
21
- import { Response } from './interfaces.js';
22
- import * as fs from 'fs';
23
- import { basename } from 'node:path';
24
- import { Configuration } from '@spinajs/configuration';
25
- import _ from 'lodash';
26
- export class BaseController extends AsyncService {
27
- /**
28
- * Express router with middleware stack
29
- */
30
- get Router() {
31
- return this._router;
32
- }
33
- /**
34
- * Controller descriptor
35
- */
36
- get Descriptor() {
37
- return Reflect.getMetadata(CONTROLLED_DESCRIPTOR_SYMBOL, this);
38
- }
39
- /**
40
- * Base path for all controller routes eg. my/custom/path/
41
- *
42
- * It can be defined via `@BasePath` decorator, defaults to controller name without `Controller` part.
43
- */
44
- get BasePath() {
45
- return this.Descriptor.BasePath ? this.Descriptor.BasePath : this.constructor.name.toLowerCase();
46
- }
47
- async resolve() {
48
- const self = this;
49
- if (!this.Descriptor) {
50
- this._log.warn(`Controller ${this.constructor.name} does not have descriptor. It its abstract or base class ignore this message.`);
51
- return;
52
- }
53
- this._router = express.Router();
54
- this._actionLocalStorage = DI.get((AsyncLocalStorage));
55
- for (const [, route] of this.Descriptor.Routes) {
56
- const handlers = [];
57
- let path = '';
58
- if (route.Path) {
59
- if (route.Path === '/') {
60
- path = `/${this.BasePath}`;
61
- }
62
- else {
63
- path = `/${this.BasePath}/${route.Path}`;
64
- }
65
- }
66
- else {
67
- path = `/${this.BasePath}/${route.Method}`;
68
- }
69
- const middlewares = await Promise.all(this.Descriptor.Middlewares.concat(route.Middlewares || []).map((m) => {
70
- return self._container.resolve(m.Type, m.Options);
71
- }));
72
- const policies = await Promise.all(this.Descriptor.Policies.concat(route.Policies || [])
73
- .map((m) => {
74
- if (_.isString(m.Type)) {
75
- const policyType = this._cfg.get(m.Type);
76
- if (!DI.checkType(BasePolicy, policyType)) {
77
- self._log.warn(`No policy named ${policyType} is registered ( check your configuration at ${m.Type})`);
78
- return null;
79
- }
80
- else {
81
- self._log.trace(`Policy ${policyType} is used in controller ${self.constructor.name}::${route.Method} at path ${path}`);
82
- return self._container.resolve(policyType, m.Options);
83
- }
84
- }
85
- else {
86
- self._log.trace(`Policy ${m.Type.name} is used in controller ${self.constructor.name}::${route.Method} at path ${path}`);
87
- return self._container.resolve(m.Type, m.Options);
88
- }
89
- })
90
- .filter((x) => x !== null));
91
- const enabledMiddlewares = middlewares.filter((m) => m.isEnabled(route, this));
92
- this._log.trace(`Registering route ${route.Type.toUpperCase()} ${this.constructor.name}::${route.Method} at ${path}`);
93
- handlers.push(...policies.filter((p) => p.isEnabled(route, this)).map((p) => _invokePolicyAction(p, p.execute.bind(p), route)));
94
- handlers.push(...enabledMiddlewares.map((m) => _invokeAction(m, m.onBefore.bind(m), route)));
95
- const acionWrapper = async (req, res, next) => {
96
- try {
97
- await this._actionLocalStorage.run(req.storage, async () => {
98
- const args = (await _extractRouteArgs(route, req, res)).concat([req, res, next]);
99
- try {
100
- const result = this[route.Method].call(this, ...args);
101
- if (isPromise(result)) {
102
- result
103
- .then((r) => {
104
- if (r instanceof Response) {
105
- enabledMiddlewares.forEach((x) => x.onResponse(r, route, this));
106
- }
107
- res.locals.response = r;
108
- next();
109
- })
110
- .catch((err) => {
111
- next(err);
112
- });
113
- }
114
- else {
115
- if (result instanceof Response) {
116
- enabledMiddlewares.forEach((x) => x.onResponse(result, route, this));
117
- }
118
- res.locals.response = result;
119
- next();
120
- }
121
- }
122
- catch (err) {
123
- next(err);
124
- }
125
- });
126
- }
127
- catch (err) {
128
- next(err);
129
- }
130
- };
131
- Object.defineProperty(acionWrapper, 'name', {
132
- value: this.constructor.name,
133
- writable: true,
134
- });
135
- handlers.push(acionWrapper);
136
- handlers.push(...enabledMiddlewares.map((m) => _invokeAction(m, m.onAfter.bind(m), route)));
137
- // register to express router
138
- this._router[route.InternalType](path, handlers);
139
- }
140
- function _invokeAction(source, action, route) {
141
- const wrapper = (req, res, next) => {
142
- action(req, res, route, self)
143
- .then(() => {
144
- next();
145
- })
146
- .catch((err) => {
147
- next(err);
148
- });
149
- };
150
- Object.defineProperty(wrapper, 'name', {
151
- value: source.constructor.name,
152
- writable: true,
153
- });
154
- return wrapper;
155
- }
156
- function _invokePolicyAction(source, action, route) {
157
- const wrapper = (req, _res, next) => {
158
- action(req, route, self)
159
- .then(next)
160
- .catch((err) => {
161
- self._log.trace(`route ${self.constructor.name}:${route.Method} ${self.BasePath}${route.Path} error ${err}, policy: ${source.constructor.name}`);
162
- next(err);
163
- });
164
- };
165
- Object.defineProperty(wrapper, 'name', {
166
- value: source.constructor.name,
167
- writable: true,
168
- });
169
- return wrapper;
170
- }
171
- async function _extractRouteArgs(route, req, res) {
172
- const args = new Array(route.Parameters.size);
173
- let callData = {
174
- Payload: {},
175
- };
176
- const argsCache = new Map();
177
- let formCache = null;
178
- for (const [, param] of route.Parameters) {
179
- if (!argsCache.has(param.Type)) {
180
- const fArg = await DI.resolve(param.Type, formCache ? [formCache.Data] : []);
181
- argsCache.set(param.Type, fArg);
182
- if (!formCache && (param.Type === ParameterType.FormField || param.Type === ParameterType.FromCSV || param.Type === ParameterType.FromJSONFile || param.Type === ParameterType.FromForm || param.Type === ParameterType.FromFile)) {
183
- formCache = fArg;
184
- }
185
- }
186
- const extractor = argsCache.get(param.Type);
187
- if (!extractor) {
188
- throw new UnexpectedServerError('invalid route parameter type for param: ' + param.Name);
189
- }
190
- const { Args } = await extractor.extract(callData, param, req, res, route);
191
- args[param.Index] = Args;
192
- }
193
- return args;
194
- }
195
- }
196
- }
197
- __decorate([
198
- Autoinject(Container),
199
- __metadata("design:type", Object)
200
- ], BaseController.prototype, "_container", void 0);
201
- __decorate([
202
- Autoinject(),
203
- __metadata("design:type", DataValidator)
204
- ], BaseController.prototype, "_validator", void 0);
205
- __decorate([
206
- Logger('http'),
207
- __metadata("design:type", Log)
208
- ], BaseController.prototype, "_log", void 0);
209
- __decorate([
210
- Autoinject(),
211
- __metadata("design:type", AsyncLocalStorage)
212
- ], BaseController.prototype, "_actionLocalStorage", void 0);
213
- __decorate([
214
- Autoinject(Configuration),
215
- __metadata("design:type", Configuration)
216
- ], BaseController.prototype, "_cfg", void 0);
217
- export class Controllers extends AsyncService {
218
- async registerFromFile(file) {
219
- if (!fs.existsSync(file)) {
220
- throw new IOFail(`Controller file at path ${file} not found`);
221
- }
222
- const types = await DI.__spinajs_require__(file.replace('.js', '.d.ts'));
223
- const typeName = basename(basename(file, '.js'), '.ts');
224
- const type = types[typeName];
225
- const instance = await DI.resolve(type);
226
- const ci = new ClassInfo();
227
- ci.file = file.replace('.js', '.d.ts');
228
- ci.instance = instance;
229
- ci.name = typeName;
230
- ci.type = type;
231
- return await this.register(ci);
232
- }
233
- async register(controller) {
234
- this.Log.trace(`Loading controller: ${controller.name}`);
235
- const compiler = new TypescriptCompiler(controller.file.replace('.js', '.d.ts'));
236
- const members = compiler.getClassMembers(controller.name);
237
- if (!controller.instance.Descriptor) {
238
- this.Log.warn(`Controller ${controller.name} in file ${controller.file} dont have descriptor or routes defined`);
239
- }
240
- else {
241
- for (const [name, route] of controller.instance.Descriptor.Routes) {
242
- if (members.has(name)) {
243
- const member = members.get(name);
244
- for (const [index, rParam] of route.Parameters) {
245
- const parameterInfo = member.parameters[index];
246
- if (parameterInfo) {
247
- rParam.Name = parameterInfo.name.text;
248
- }
249
- }
250
- }
251
- else {
252
- this.Log.error(`Controller ${controller.name} does not have member ${name} for route ${route.Path}`);
253
- }
254
- }
255
- this.Server.use(controller.instance.Router);
256
- }
257
- }
258
- async resolve() {
259
- const controllers = await this.Controllers;
260
- // extract parameters info from controllers source code & register in http server
261
- for (const controller of controllers.filter((x) => x !== undefined && x !== null)) {
262
- this.register(controller);
263
- }
264
- }
265
- }
266
- __decorate([
267
- ResolveFromFiles('/**/!(*.d).{ts,js}', 'system.dirs.controllers'),
268
- __metadata("design:type", Promise)
269
- ], Controllers.prototype, "Controllers", void 0);
270
- __decorate([
271
- Logger('http'),
272
- __metadata("design:type", Log)
273
- ], Controllers.prototype, "Log", void 0);
274
- __decorate([
275
- Autoinject(Container),
276
- __metadata("design:type", Object)
277
- ], Controllers.prototype, "Container", void 0);
278
- __decorate([
279
- Autoinject(),
280
- __metadata("design:type", HttpServer)
281
- ], Controllers.prototype, "Server", void 0);
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ import { AsyncLocalStorage } from 'node:async_hooks';
11
+ import { isPromise } from 'node:util/types';
12
+ import { basename } from 'node:path';
13
+ import * as fs from 'node:fs';
14
+ import * as express from 'express';
15
+ import _ from 'lodash';
16
+ import { AsyncService, Autoinject, DI, ClassInfo, Container } from '@spinajs/di';
17
+ import { UnexpectedServerError, IOFail } from '@spinajs/exceptions';
18
+ import { TypescriptCompiler, ResolveFromFiles } from '@spinajs/reflection';
19
+ import { Logger, Log } from '@spinajs/log';
20
+ import { DataValidator } from '@spinajs/validation';
21
+ import { Configuration } from '@spinajs/configuration';
22
+ import { HttpServer } from './server.js';
23
+ import { Response, BasePolicy } from './interfaces.js';
24
+ import { CONTROLLED_DESCRIPTOR_SYMBOL } from './decorators.js';
25
+ import { tryGetHash } from '@spinajs/util';
26
+ export class BaseController extends AsyncService {
27
+ /**
28
+ * Express router with middleware stack
29
+ */
30
+ get Router() {
31
+ return this._router;
32
+ }
33
+ /**
34
+ * Controller descriptor
35
+ */
36
+ get Descriptor() {
37
+ return Reflect.getMetadata(CONTROLLED_DESCRIPTOR_SYMBOL, this);
38
+ }
39
+ /**
40
+ * Base path for all controller routes eg. my/custom/path/
41
+ *
42
+ * It can be defined via `@BasePath` decorator, defaults to controller name without `Controller` part.
43
+ */
44
+ get BasePath() {
45
+ return this.Descriptor.BasePath ? this.Descriptor.BasePath : this.constructor.name.toLowerCase();
46
+ }
47
+ async resolve() {
48
+ const self = this;
49
+ if (!this.Descriptor) {
50
+ this._log.warn(`Controller ${this.constructor.name} does not have descriptor. It its abstract or base class ignore this message.`);
51
+ return;
52
+ }
53
+ this._router = express.Router();
54
+ this._actionLocalStorage = DI.get((AsyncLocalStorage));
55
+ for (const [, route] of this.Descriptor.Routes) {
56
+ const handlers = [];
57
+ let path = '';
58
+ if (route.Path) {
59
+ if (route.Path === '/') {
60
+ path = `/${this.BasePath}`;
61
+ }
62
+ else {
63
+ path = `/${this.BasePath}/${route.Path}`;
64
+ }
65
+ }
66
+ else {
67
+ path = `/${this.BasePath}/${route.Method}`;
68
+ }
69
+ const middlewares = await Promise.all(this.Descriptor.Middlewares.concat(route.Middlewares || []).map((m) => {
70
+ return self._container.resolve(m.Type, m.Options);
71
+ }));
72
+ const policies = await Promise.all(this.Descriptor.Policies.concat(route.Policies || [])
73
+ .map((m) => {
74
+ if (_.isString(m.Type)) {
75
+ const policyType = this._cfg.get(m.Type);
76
+ if (!DI.checkType(BasePolicy, policyType)) {
77
+ self._log.warn(`No policy named ${policyType} is registered ( check your configuration at ${m.Type})`);
78
+ return null;
79
+ }
80
+ else {
81
+ self._log.trace(`Policy ${policyType} is used in controller ${self.constructor.name}::${route.Method} at path ${path}`);
82
+ return self._container.resolve(policyType, m.Options);
83
+ }
84
+ }
85
+ else {
86
+ self._log.trace(`Policy ${m.Type.name} is used in controller ${self.constructor.name}::${route.Method} at path ${path}`);
87
+ return self._container.resolve(m.Type, m.Options);
88
+ }
89
+ })
90
+ .filter((x) => x !== null));
91
+ const enabledMiddlewares = middlewares.filter((m) => m.isEnabled(route, this));
92
+ this._log.trace(`Registering route ${route.Type.toUpperCase()} ${this.constructor.name}::${route.Method} at ${path}`);
93
+ handlers.push(...policies.filter((p) => p.isEnabled(route, this)).map((p) => _invokePolicyAction(p, p.execute.bind(p), route)));
94
+ handlers.push(...enabledMiddlewares.map((m) => _invokeAction(m, m.onBefore.bind(m), route)));
95
+ const acionWrapper = async (req, res, next) => {
96
+ try {
97
+ await this._actionLocalStorage.run(req.storage, async () => {
98
+ const args = (await _extractRouteArgs(route, req, res)).concat([req, res, next]);
99
+ try {
100
+ const result = this[route.Method].call(this, ...args);
101
+ if (isPromise(result)) {
102
+ result
103
+ .then((r) => {
104
+ if (r instanceof Response) {
105
+ enabledMiddlewares.forEach((x) => x.onResponse(r, route, this));
106
+ }
107
+ res.locals.response = r;
108
+ next();
109
+ })
110
+ .catch((err) => {
111
+ next(err);
112
+ });
113
+ }
114
+ else {
115
+ if (result instanceof Response) {
116
+ enabledMiddlewares.forEach((x) => x.onResponse(result, route, this));
117
+ }
118
+ res.locals.response = result;
119
+ next();
120
+ }
121
+ }
122
+ catch (err) {
123
+ next(err);
124
+ }
125
+ });
126
+ }
127
+ catch (err) {
128
+ next(err);
129
+ }
130
+ };
131
+ Object.defineProperty(acionWrapper, 'name', {
132
+ value: this.constructor.name,
133
+ writable: true,
134
+ });
135
+ handlers.push(acionWrapper);
136
+ handlers.push(...enabledMiddlewares.map((m) => _invokeAction(m, m.onAfter.bind(m), route)));
137
+ // register to express router
138
+ this._router[route.InternalType](path, handlers);
139
+ }
140
+ function _invokeAction(source, action, route) {
141
+ const wrapper = (req, res, next) => {
142
+ action(req, res, route, self)
143
+ .then(() => {
144
+ next();
145
+ })
146
+ .catch((err) => {
147
+ next(err);
148
+ });
149
+ };
150
+ Object.defineProperty(wrapper, 'name', {
151
+ value: source.constructor.name,
152
+ writable: true,
153
+ });
154
+ return wrapper;
155
+ }
156
+ function _invokePolicyAction(source, action, route) {
157
+ const wrapper = (req, _res, next) => {
158
+ action(req, route, self)
159
+ .then(next)
160
+ .catch((err) => {
161
+ self._log.trace(`route ${self.constructor.name}:${route.Method} ${self.BasePath}${route.Path} error ${err}, policy: ${source.constructor.name}`);
162
+ next(err);
163
+ });
164
+ };
165
+ Object.defineProperty(wrapper, 'name', {
166
+ value: source.constructor.name,
167
+ writable: true,
168
+ });
169
+ return wrapper;
170
+ }
171
+ async function _extractRouteArgs(route, req, res) {
172
+ const callArgs = new Array(route.Parameters.size);
173
+ const argsCache = new Map();
174
+ let callData = {
175
+ Payload: {},
176
+ };
177
+ for (const [, param] of route.Parameters) {
178
+ const routeArgsHandler = await tryGetHash(argsCache, param.Type, () => DI.resolve(param.Type));
179
+ if (!routeArgsHandler) {
180
+ throw new UnexpectedServerError(`invalid route parameter type for param: ${param.Name},
181
+ method: ${route.Method},
182
+ controller: ${self.constructor.name}`);
183
+ }
184
+ const { Args, CallData } = await routeArgsHandler.extract(callData, param, req, res, route);
185
+ callData = CallData;
186
+ callArgs[param.Index] = Args;
187
+ }
188
+ return callArgs;
189
+ }
190
+ }
191
+ }
192
+ __decorate([
193
+ Autoinject(Container),
194
+ __metadata("design:type", Object)
195
+ ], BaseController.prototype, "_container", void 0);
196
+ __decorate([
197
+ Autoinject(),
198
+ __metadata("design:type", DataValidator)
199
+ ], BaseController.prototype, "_validator", void 0);
200
+ __decorate([
201
+ Logger('http'),
202
+ __metadata("design:type", Log)
203
+ ], BaseController.prototype, "_log", void 0);
204
+ __decorate([
205
+ Autoinject(),
206
+ __metadata("design:type", AsyncLocalStorage)
207
+ ], BaseController.prototype, "_actionLocalStorage", void 0);
208
+ __decorate([
209
+ Autoinject(Configuration),
210
+ __metadata("design:type", Configuration)
211
+ ], BaseController.prototype, "_cfg", void 0);
212
+ export class Controllers extends AsyncService {
213
+ async registerFromFile(file) {
214
+ if (!fs.existsSync(file)) {
215
+ throw new IOFail(`Controller file at path ${file} not found`);
216
+ }
217
+ const types = await DI.__spinajs_require__(file.replace('.js', '.d.ts'));
218
+ const typeName = basename(basename(file, '.js'), '.ts');
219
+ const type = types[typeName];
220
+ const instance = await DI.resolve(type);
221
+ const ci = new ClassInfo();
222
+ ci.file = file.replace('.js', '.d.ts');
223
+ ci.instance = instance;
224
+ ci.name = typeName;
225
+ ci.type = type;
226
+ return await this.register(ci);
227
+ }
228
+ async register(controller) {
229
+ this.Log.trace(`Loading controller: ${controller.name}`);
230
+ const compiler = new TypescriptCompiler(controller.file.replace('.js', '.d.ts'));
231
+ const members = compiler.getClassMembers(controller.name);
232
+ if (!controller.instance.Descriptor) {
233
+ this.Log.warn(`Controller ${controller.name} in file ${controller.file} dont have descriptor or routes defined`);
234
+ }
235
+ else {
236
+ for (const [name, route] of controller.instance.Descriptor.Routes) {
237
+ if (members.has(name)) {
238
+ const member = members.get(name);
239
+ for (const [index, rParam] of route.Parameters) {
240
+ const parameterInfo = member.parameters[index];
241
+ if (parameterInfo) {
242
+ rParam.Name = parameterInfo.name.text;
243
+ }
244
+ }
245
+ }
246
+ else {
247
+ this.Log.error(`Controller ${controller.name} does not have member ${name} for route ${route.Path}`);
248
+ }
249
+ }
250
+ this.Server.use(controller.instance.Router);
251
+ }
252
+ }
253
+ async resolve() {
254
+ const controllers = await this.Controllers;
255
+ // extract parameters info from controllers source code & register in http server
256
+ for (const controller of controllers.filter((x) => x !== undefined && x !== null)) {
257
+ this.register(controller);
258
+ }
259
+ }
260
+ }
261
+ __decorate([
262
+ ResolveFromFiles('/**/!(*.d).{ts,js}', 'system.dirs.controllers'),
263
+ __metadata("design:type", Promise)
264
+ ], Controllers.prototype, "Controllers", void 0);
265
+ __decorate([
266
+ Logger('http'),
267
+ __metadata("design:type", Log)
268
+ ], Controllers.prototype, "Log", void 0);
269
+ __decorate([
270
+ Autoinject(Container),
271
+ __metadata("design:type", Object)
272
+ ], Controllers.prototype, "Container", void 0);
273
+ __decorate([
274
+ Autoinject(),
275
+ __metadata("design:type", HttpServer)
276
+ ], Controllers.prototype, "Server", void 0);
282
277
  //# sourceMappingURL=controllers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"controllers.js","sourceRoot":"","sources":["../../src/controllers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"controllers.js","sourceRoot":"","sources":["../../src/controllers.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAE9B,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AACnC,OAAO,CAAC,MAAM,QAAQ,CAAC;AAEvB,OAAO,EAAE,YAAY,EAAc,UAAU,EAAE,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7F,OAAO,EAAE,qBAAqB,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC3E,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EAAuB,QAAQ,EAAyG,UAAU,EAAsD,MAAM,iBAAiB,CAAC;AACvO,OAAO,EAAE,4BAA4B,EAAE,MAAM,iBAAiB,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE3C,MAAM,OAAgB,cAAe,SAAQ,YAAY;IAuBvD;;OAEG;IACH,IAAW,MAAM;QACf,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED;;OAEG;IACH,IAAW,UAAU;QACnB,OAAO,OAAO,CAAC,WAAW,CAAC,4BAA4B,EAAE,IAAI,CAA0B,CAAC;IAC1F,CAAC;IAED;;;;OAIG;IACH,IAAW,QAAQ;QACjB,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;IACnG,CAAC;IAEM,KAAK,CAAC,OAAO;QAClB,MAAM,IAAI,GAAG,IAAI,CAAC;QAElB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YACpB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,IAAI,CAAC,WAAW,CAAC,IAAI,+EAA+E,CAAC,CAAC;YACnI,OAAO;SACR;QAED,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;QAChC,IAAI,CAAC,mBAAmB,GAAG,EAAE,CAAC,GAAG,CAAC,CAAA,iBAA6C,CAAA,CAAC,CAAC;QAEjF,KAAK,MAAM,CAAC,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;YAC9C,MAAM,QAAQ,GAA6B,EAAE,CAAC;YAE9C,IAAI,IAAI,GAAG,EAAE,CAAC;YACd,IAAI,KAAK,CAAC,IAAI,EAAE;gBACd,IAAI,KAAK,CAAC,IAAI,KAAK,GAAG,EAAE;oBACtB,IAAI,GAAG,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;iBAC5B;qBAAM;oBACL,IAAI,GAAG,IAAI,IAAI,CAAC,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;iBAC1C;aACF;iBAAM;gBACL,IAAI,GAAG,IAAI,IAAI,CAAC,QAAQ,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;aAC5C;YAED,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,GAAG,CACnC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAwB,EAAE,EAAE;gBAC3F,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;YACpD,CAAC,CAAC,CACH,CAAC;YACF,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,CAChC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC;iBAClD,GAAG,CAAC,CAAC,CAAoB,EAAE,EAAE;gBAC5B,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;oBACtB,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAS,CAAC,CAAC,IAAI,CAAC,CAAC;oBACjD,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,UAAU,CAAC,EAAE;wBACzC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,UAAU,gDAAgD,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;wBACvG,OAAO,IAAI,CAAC;qBACb;yBAAM;wBACL,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,UAAU,0BAA0B,IAAI,CAAC,WAAW,CAAC,IAAI,KAAK,KAAK,CAAC,MAAM,YAAY,IAAI,EAAE,CAAC,CAAC;wBACxH,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,CAAa,UAAU,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;qBACnE;iBACF;qBAAM;oBACL,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,0BAA0B,IAAI,CAAC,WAAW,CAAC,IAAI,KAAK,KAAK,CAAC,MAAM,YAAY,IAAI,EAAE,CAAC,CAAC;oBACzH,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,CAAa,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;iBAC/D;YACH,CAAC,CAAC;iBACD,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAC7B,CAAC;YACF,MAAM,kBAAkB,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;YAE/E,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,qBAAqB,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,KAAK,KAAK,CAAC,MAAM,OAAO,IAAI,EAAE,CAAC,CAAC;YAEtH,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;YAChI,QAAQ,CAAC,IAAI,CAAC,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;YAE7F,MAAM,YAAY,GAAG,KAAK,EAAE,GAAa,EAAE,GAAqB,EAAE,IAA0B,EAAE,EAAE;gBAC9F,IAAI;oBACF,MAAM,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE;wBACzD,MAAM,IAAI,GAAG,CAAC,MAAM,iBAAiB,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;wBAEjF,IAAI;4BACF,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC;4BAEtD,IAAI,SAAS,CAAC,MAAM,CAAC,EAAE;gCACrB,MAAM;qCACH,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;oCACV,IAAI,CAAC,YAAY,QAAQ,EAAE;wCACzB,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;qCACjE;oCACD,GAAG,CAAC,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAC;oCACxB,IAAI,EAAE,CAAC;gCACT,CAAC,CAAC;qCACD,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;oCACb,IAAI,CAAC,GAAG,CAAC,CAAC;gCACZ,CAAC,CAAC,CAAC;6BACN;iCAAM;gCACL,IAAI,MAAM,YAAY,QAAQ,EAAE;oCAC9B,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;iCACtE;gCACD,GAAG,CAAC,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC;gCAC7B,IAAI,EAAE,CAAC;6BACR;yBACF;wBAAC,OAAO,GAAG,EAAE;4BACZ,IAAI,CAAC,GAAG,CAAC,CAAC;yBACX;oBACH,CAAC,CAAC,CAAC;iBACJ;gBAAC,OAAO,GAAG,EAAE;oBACZ,IAAI,CAAC,GAAG,CAAC,CAAC;iBACX;YACH,CAAC,CAAC;YAEF,MAAM,CAAC,cAAc,CAAC,YAAY,EAAE,MAAM,EAAE;gBAC1C,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI;gBAC5B,QAAQ,EAAE,IAAI;aACf,CAAC,CAAC;YAEH,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAC5B,QAAQ,CAAC,IAAI,CAAC,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;YAE5F,6BAA6B;YAC5B,IAAI,CAAC,OAAe,CAAC,KAAK,CAAC,YAAsB,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;SACrE;QAED,SAAS,aAAa,CAAC,MAAW,EAAE,MAAW,EAAE,KAAa;YAC5D,MAAM,OAAO,GAAG,CAAC,GAAoB,EAAE,GAAqB,EAAE,IAA0B,EAAE,EAAE;gBAC1F,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC;qBAC1B,IAAI,CAAC,GAAG,EAAE;oBACT,IAAI,EAAE,CAAC;gBACT,CAAC,CAAC;qBACD,KAAK,CAAC,CAAC,GAAQ,EAAE,EAAE;oBAClB,IAAI,CAAC,GAAG,CAAC,CAAC;gBACZ,CAAC,CAAC,CAAC;YACP,CAAC,CAAC;YAEF,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE;gBACrC,KAAK,EAAE,MAAM,CAAC,WAAW,CAAC,IAAI;gBAC9B,QAAQ,EAAE,IAAI;aACf,CAAC,CAAC;YACH,OAAO,OAAO,CAAC;QACjB,CAAC;QAED,SAAS,mBAAmB,CAAC,MAAW,EAAE,MAAW,EAAE,KAAa;YAClE,MAAM,OAAO,GAAG,CAAC,GAAoB,EAAE,IAAsB,EAAE,IAA0B,EAAE,EAAE;gBAC3F,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC;qBACrB,IAAI,CAAC,IAAI,CAAC;qBACV,KAAK,CAAC,CAAC,GAAQ,EAAE,EAAE;oBAClB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,CAAC,WAAW,CAAC,IAAI,IAAI,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,IAAI,UAAU,GAAG,aAAa,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC;oBAEjJ,IAAI,CAAC,GAAG,CAAC,CAAC;gBACZ,CAAC,CAAC,CAAC;YACP,CAAC,CAAC;YAEF,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE;gBACrC,KAAK,EAAE,MAAM,CAAC,WAAW,CAAC,IAAI;gBAC9B,QAAQ,EAAE,IAAI;aACf,CAAC,CAAC;YAEH,OAAO,OAAO,CAAC;QACjB,CAAC;QAED,KAAK,UAAU,iBAAiB,CAAC,KAAa,EAAE,GAAY,EAAE,GAAqB;YACjF,MAAM,QAAQ,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YAClD,MAAM,SAAS,GAAG,IAAI,GAAG,EAAqC,CAAC;YAE/D,IAAI,QAAQ,GAAG;gBACb,OAAO,EAAE,EAAE;aACZ,CAAC;YAEF,KAAK,MAAM,CAAC,EAAE,KAAK,CAAC,IAAI,KAAK,CAAC,UAAU,EAAE;gBACxC,MAAM,gBAAgB,GAAG,MAAM,UAAU,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;gBAC/F,IAAI,CAAC,gBAAgB,EAAE;oBACrB,MAAM,IAAI,qBAAqB,CAAC,2CAA2C,KAAK,CAAC,IAAI;sBACzE,KAAK,CAAC,MAAM;0BACR,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC;iBAC1C;gBAED,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,MAAM,gBAAgB,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;gBAE5F,QAAQ,GAAG,QAAQ,CAAC;gBACpB,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;aAC9B;YAED,OAAO,QAAQ,CAAC;QAClB,CAAC;IACH,CAAC;CACF;AA3MW;IADT,UAAU,CAAC,SAAS,CAAC;;kDACW;AAGvB;IADT,UAAU,EAAE;8BACS,aAAa;kDAAC;AAG1B;IADT,MAAM,CAAC,MAAM,CAAC;8BACC,GAAG;4CAAC;AAGV;IADT,UAAU,EAAE;8BACkB,iBAAiB;2DAA6B;AAGnE;IADT,UAAU,CAAC,aAAa,CAAC;8BACV,aAAa;4CAAC;AAiMhC,MAAM,OAAO,WAAY,SAAQ,YAAY;IAgBpC,KAAK,CAAC,gBAAgB,CAAC,IAAY;QACxC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;YACxB,MAAM,IAAI,MAAM,CAAC,2BAA2B,IAAI,YAAY,CAAC,CAAC;SAC/D;QAED,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;QACzE,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC;QACxD,MAAM,IAAI,GAAI,KAAa,CAAC,QAAQ,CAAC,CAAC;QACtC,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC,OAAO,CAAiB,IAAI,CAAC,CAAC;QACxD,MAAM,EAAE,GAAG,IAAI,SAAS,EAAkB,CAAC;QAE3C,EAAE,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QACvC,EAAE,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACvB,EAAE,CAAC,IAAI,GAAG,QAAQ,CAAC;QACnB,EAAE,CAAC,IAAI,GAAG,IAAI,CAAC;QAEf,OAAO,MAAM,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IACjC,CAAC;IAEM,KAAK,CAAC,QAAQ,CAAC,UAAqC;QACzD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,uBAAuB,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;QAEzD,MAAM,QAAQ,GAAG,IAAI,kBAAkB,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;QACjF,MAAM,OAAO,GAAG,QAAQ,CAAC,eAAe,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAE1D,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,UAAU,EAAE;YACnC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,UAAU,CAAC,IAAI,YAAY,UAAU,CAAC,IAAI,yCAAyC,CAAC,CAAC;SAClH;aAAM;YACL,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,EAAE;gBACjE,IAAI,OAAO,CAAC,GAAG,CAAC,IAAc,CAAC,EAAE;oBAC/B,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,IAAc,CAAC,CAAC;oBAE3C,KAAK,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,KAAK,CAAC,UAAU,EAAE;wBAC9C,MAAM,aAAa,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;wBAC/C,IAAI,aAAa,EAAE;4BACjB,MAAM,CAAC,IAAI,GAAI,aAAa,CAAC,IAAY,CAAC,IAAI,CAAC;yBAChD;qBACF;iBACF;qBAAM;oBACL,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,cAAc,UAAU,CAAC,IAAI,yBAAyB,IAAc,cAAc,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;iBAChH;aACF;YAED,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;SAC7C;IACH,CAAC;IAEM,KAAK,CAAC,OAAO;QAClB,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC;QAE3C,iFAAiF;QACjF,KAAK,MAAM,UAAU,IAAI,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,IAAI,CAAC,EAAE;YACjF,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;SAC3B;IACH,CAAC;CACF;AAlEQ;IADN,gBAAgB,CAAC,oBAAoB,EAAE,yBAAyB,CAAC;;gDACJ;AAGpD;IADT,MAAM,CAAC,MAAM,CAAC;8BACA,GAAG;wCAAC;AAGT;IADT,UAAU,CAAC,SAAS,CAAC;;8CACU;AAGtB;IADT,UAAU,EAAE;8BACK,UAAU;2CAAC"}