@deepkit/http 1.0.1-alpha.100

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 (121) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +13 -0
  3. package/dist/.gitkeep +0 -0
  4. package/dist/cjs/index.d.ts +14 -0
  5. package/dist/cjs/index.js +31 -0
  6. package/dist/cjs/index.js.map +1 -0
  7. package/dist/cjs/src/controllers.d.ts +13 -0
  8. package/dist/cjs/src/controllers.js +17 -0
  9. package/dist/cjs/src/controllers.js.map +1 -0
  10. package/dist/cjs/src/decorator.d.ts +241 -0
  11. package/dist/cjs/src/decorator.js +422 -0
  12. package/dist/cjs/src/decorator.js.map +1 -0
  13. package/dist/cjs/src/filter.d.ts +49 -0
  14. package/dist/cjs/src/filter.js +215 -0
  15. package/dist/cjs/src/filter.js.map +1 -0
  16. package/dist/cjs/src/http-app.d.ts +8 -0
  17. package/dist/cjs/src/http-app.js +16 -0
  18. package/dist/cjs/src/http-app.js.map +1 -0
  19. package/dist/cjs/src/http.d.ts +278 -0
  20. package/dist/cjs/src/http.js +878 -0
  21. package/dist/cjs/src/http.js.map +1 -0
  22. package/dist/cjs/src/kernel.d.ts +16 -0
  23. package/dist/cjs/src/kernel.js +79 -0
  24. package/dist/cjs/src/kernel.js.map +1 -0
  25. package/dist/cjs/src/logger.d.ts +7 -0
  26. package/dist/cjs/src/logger.js +34 -0
  27. package/dist/cjs/src/logger.js.map +1 -0
  28. package/dist/cjs/src/middleware.d.ts +61 -0
  29. package/dist/cjs/src/middleware.js +95 -0
  30. package/dist/cjs/src/middleware.js.map +1 -0
  31. package/dist/cjs/src/model.d.ts +165 -0
  32. package/dist/cjs/src/model.js +398 -0
  33. package/dist/cjs/src/model.js.map +1 -0
  34. package/dist/cjs/src/module.config.d.ts +84 -0
  35. package/dist/cjs/src/module.config.js +14 -0
  36. package/dist/cjs/src/module.config.js.map +1 -0
  37. package/dist/cjs/src/module.d.ts +14 -0
  38. package/dist/cjs/src/module.js +124 -0
  39. package/dist/cjs/src/module.js.map +1 -0
  40. package/dist/cjs/src/request-parser.d.ts +36 -0
  41. package/dist/cjs/src/request-parser.js +305 -0
  42. package/dist/cjs/src/request-parser.js.map +1 -0
  43. package/dist/cjs/src/router.d.ts +230 -0
  44. package/dist/cjs/src/router.js +617 -0
  45. package/dist/cjs/src/router.js.map +1 -0
  46. package/dist/cjs/src/static-serving.d.ts +32 -0
  47. package/dist/cjs/src/static-serving.js +157 -0
  48. package/dist/cjs/src/static-serving.js.map +1 -0
  49. package/dist/cjs/src/utils.d.ts +1 -0
  50. package/dist/cjs/src/utils.js +13 -0
  51. package/dist/cjs/src/utils.js.map +1 -0
  52. package/dist/cjs/tsconfig.tsbuildinfo +1 -0
  53. package/dist/esm/index.d.ts +14 -0
  54. package/dist/esm/index.js +15 -0
  55. package/dist/esm/index.js.map +1 -0
  56. package/dist/esm/package.json +1 -0
  57. package/dist/esm/src/controllers.d.ts +13 -0
  58. package/dist/esm/src/controllers.js +13 -0
  59. package/dist/esm/src/controllers.js.map +1 -0
  60. package/dist/esm/src/decorator.d.ts +241 -0
  61. package/dist/esm/src/decorator.js +414 -0
  62. package/dist/esm/src/decorator.js.map +1 -0
  63. package/dist/esm/src/filter.d.ts +49 -0
  64. package/dist/esm/src/filter.js +209 -0
  65. package/dist/esm/src/filter.js.map +1 -0
  66. package/dist/esm/src/http-app.d.ts +8 -0
  67. package/dist/esm/src/http-app.js +12 -0
  68. package/dist/esm/src/http-app.js.map +1 -0
  69. package/dist/esm/src/http.d.ts +278 -0
  70. package/dist/esm/src/http.js +841 -0
  71. package/dist/esm/src/http.js.map +1 -0
  72. package/dist/esm/src/kernel.d.ts +16 -0
  73. package/dist/esm/src/kernel.js +75 -0
  74. package/dist/esm/src/kernel.js.map +1 -0
  75. package/dist/esm/src/logger.d.ts +7 -0
  76. package/dist/esm/src/logger.js +30 -0
  77. package/dist/esm/src/logger.js.map +1 -0
  78. package/dist/esm/src/middleware.d.ts +61 -0
  79. package/dist/esm/src/middleware.js +90 -0
  80. package/dist/esm/src/middleware.js.map +1 -0
  81. package/dist/esm/src/model.d.ts +165 -0
  82. package/dist/esm/src/model.js +363 -0
  83. package/dist/esm/src/model.js.map +1 -0
  84. package/dist/esm/src/module.config.d.ts +84 -0
  85. package/dist/esm/src/module.config.js +10 -0
  86. package/dist/esm/src/module.config.js.map +1 -0
  87. package/dist/esm/src/module.d.ts +14 -0
  88. package/dist/esm/src/module.js +120 -0
  89. package/dist/esm/src/module.js.map +1 -0
  90. package/dist/esm/src/request-parser.d.ts +36 -0
  91. package/dist/esm/src/request-parser.js +295 -0
  92. package/dist/esm/src/request-parser.js.map +1 -0
  93. package/dist/esm/src/router.d.ts +230 -0
  94. package/dist/esm/src/router.js +605 -0
  95. package/dist/esm/src/router.js.map +1 -0
  96. package/dist/esm/src/static-serving.d.ts +32 -0
  97. package/dist/esm/src/static-serving.js +149 -0
  98. package/dist/esm/src/static-serving.js.map +1 -0
  99. package/dist/esm/src/utils.d.ts +1 -0
  100. package/dist/esm/src/utils.js +9 -0
  101. package/dist/esm/src/utils.js.map +1 -0
  102. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -0
  103. package/index.ts +14 -0
  104. package/package.json +67 -0
  105. package/src/controllers.ts +11 -0
  106. package/src/decorator.ts +411 -0
  107. package/src/filter.ts +224 -0
  108. package/src/http-app.ts +11 -0
  109. package/src/http.ts +828 -0
  110. package/src/kernel.ts +79 -0
  111. package/src/logger.ts +20 -0
  112. package/src/middleware.ts +116 -0
  113. package/src/model.ts +392 -0
  114. package/src/module.config.ts +95 -0
  115. package/src/module.ts +116 -0
  116. package/src/request-parser.ts +346 -0
  117. package/src/router.ts +747 -0
  118. package/src/static-serving.ts +153 -0
  119. package/src/utils.ts +5 -0
  120. package/tsconfig.esm.json +36 -0
  121. package/tsconfig.json +53 -0
@@ -0,0 +1,841 @@
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
+ /*@ts-ignore*/
11
+ import { __ΩClassType as __ΩClassType } from '@deepkit/core';
12
+ /*@ts-ignore*/
13
+ import { __ΩRouteParameterResolverForInjector as __ΩRouteParameterResolverForInjector } from './router.js';
14
+ /*@ts-ignore*/
15
+ import { __ΩHttpRequestPositionedParameters as __ΩHttpRequestPositionedParameters } from './model.js';
16
+ /*@ts-ignore*/
17
+ import { __ΩLoggerInterface as __ΩLoggerInterface } from '@deepkit/logger';
18
+ function __assignType(fn, args) {
19
+ fn.__type = args;
20
+ return fn;
21
+ }
22
+ const __ΩError = ['name', 'message', 'stack', 'P&4!&4"&4#8M'];
23
+ /*
24
+ * Deepkit Framework
25
+ * Copyright (C) 2021 Deepkit UG, Marc J. Schmidt
26
+ *
27
+ * This program is free software: you can redistribute it and/or modify
28
+ * it under the terms of the MIT License.
29
+ *
30
+ * You should have received a copy of the MIT License along with this program.
31
+ */
32
+ import { asyncOperation, CustomError, getClassName, getClassTypeFromInstance, isArray, isClassInstance } from '@deepkit/core';
33
+ import { ServerResponse } from 'http';
34
+ import { eventDispatcher } from '@deepkit/event';
35
+ import { HttpRequest, HttpResponse } from './model.js';
36
+ import { InjectorContext } from '@deepkit/injector';
37
+ import { HttpRouter, RouteConfig } from './router.js';
38
+ import { createWorkflow, WorkflowEvent } from '@deepkit/workflow';
39
+ import { FrameCategory, Stopwatch } from '@deepkit/stopwatch';
40
+ import { getSerializeFunction, hasTypeInformation, ReflectionKind, resolveReceiveType, SerializationError, serialize, serializer, typeSettings, UnpopulatedCheck, ValidationError } from '@deepkit/type';
41
+ import stream from 'stream';
42
+ export function isElementStruct(v) {
43
+ return 'object' === typeof v && v.hasOwnProperty('render') && v.hasOwnProperty('attributes') && !v.slice;
44
+ }
45
+ isElementStruct.__type = ['v', 'isElementStruct', 'P"2!!/"'];
46
+ let templateRender;
47
+ function getTemplateRender() {
48
+ if (!templateRender) {
49
+ const template = require('@deepkit/template');
50
+ templateRender = template.render;
51
+ }
52
+ return templateRender;
53
+ }
54
+ getTemplateRender.__type = [() => render, 'getTemplateRender', 'Pi!/"'];
55
+ export class Redirect {
56
+ constructor(statusCode = 302) {
57
+ this.statusCode = statusCode;
58
+ }
59
+ static toRoute(routeName, parameters = {}, statusCode = 302) {
60
+ const redirect = new Redirect(statusCode);
61
+ redirect.routeName = routeName;
62
+ redirect.routeParameters = parameters;
63
+ return redirect;
64
+ }
65
+ static toUrl(url, statusCode = 302) {
66
+ const redirect = new Redirect(statusCode);
67
+ redirect.url = url;
68
+ return redirect;
69
+ }
70
+ }
71
+ Redirect.__type = ['routeName', 'routeParameters', 'url', 'statusCode', () => 302, 'constructor', 'parameters', () => ({}), () => 302, () => Redirect, 'toRoute', () => 302, () => Redirect, 'toUrl', '&3!8P&"LM3"8&3#8P\'2$:>%"0&P&2!P&"LM2\'>(\'2$>)P7*0+sP&2#\'2$>,P7-0.s5'];
72
+ export class HttpError extends CustomError {
73
+ constructor(message, httpCode) {
74
+ super(message);
75
+ this.message = message;
76
+ this.httpCode = httpCode;
77
+ }
78
+ }
79
+ HttpError.__type = ['T', () => CustomError, 'message', 'httpCode', 'constructor', 'b!P7"P&2#:e"!2$:"0%5'];
80
+ export function createHttpError(code, defaultMessage = '') {
81
+ var _a;
82
+ return _a = class extends HttpError {
83
+ constructor(message = defaultMessage) {
84
+ super(message, code);
85
+ this.message = message;
86
+ }
87
+ },
88
+ _a.__type = [() => code, () => HttpError, 'message', () => defaultMessage, 'constructor', () => code, 'PPdi!h!!qe!!!j7"P&2#:>$"0%5Pdi&h!!qe!!!j6"'],
89
+ _a;
90
+ }
91
+ createHttpError.__type = ['code', 'defaultMessage', () => "", () => __ΩClassType, () => HttpError, 'createHttpError', 'P"2!&2">#P"7%o$"/&'];
92
+ export class HttpBadRequestError extends createHttpError(400, 'Bad request') {
93
+ }
94
+ HttpBadRequestError.__type = [() => createHttpError(400, "Bad request"), 'P7!5'];
95
+ export class HttpUnauthorizedError extends createHttpError(401, 'Unauthorized') {
96
+ }
97
+ HttpUnauthorizedError.__type = [() => createHttpError(401, "Unauthorized"), 'P7!5'];
98
+ export class HttpAccessDeniedError extends createHttpError(403, 'Access denied') {
99
+ }
100
+ HttpAccessDeniedError.__type = [() => createHttpError(403, "Access denied"), 'P7!5'];
101
+ export class HttpNotFoundError extends createHttpError(404, 'Not found') {
102
+ }
103
+ HttpNotFoundError.__type = [() => createHttpError(404, "Not found"), 'P7!5'];
104
+ export class HttpMethodNotAllowedError extends createHttpError(405, 'Method not allowed') {
105
+ }
106
+ HttpMethodNotAllowedError.__type = [() => createHttpError(405, "Method not allowed"), 'P7!5'];
107
+ export class HttpNotAcceptableError extends createHttpError(406, 'Not acceptable') {
108
+ }
109
+ HttpNotAcceptableError.__type = [() => createHttpError(406, "Not acceptable"), 'P7!5'];
110
+ export class HttpTimeoutError extends createHttpError(408, 'Request timeout') {
111
+ }
112
+ HttpTimeoutError.__type = [() => createHttpError(408, "Request timeout"), 'P7!5'];
113
+ export class HttpConflictError extends createHttpError(409, 'Conflict') {
114
+ }
115
+ HttpConflictError.__type = [() => createHttpError(409, "Conflict"), 'P7!5'];
116
+ export class HttpGoneError extends createHttpError(410, 'Gone') {
117
+ }
118
+ HttpGoneError.__type = [() => createHttpError(410, "Gone"), 'P7!5'];
119
+ export class HttpTooManyRequestsError extends createHttpError(429, 'Too many requests') {
120
+ }
121
+ HttpTooManyRequestsError.__type = [() => createHttpError(429, "Too many requests"), 'P7!5'];
122
+ export class HttpInternalServerError extends createHttpError(500, 'Internal server error') {
123
+ }
124
+ HttpInternalServerError.__type = [() => createHttpError(500, "Internal server error"), 'P7!5'];
125
+ export class HttpNotImplementedError extends createHttpError(501, 'Not implemented') {
126
+ }
127
+ HttpNotImplementedError.__type = [() => createHttpError(501, "Not implemented"), 'P7!5'];
128
+ export class HttpWorkflowEvent {
129
+ constructor(injectorContext, request, response) {
130
+ this.injectorContext = injectorContext;
131
+ this.request = request;
132
+ this.response = response;
133
+ this.propagationStopped = false;
134
+ }
135
+ stopPropagation() {
136
+ this.propagationStopped = true;
137
+ }
138
+ isPropagationStopped() {
139
+ return this.propagationStopped;
140
+ }
141
+ clearNext() {
142
+ this.nextState = undefined;
143
+ this.nextStateEvent = undefined;
144
+ }
145
+ /**
146
+ * @see WorkflowNextEvent.next
147
+ */
148
+ next(nextState, event) {
149
+ this.nextState = nextState;
150
+ this.nextStateEvent = event;
151
+ }
152
+ /**
153
+ * Whether already a next workflow state has been scheduled.
154
+ */
155
+ hasNext() {
156
+ return this.nextState !== undefined;
157
+ }
158
+ get url() {
159
+ return this.request.url || '/';
160
+ }
161
+ /**
162
+ * Whether a response has already been sent.
163
+ */
164
+ get sent() {
165
+ return this.response.headersSent;
166
+ }
167
+ send(response) {
168
+ this.next('response', new HttpResponseEvent(this.injectorContext, this.request, this.response, response));
169
+ }
170
+ }
171
+ HttpWorkflowEvent.__type = ['stopPropagation', 'isPropagationStopped', 'nextState', 'nextStateEvent', 'clearNext', 'event', 'next', 'hasNext', () => InjectorContext, 'injectorContext', () => HttpRequest, 'request', () => HttpResponse, 'response', 'constructor', 'send', 'P"0!P"0""3#8"3$8P"0%P&2#"2&8"0\'P)0(PP7)2*:P7+2,:P7-2.:"0/!!P"2."005'];
172
+ export const HttpRequestEvent = HttpWorkflowEvent;
173
+ export const HttpRouteNotFoundEvent = HttpWorkflowEvent;
174
+ export class HttpWorkflowEventWithRoute extends HttpWorkflowEvent {
175
+ constructor(injectorContext, request, response, route) {
176
+ super(injectorContext, request, response);
177
+ this.injectorContext = injectorContext;
178
+ this.request = request;
179
+ this.response = response;
180
+ this.route = route;
181
+ }
182
+ send(response) {
183
+ this.next('response', new HttpResponseEvent(this.injectorContext, this.request, this.response, response, this.route));
184
+ }
185
+ accessDenied(error) {
186
+ this.next('accessDenied', new HttpAccessDeniedEvent(this.injectorContext, this.request, this.response, this.route, error));
187
+ }
188
+ }
189
+ HttpWorkflowEventWithRoute.__type = [() => HttpWorkflowEvent, () => InjectorContext, 'injectorContext', () => HttpRequest, 'request', () => HttpResponse, 'response', () => RouteConfig, 'route', 'constructor', 'send', () => __ΩError, 'error', 'accessDenied', 'P7!PP7"2#:P7$2%:P7&2\':P7(2):"0*P"2\'"0+Pn,2-8"0.5'];
190
+ export class HttpRouteEvent extends HttpWorkflowEvent {
191
+ constructor(injectorContext, request, response, parameterResolver, route) {
192
+ super(injectorContext, request, response);
193
+ this.injectorContext = injectorContext;
194
+ this.request = request;
195
+ this.response = response;
196
+ this.parameterResolver = parameterResolver;
197
+ this.route = route;
198
+ }
199
+ routeFound(route, parameterResolver) {
200
+ this.route = route;
201
+ this.next('auth', new HttpAuthEvent(this.injectorContext, this.request, this.response, this.route, parameterResolver));
202
+ }
203
+ notFound() {
204
+ this.next('routeNotFound', new HttpRouteNotFoundEvent(this.injectorContext, this.request, this.response));
205
+ }
206
+ }
207
+ HttpRouteEvent.__type = [() => HttpWorkflowEvent, () => InjectorContext, 'injectorContext', () => HttpRequest, 'request', () => HttpResponse, 'response', () => __ΩRouteParameterResolverForInjector, 'parameterResolver', () => RouteConfig, 'route', 'constructor', () => RouteConfig, () => __ΩRouteParameterResolverForInjector, 'routeFound', 'notFound', 'P7!PP7"2#:P7$2%:P7&2\':n(2)8:P7*2+8:"0,PP7-2+n.2)"0/P"005'];
208
+ export class HttpAuthEvent extends HttpWorkflowEventWithRoute {
209
+ constructor(injectorContext, request, response, route, parameterResolver) {
210
+ super(injectorContext, request, response, route);
211
+ this.injectorContext = injectorContext;
212
+ this.request = request;
213
+ this.response = response;
214
+ this.route = route;
215
+ this.parameterResolver = parameterResolver;
216
+ }
217
+ success() {
218
+ this.next('resolveParameters', new HttpResolveParametersEvent(this.injectorContext, this.request, this.response, this.parameterResolver, this.route));
219
+ }
220
+ }
221
+ HttpAuthEvent.__type = [() => HttpWorkflowEventWithRoute, () => InjectorContext, 'injectorContext', () => HttpRequest, 'request', () => HttpResponse, 'response', () => RouteConfig, 'route', () => __ΩRouteParameterResolverForInjector, 'parameterResolver', 'constructor', 'success', 'P7!PP7"2#:P7$2%:P7&2\':P7(2):n*2+:"0,P"0-5'];
222
+ export class HttpAccessDeniedEvent extends HttpWorkflowEvent {
223
+ constructor(injectorContext, request, response, route, error) {
224
+ super(injectorContext, request, response);
225
+ this.injectorContext = injectorContext;
226
+ this.request = request;
227
+ this.response = response;
228
+ this.route = route;
229
+ this.error = error;
230
+ }
231
+ }
232
+ HttpAccessDeniedEvent.__type = [() => HttpWorkflowEvent, () => InjectorContext, 'injectorContext', () => HttpRequest, 'request', () => HttpResponse, 'response', () => RouteConfig, 'route', () => __ΩError, 'error', 'constructor', 'P7!PP7"2#:P7$2%:P7&2\':P7(2):n*2+8:"0,5'];
233
+ export class HttpResolveParametersEvent extends HttpWorkflowEventWithRoute {
234
+ constructor(injectorContext, request, response, parameterResolver, route) {
235
+ super(injectorContext, request, response, route);
236
+ this.injectorContext = injectorContext;
237
+ this.request = request;
238
+ this.response = response;
239
+ this.parameterResolver = parameterResolver;
240
+ this.route = route;
241
+ this.parameters = { arguments: [], parameters: {} };
242
+ }
243
+ accessDenied() {
244
+ this.next('accessDenied', new HttpAccessDeniedEvent(this.injectorContext, this.request, this.response, this.route));
245
+ }
246
+ }
247
+ HttpResolveParametersEvent.__type = [() => HttpWorkflowEventWithRoute, () => __ΩHttpRequestPositionedParameters, 'parameters', function () { return { arguments: [], parameters: {} }; }, () => InjectorContext, 'injectorContext', () => HttpRequest, 'request', () => HttpResponse, 'response', () => __ΩRouteParameterResolverForInjector, 'parameterResolver', () => RouteConfig, 'route', 'constructor', 'accessDenied', 'P7!n"3#>$PP7%2&:P7\'2(:P7)2*:n+2,:P7-2.:"0/P"005'];
248
+ export class HttpControllerEvent extends HttpWorkflowEventWithRoute {
249
+ constructor(injectorContext, request, response, parameters = { arguments: [], parameters: {} }, route) {
250
+ super(injectorContext, request, response, route);
251
+ this.injectorContext = injectorContext;
252
+ this.request = request;
253
+ this.response = response;
254
+ this.parameters = parameters;
255
+ this.route = route;
256
+ }
257
+ }
258
+ HttpControllerEvent.__type = [() => HttpWorkflowEventWithRoute, () => InjectorContext, 'injectorContext', () => HttpRequest, 'request', () => HttpResponse, 'response', () => __ΩHttpRequestPositionedParameters, 'parameters', () => ({ arguments: [], parameters: {} }), () => RouteConfig, 'route', 'constructor', 'P7!PP7"2#:P7$2%:P7&2\':n(2):>*P7+2,:"0-5'];
259
+ export class HttpResponseEvent extends WorkflowEvent {
260
+ constructor(injectorContext, request, response, result, route) {
261
+ super();
262
+ this.injectorContext = injectorContext;
263
+ this.request = request;
264
+ this.response = response;
265
+ this.result = result;
266
+ this.route = route;
267
+ /**
268
+ * The time it took to call the controller action in milliseconds.
269
+ */
270
+ this.controllerActionTime = 0;
271
+ }
272
+ }
273
+ HttpResponseEvent.__type = [() => WorkflowEvent, 'controllerActionTime', function () { return 0; }, () => InjectorContext, 'injectorContext', () => HttpRequest, 'request', () => HttpResponse, 'response', 'result', () => RouteConfig, 'route', 'constructor', 'P7!\'3">#PP7$2%:P7&2\':P7(2):"2*:P7+2,8:"0-5'];
274
+ export class HttpControllerErrorEvent extends HttpWorkflowEventWithRoute {
275
+ constructor(injectorContext, request, response, route, error) {
276
+ super(injectorContext, request, response, route);
277
+ this.injectorContext = injectorContext;
278
+ this.request = request;
279
+ this.response = response;
280
+ this.route = route;
281
+ this.error = error;
282
+ /**
283
+ * The time it took to call the controller action in milliseconds.
284
+ */
285
+ this.controllerActionTime = 0;
286
+ }
287
+ }
288
+ HttpControllerErrorEvent.__type = [() => HttpWorkflowEventWithRoute, 'controllerActionTime', function () { return 0; }, () => InjectorContext, 'injectorContext', () => HttpRequest, 'request', () => HttpResponse, 'response', () => RouteConfig, 'route', () => __ΩError, 'error', 'constructor', 'P7!\'3">#PP7$2%:P7&2\':P7(2):P7*2+:n,2-:"0.5'];
289
+ export const httpWorkflow = createWorkflow('http', {
290
+ start: WorkflowEvent,
291
+ request: HttpRequestEvent,
292
+ route: HttpRouteEvent,
293
+ routeNotFound: HttpRouteNotFoundEvent,
294
+ auth: HttpAuthEvent,
295
+ resolveParameters: HttpResolveParametersEvent,
296
+ accessDenied: HttpAccessDeniedEvent,
297
+ controller: HttpControllerEvent,
298
+ controllerError: HttpControllerErrorEvent,
299
+ parametersFailed: HttpControllerErrorEvent,
300
+ response: HttpResponseEvent,
301
+ }, {
302
+ start: 'request',
303
+ request: 'route',
304
+ route: ['auth', 'routeNotFound'],
305
+ auth: ['resolveParameters', 'accessDenied'],
306
+ resolveParameters: ['controller', 'parametersFailed'],
307
+ accessDenied: 'response',
308
+ controller: ['accessDenied', 'controllerError', 'response'],
309
+ controllerError: 'response',
310
+ parametersFailed: 'response',
311
+ routeNotFound: 'response',
312
+ });
313
+ export class BaseResponse {
314
+ constructor(_statusCode, _headers = {}) {
315
+ this._statusCode = _statusCode;
316
+ this._headers = _headers;
317
+ this.autoSerializing = true;
318
+ }
319
+ status(code) {
320
+ this._statusCode = code;
321
+ return this;
322
+ }
323
+ /**
324
+ * Per default a JSONResponse is serialized using the return type specified at the route.
325
+ * This disables that behaviour so that JSON.stringify is run on the result directly.
326
+ */
327
+ disableAutoSerializing() {
328
+ this.autoSerializing = false;
329
+ return this;
330
+ }
331
+ header(name, value) {
332
+ this._headers[name] = value;
333
+ return this;
334
+ }
335
+ headers(headers) {
336
+ this._headers = headers;
337
+ return this;
338
+ }
339
+ contentType(type) {
340
+ this._headers['content-type'] = type;
341
+ return this;
342
+ }
343
+ }
344
+ BaseResponse.__type = ['autoSerializing', function () { return true; }, '_statusCode', '_headers', () => ({}), 'constructor', 'code', 'status', 'disableAutoSerializing', 'name', 'value', 'header', 'headers', 'type', 'contentType', ')3!>"P\'2#8:!2$:>%"0&P\'2\'!0(P"0)P&2*P&\'J2+!0,P!2-!0-P&2.!0/5'];
345
+ export class Response extends BaseResponse {
346
+ constructor(content, contentType, statusCode) {
347
+ super(statusCode);
348
+ this.content = content;
349
+ this.contentType(contentType);
350
+ }
351
+ }
352
+ Response.__type = [() => BaseResponse, 'content', 'contentType', 'statusCode', 'constructor', 'P7!PP&WJ2":&2#\'2$8"0%5'];
353
+ export class HtmlResponse extends BaseResponse {
354
+ constructor(html, statusCode) {
355
+ super(statusCode);
356
+ this.html = html;
357
+ }
358
+ }
359
+ HtmlResponse.__type = [() => BaseResponse, 'html', 'statusCode', 'constructor', 'P7!P&2":\'2#8"0$5'];
360
+ export class JSONResponse extends BaseResponse {
361
+ constructor(json, statusCode) {
362
+ super(statusCode);
363
+ this.json = json;
364
+ }
365
+ }
366
+ JSONResponse.__type = [() => BaseResponse, 'json', 'statusCode', 'constructor', 'P7!P"2":\'2#8"0$5'];
367
+ const __ΩSupportedHttpResult = [() => Response, () => JSONResponse, () => HtmlResponse, () => HttpResponse, () => Redirect, () => __ΩError, 'P-,\'&P7!P7"P7#P7$!!P7%Wn&J'];
368
+ export { __ΩSupportedHttpResult as __ΩSupportedHttpResult };
369
+ const __ΩHttpResultFormatterContext = [() => HttpRequest, 'request', () => HttpResponse, 'response', () => RouteConfig, 'route', 'PP7!4"P7#4$P7%4&8M'];
370
+ export { __ΩHttpResultFormatterContext as __ΩHttpResultFormatterContext };
371
+ export class HttpResultFormatter {
372
+ constructor(router) {
373
+ this.router = router;
374
+ this.jsonContentType = 'application/json; charset=utf-8';
375
+ this.htmlContentType = 'text/html; charset=utf-8';
376
+ }
377
+ setContentTypeIfNotSetAlready(response, contentType) {
378
+ if (response.hasHeader('Content-Type'))
379
+ return;
380
+ response.setHeader('Content-Type', contentType);
381
+ }
382
+ handleError(error, context) {
383
+ }
384
+ handleUndefined(result, context) {
385
+ context.response.end(result);
386
+ }
387
+ handleRedirect(result, context) {
388
+ if (result.routeName) {
389
+ context.response.writeHead(result.statusCode, {
390
+ Location: this.router.resolveUrl(result.routeName, result.routeParameters)
391
+ });
392
+ }
393
+ else {
394
+ context.response.writeHead(result.statusCode, {
395
+ Location: result.url
396
+ });
397
+ }
398
+ context.response.end();
399
+ }
400
+ handleUnknown(result, context) {
401
+ const oldCheck = typeSettings.unpopulatedCheck;
402
+ try {
403
+ typeSettings.unpopulatedCheck = UnpopulatedCheck.None;
404
+ this.setContentTypeIfNotSetAlready(context.response, this.jsonContentType);
405
+ context.response.end(JSON.stringify(result));
406
+ }
407
+ finally {
408
+ typeSettings.unpopulatedCheck = oldCheck;
409
+ }
410
+ }
411
+ handleHtmlResponse(result, context) {
412
+ this.setContentTypeIfNotSetAlready(context.response, this.htmlContentType);
413
+ context.response.writeHead(result._statusCode || 200, result._headers);
414
+ context.response.end(result.html);
415
+ }
416
+ handleGenericResponse(result, context) {
417
+ context.response.writeHead(result._statusCode || 200, result._headers);
418
+ context.response.end(result.content);
419
+ }
420
+ handleJSONResponse(result, context) {
421
+ this.setContentTypeIfNotSetAlready(context.response, this.jsonContentType);
422
+ context.response.writeHead(result._statusCode || 200, result._headers);
423
+ context.response.end(JSON.stringify(result.json));
424
+ }
425
+ handleTypeEntity(classType, instance, context, route) {
426
+ this.handleType(resolveReceiveType(classType), instance, context, route);
427
+ }
428
+ handleType(type, instance, context, route) {
429
+ this.setContentTypeIfNotSetAlready(context.response, this.jsonContentType);
430
+ const serializerToUse = route && (route === null || route === void 0 ? void 0 : route.serializer) ? route.serializer : serializer;
431
+ context.response.end(JSON.stringify(serialize(instance, route ? route.serializationOptions : undefined, serializerToUse, undefined, type)));
432
+ }
433
+ handleStream(stream, context) {
434
+ stream.pipe(context.response);
435
+ }
436
+ handleBinary(result, context) {
437
+ context.response.end(result);
438
+ }
439
+ handleResponse(context) {
440
+ }
441
+ handle(result, context) {
442
+ if (result === null || result === undefined) {
443
+ this.handleUndefined(result, context);
444
+ }
445
+ else if (result instanceof Error) {
446
+ this.handleError(result, context);
447
+ }
448
+ else if (result instanceof Redirect) {
449
+ this.handleRedirect(result, context);
450
+ }
451
+ else if (result instanceof ServerResponse) {
452
+ this.handleResponse(context);
453
+ }
454
+ else if (result instanceof HtmlResponse) {
455
+ this.handleHtmlResponse(result, context);
456
+ }
457
+ else if (result instanceof stream.Readable) {
458
+ this.handleStream(result, context);
459
+ }
460
+ else if (result instanceof Uint8Array) {
461
+ this.handleBinary(result, context);
462
+ }
463
+ else if (result instanceof JSONResponse) {
464
+ this.handleJSONResponse(result, context);
465
+ }
466
+ else if (result instanceof Response) {
467
+ this.handleGenericResponse(result, context);
468
+ }
469
+ else {
470
+ if (isClassInstance(result)) {
471
+ const classType = getClassTypeFromInstance(result);
472
+ if (hasTypeInformation(classType)) {
473
+ this.handleTypeEntity(classType, result, context);
474
+ return;
475
+ }
476
+ }
477
+ else if (isArray(result) && result.length > 0 && isClassInstance(result[0])) {
478
+ const firstClassType = getClassTypeFromInstance(result[0]);
479
+ let allSameType = true;
480
+ for (const item of result) {
481
+ if (!isClassInstance(item) || getClassTypeFromInstance(item) !== firstClassType) {
482
+ allSameType = false;
483
+ break;
484
+ }
485
+ }
486
+ if (allSameType && hasTypeInformation(firstClassType)) {
487
+ this.handleType({ kind: ReflectionKind.array, type: resolveReceiveType(firstClassType) }, result, context);
488
+ return;
489
+ }
490
+ }
491
+ this.handleUnknown(result, context);
492
+ }
493
+ }
494
+ }
495
+ HttpResultFormatter.__type = ['jsonContentType', function () { return 'application/json; charset=utf-8'; }, 'htmlContentType', function () { return 'text/html; charset=utf-8'; }, () => HttpRouter, 'router', 'constructor', () => HttpResponse, 'response', 'contentType', 'setContentTypeIfNotSetAlready', () => __ΩError, 'error', () => __ΩHttpResultFormatterContext, 'context', 'handleError', 'result', () => __ΩHttpResultFormatterContext, 'handleUndefined', () => Redirect, () => __ΩHttpResultFormatterContext, 'handleRedirect', () => __ΩHttpResultFormatterContext, 'handleUnknown', () => HtmlResponse, () => __ΩHttpResultFormatterContext, 'handleHtmlResponse', () => Response, () => __ΩHttpResultFormatterContext, 'handleGenericResponse', () => JSONResponse, () => __ΩHttpResultFormatterContext, 'handleJSONResponse', () => __ΩClassType, 'classType', 'instance', () => __ΩHttpResultFormatterContext, () => RouteConfig, 'route', 'handleTypeEntity', 'type', () => __ΩHttpResultFormatterContext, () => RouteConfig, 'handleType', 'stream', () => __ΩHttpResultFormatterContext, 'handleStream', () => __ΩHttpResultFormatterContext, 'handleBinary', () => __ΩHttpResultFormatterContext, 'handleResponse', () => __ΩSupportedHttpResult, () => __ΩHttpResultFormatterContext, 'handle', '&3!<>"&3#<>$PP7%2&<"0\'PP7(2)&2*$0+<Pn,2-n.2/$00PP-,J21n22/$03PP7421n52/$06P"21n72/$08PP7921n:2/$0;PP7<21n=2/$0>PP7?21n@2/$0AP"oB"2C"2DnE2/P7F2G8$0HP"2I"2DnJ2/P7K2G8$0LP!2MnN2/$0OPW21nP2/$0QPnR2/"0SPnT21nU2/$0V5'];
496
+ export class HttpListener {
497
+ constructor(router, logger, resultFormatter, stopwatch) {
498
+ this.router = router;
499
+ this.logger = logger;
500
+ this.resultFormatter = resultFormatter;
501
+ this.stopwatch = stopwatch;
502
+ }
503
+ onRequest(event) {
504
+ if (event.sent)
505
+ return;
506
+ if (event.hasNext())
507
+ return;
508
+ event.next('route', new HttpRouteEvent(event.injectorContext, event.request, event.response));
509
+ }
510
+ async onRoute(event) {
511
+ if (event.sent)
512
+ return;
513
+ if (event.hasNext())
514
+ return;
515
+ const logger = this.logger;
516
+ try {
517
+ const resolved = this.router.resolveRequest(event.request);
518
+ if (resolved) {
519
+ event.request.uploadedFiles = resolved.uploadedFiles;
520
+ //todo: embed that into the generated router code.
521
+ if (resolved.middlewares) {
522
+ const middlewares = resolved.middlewares(event.injectorContext);
523
+ if (middlewares.length) {
524
+ await asyncOperation(__assignType(async (resolve, reject) => {
525
+ let lastTimer = undefined;
526
+ function finish() {
527
+ clearTimeout(lastTimer);
528
+ resolve(undefined);
529
+ //middleware finished the request. We end the workflow transition
530
+ }
531
+ finish.__type = ['finish', 'P"/!'];
532
+ event.response.once('finish', finish);
533
+ let i = -1;
534
+ async function next() {
535
+ i++;
536
+ if (i >= middlewares.length) {
537
+ event.response.off('finish', finish);
538
+ resolve(undefined);
539
+ return;
540
+ }
541
+ const timeout = middlewares[i].timeout;
542
+ if (timeout !== undefined && timeout > 0) {
543
+ lastTimer = setTimeout(() => {
544
+ logger.warning(`Middleware timed out. Increase the timeout or fix the middleware. (${middlewares[i].fn})`);
545
+ next();
546
+ }, timeout);
547
+ }
548
+ try {
549
+ await middlewares[i].fn(event.request, event.response, __assignType((error) => {
550
+ if (lastTimer)
551
+ clearTimeout(lastTimer);
552
+ if (error) {
553
+ event.response.off('finish', finish);
554
+ reject(error);
555
+ }
556
+ else {
557
+ next();
558
+ }
559
+ }, ['error', '', 'P"2!8"/"']));
560
+ }
561
+ catch (error) {
562
+ reject(error);
563
+ }
564
+ }
565
+ next.__type = ['next', 'P"/!'];
566
+ await next();
567
+ }, ['resolve', 'reject', '', 'P"2!"2""/#']));
568
+ }
569
+ }
570
+ event.injectorContext.set(RouteConfig, resolved.routeConfig);
571
+ event.routeFound(resolved.routeConfig, resolved.parameters);
572
+ }
573
+ }
574
+ catch (error) {
575
+ this.logger.error('Could not resolve request', error);
576
+ event.notFound();
577
+ }
578
+ }
579
+ onRouteForward(event) {
580
+ if (event.sent)
581
+ return;
582
+ if (event.hasNext())
583
+ return;
584
+ if (!event.route) {
585
+ event.next('routeNotFound', new HttpRouteNotFoundEvent(event.injectorContext, event.request, event.response));
586
+ }
587
+ }
588
+ async routeNotFound(event) {
589
+ if (event.sent)
590
+ return;
591
+ if (event.hasNext())
592
+ return;
593
+ event.send(new HtmlResponse('Not found', 404));
594
+ }
595
+ onAuth(event) {
596
+ if (event.sent)
597
+ return;
598
+ if (event.hasNext())
599
+ return;
600
+ event.next('resolveParameters', new HttpResolveParametersEvent(event.injectorContext, event.request, event.response, event.parameterResolver, event.route));
601
+ }
602
+ async onResolveParameters(event) {
603
+ if (event.response.finished)
604
+ return;
605
+ if (event.hasNext())
606
+ return;
607
+ try {
608
+ event.parameters = await event.parameterResolver(event.injectorContext);
609
+ event.next('controller', new HttpControllerEvent(event.injectorContext, event.request, event.response, event.parameters, event.route));
610
+ }
611
+ catch (error) {
612
+ event.next('parametersFailed', new HttpControllerErrorEvent(event.injectorContext, event.request, event.response, event.route, error));
613
+ }
614
+ }
615
+ onAccessDenied(event) {
616
+ if (event.sent)
617
+ return;
618
+ if (event.hasNext())
619
+ return;
620
+ event.send(new HtmlResponse('Access denied', 403));
621
+ }
622
+ async onController(event) {
623
+ if (event.sent)
624
+ return;
625
+ if (event.hasNext())
626
+ return;
627
+ const start = Date.now();
628
+ const stopWatchLabel = event.route.action.type === 'controller'
629
+ ? getClassName(event.route.action.controller) + '.' + event.route.action.methodName
630
+ : event.route.action.fn.name;
631
+ const frame = this.stopwatch ? this.stopwatch.start(stopWatchLabel, FrameCategory.httpController) : undefined;
632
+ try {
633
+ let result;
634
+ if (event.route.action.type === 'controller') {
635
+ const controllerInstance = event.injectorContext.get(event.route.action.controller, event.route.action.module);
636
+ const method = controllerInstance[event.route.action.methodName];
637
+ result = await method.apply(controllerInstance, event.parameters.arguments);
638
+ }
639
+ else {
640
+ result = await event.route.action.fn(...event.parameters.arguments);
641
+ }
642
+ if (isElementStruct(result)) {
643
+ const html = await getTemplateRender()(event.injectorContext.getRootInjector(), result, this.stopwatch ? this.stopwatch : undefined);
644
+ result = new HtmlResponse(html, 200).header('Content-Type', 'text/html; charset=utf-8');
645
+ }
646
+ if (result instanceof stream.Readable) {
647
+ const stream = result;
648
+ await new Promise(__assignType((resolve, reject) => {
649
+ stream.once('readable', resolve);
650
+ stream.once('error', reject);
651
+ }, ['resolve', 'reject', '', 'P"2!"2""/#']));
652
+ }
653
+ const responseEvent = new HttpResponseEvent(event.injectorContext, event.request, event.response, result, event.route);
654
+ responseEvent.controllerActionTime = Date.now() - start;
655
+ event.next('response', responseEvent);
656
+ }
657
+ catch (error) {
658
+ if (frame)
659
+ frame.end();
660
+ if (error instanceof HttpAccessDeniedError) {
661
+ event.next('accessDenied', new HttpAccessDeniedEvent(event.injectorContext, event.request, event.response, event.route, error));
662
+ }
663
+ else {
664
+ const errorEvent = new HttpControllerErrorEvent(event.injectorContext, event.request, event.response, event.route, error);
665
+ errorEvent.controllerActionTime = Date.now() - start;
666
+ event.next('controllerError', errorEvent);
667
+ }
668
+ }
669
+ finally {
670
+ if (frame)
671
+ frame.end();
672
+ }
673
+ }
674
+ onParametersFailed(event) {
675
+ if (event.response.finished)
676
+ return;
677
+ if (event.sent)
678
+ return;
679
+ if (event.error instanceof SerializationError) {
680
+ event.send(new JSONResponse({
681
+ message: event.error.message,
682
+ errors: [{
683
+ path: event.error.path,
684
+ code: 'serialization',
685
+ message: event.error.originalMessage,
686
+ }]
687
+ }, 400).disableAutoSerializing());
688
+ }
689
+ else if (event.error instanceof ValidationError) {
690
+ event.send(new JSONResponse({
691
+ message: event.error.message,
692
+ errors: event.error.errors
693
+ }, 400).disableAutoSerializing());
694
+ }
695
+ else if (event.error instanceof HttpError) {
696
+ event.send(new JSONResponse({
697
+ message: event.error.message
698
+ }, event.error.httpCode).disableAutoSerializing());
699
+ return;
700
+ }
701
+ else {
702
+ this.logger.error('Controller parameter resolving error:', event.error);
703
+ event.send(new HtmlResponse('Internal error', 500));
704
+ }
705
+ }
706
+ onControllerError(event) {
707
+ if (event.response.finished)
708
+ return;
709
+ if (event.sent)
710
+ return;
711
+ if (event.error instanceof ValidationError) {
712
+ event.send(new JSONResponse({
713
+ message: event.error.message,
714
+ errors: event.error.errors
715
+ }, 400).disableAutoSerializing());
716
+ return;
717
+ }
718
+ else if (event.error instanceof HttpError) {
719
+ event.send(new JSONResponse({
720
+ message: event.error.message
721
+ }, event.error.httpCode).disableAutoSerializing());
722
+ return;
723
+ }
724
+ this.logger.error('Controller error', event.error);
725
+ event.send(new HtmlResponse('Internal error', 500));
726
+ }
727
+ /**
728
+ * This happens before the result is sent.
729
+ */
730
+ async onResultSerialization(event) {
731
+ if (!event.route)
732
+ return;
733
+ if (event.response.headersSent)
734
+ return;
735
+ if (event.result === undefined || event.result === null)
736
+ return;
737
+ if (event.result instanceof HtmlResponse || event.result instanceof Response || event.result instanceof ServerResponse || event.result instanceof Redirect || event.result instanceof stream.Readable) {
738
+ // don't do anything
739
+ }
740
+ else if (event.result instanceof JSONResponse) {
741
+ const schema = (event.result._statusCode && event.route.getSchemaForResponse(event.result._statusCode)) || event.route.returnType;
742
+ if (!schema || !event.result.autoSerializing)
743
+ return;
744
+ const serializerToUse = event.route && event.route.serializer ? event.route.serializer : serializer;
745
+ const serialize = getSerializeFunction(schema, serializerToUse.serializeRegistry);
746
+ event.result.json = serialize(event.result.json, event.route.serializationOptions);
747
+ }
748
+ else if (event.route.returnType && event.route.returnType.kind !== ReflectionKind.any) {
749
+ const serializerToUse = event.route && event.route.serializer ? event.route.serializer : serializer;
750
+ const serialize = getSerializeFunction(event.route.returnType, serializerToUse.serializeRegistry);
751
+ event.result = serialize(event.result, event.route.serializationOptions);
752
+ }
753
+ else {
754
+ const schema = event.route.getSchemaForResponse(200);
755
+ if (!schema)
756
+ return;
757
+ const serializerToUse = event.route && event.route.serializer ? event.route.serializer : serializer;
758
+ const serialize = getSerializeFunction(schema, serializerToUse.serializeRegistry);
759
+ event.result = serialize(event.result, event.route.serializationOptions);
760
+ }
761
+ }
762
+ async onResponse(event) {
763
+ if (event.response.headersSent)
764
+ return;
765
+ this.resultFormatter.handle(event.result, event);
766
+ }
767
+ }
768
+ HttpListener.__type = [() => HttpRouter, 'router', () => __ΩLoggerInterface, 'logger', () => HttpResultFormatter, 'resultFormatter', () => Stopwatch, 'stopwatch', 'constructor', () => httpWorkflow.onRequest.event, 'event', 'onRequest', () => httpWorkflow.onRoute.event, 'onRoute', () => httpWorkflow.onRoute.event, 'onRouteForward', () => httpWorkflow.onRouteNotFound.event, 'routeNotFound', () => httpWorkflow.onAuth.event, 'onAuth', () => httpWorkflow.onResolveParameters.event, 'onResolveParameters', () => httpWorkflow.onAccessDenied.event, 'onAccessDenied', () => httpWorkflow.onController.event, 'onController', () => httpWorkflow.onParametersFailed.event, 'onParametersFailed', () => httpWorkflow.onControllerError.event, 'onControllerError', () => httpWorkflow.onResponse.event, 'onResultSerialization', () => httpWorkflow.onResponse.event, 'onResponse', 'PP7!2"<n#2$<P7%2&<P7\'2(8<"0)Pi*2+$0,Pi-2+"0.Pi/2+"00Pi12+$`02Pi32+$04Pi52+"06Pi72+$08Pi92+"0:Pi;2+$0<Pi=2+$0>Pi?2+"0@PiA2+"0B5'];
769
+ __decorate([
770
+ eventDispatcher.listen(httpWorkflow.onRequest, 100),
771
+ __metadata("design:type", Function),
772
+ __metadata("design:paramtypes", [Object]),
773
+ __metadata("design:returntype", void 0)
774
+ ], HttpListener.prototype, "onRequest", null);
775
+ __decorate([
776
+ eventDispatcher.listen(httpWorkflow.onRoute, 100),
777
+ __metadata("design:type", Function),
778
+ __metadata("design:paramtypes", [Object]),
779
+ __metadata("design:returntype", Promise)
780
+ ], HttpListener.prototype, "onRoute", null);
781
+ __decorate([
782
+ eventDispatcher.listen(httpWorkflow.onRoute, 1000),
783
+ __metadata("design:type", Function),
784
+ __metadata("design:paramtypes", [Object]),
785
+ __metadata("design:returntype", void 0)
786
+ ], HttpListener.prototype, "onRouteForward", null);
787
+ __decorate([
788
+ eventDispatcher.listen(httpWorkflow.onRouteNotFound, 100),
789
+ __metadata("design:type", Function),
790
+ __metadata("design:paramtypes", [Object]),
791
+ __metadata("design:returntype", Promise)
792
+ ], HttpListener.prototype, "routeNotFound", null);
793
+ __decorate([
794
+ eventDispatcher.listen(httpWorkflow.onAuth, 100),
795
+ __metadata("design:type", Function),
796
+ __metadata("design:paramtypes", [Object]),
797
+ __metadata("design:returntype", void 0)
798
+ ], HttpListener.prototype, "onAuth", null);
799
+ __decorate([
800
+ eventDispatcher.listen(httpWorkflow.onResolveParameters, 100),
801
+ __metadata("design:type", Function),
802
+ __metadata("design:paramtypes", [Object]),
803
+ __metadata("design:returntype", Promise)
804
+ ], HttpListener.prototype, "onResolveParameters", null);
805
+ __decorate([
806
+ eventDispatcher.listen(httpWorkflow.onAccessDenied, 100),
807
+ __metadata("design:type", Function),
808
+ __metadata("design:paramtypes", [Object]),
809
+ __metadata("design:returntype", void 0)
810
+ ], HttpListener.prototype, "onAccessDenied", null);
811
+ __decorate([
812
+ eventDispatcher.listen(httpWorkflow.onController, 100),
813
+ __metadata("design:type", Function),
814
+ __metadata("design:paramtypes", [Object]),
815
+ __metadata("design:returntype", Promise)
816
+ ], HttpListener.prototype, "onController", null);
817
+ __decorate([
818
+ eventDispatcher.listen(httpWorkflow.onParametersFailed, 100),
819
+ __metadata("design:type", Function),
820
+ __metadata("design:paramtypes", [Object]),
821
+ __metadata("design:returntype", void 0)
822
+ ], HttpListener.prototype, "onParametersFailed", null);
823
+ __decorate([
824
+ eventDispatcher.listen(httpWorkflow.onControllerError, 100),
825
+ __metadata("design:type", Function),
826
+ __metadata("design:paramtypes", [Object]),
827
+ __metadata("design:returntype", void 0)
828
+ ], HttpListener.prototype, "onControllerError", null);
829
+ __decorate([
830
+ eventDispatcher.listen(httpWorkflow.onResponse, -100),
831
+ __metadata("design:type", Function),
832
+ __metadata("design:paramtypes", [Object]),
833
+ __metadata("design:returntype", Promise)
834
+ ], HttpListener.prototype, "onResultSerialization", null);
835
+ __decorate([
836
+ eventDispatcher.listen(httpWorkflow.onResponse, 100),
837
+ __metadata("design:type", Function),
838
+ __metadata("design:paramtypes", [Object]),
839
+ __metadata("design:returntype", Promise)
840
+ ], HttpListener.prototype, "onResponse", null);
841
+ //# sourceMappingURL=http.js.map