@webda/core 2.0.0-beta.1 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (279) hide show
  1. package/lib/application.d.ts +9 -21
  2. package/lib/application.js +71 -84
  3. package/lib/application.js.map +1 -1
  4. package/lib/application.spec.js +121 -140
  5. package/lib/application.spec.js.map +1 -1
  6. package/lib/core.d.ts +86 -46
  7. package/lib/core.js +254 -316
  8. package/lib/core.js.map +1 -1
  9. package/lib/core.spec.js +326 -391
  10. package/lib/core.spec.js.map +1 -1
  11. package/lib/index.d.ts +49 -45
  12. package/lib/index.js +54 -67
  13. package/lib/index.js.map +1 -1
  14. package/lib/models/aclmodel.d.ts +2 -2
  15. package/lib/models/aclmodel.js +63 -90
  16. package/lib/models/aclmodel.js.map +1 -1
  17. package/lib/models/aclmodel.spec.js +127 -151
  18. package/lib/models/aclmodel.spec.js.map +1 -1
  19. package/lib/models/coremodel.d.ts +84 -11
  20. package/lib/models/coremodel.js +104 -103
  21. package/lib/models/coremodel.js.map +1 -1
  22. package/lib/models/coremodel.spec.js +91 -91
  23. package/lib/models/coremodel.spec.js.map +1 -1
  24. package/lib/models/deployment.js +1 -2
  25. package/lib/models/ident.d.ts +5 -3
  26. package/lib/models/ident.js +4 -9
  27. package/lib/models/ident.js.map +1 -1
  28. package/lib/models/ident.spec.js +9 -11
  29. package/lib/models/ident.spec.js.map +1 -1
  30. package/lib/models/ownermodel.d.ts +12 -2
  31. package/lib/models/ownermodel.js +54 -62
  32. package/lib/models/ownermodel.js.map +1 -1
  33. package/lib/models/ownermodel.spec.js +129 -152
  34. package/lib/models/ownermodel.spec.js.map +1 -1
  35. package/lib/models/rolemodel.d.ts +2 -2
  36. package/lib/models/rolemodel.js +24 -40
  37. package/lib/models/rolemodel.js.map +1 -1
  38. package/lib/models/rolemodel.spec.js +44 -61
  39. package/lib/models/rolemodel.spec.js.map +1 -1
  40. package/lib/models/user.d.ts +5 -5
  41. package/lib/models/user.js +3 -8
  42. package/lib/models/user.js.map +1 -1
  43. package/lib/models/user.spec.js +14 -16
  44. package/lib/models/user.spec.js.map +1 -1
  45. package/lib/queues/filequeue.d.ts +2 -2
  46. package/lib/queues/filequeue.js +72 -93
  47. package/lib/queues/filequeue.js.map +1 -1
  48. package/lib/queues/filequeue.spec.js +53 -70
  49. package/lib/queues/filequeue.spec.js.map +1 -1
  50. package/lib/queues/memoryqueue.d.ts +2 -2
  51. package/lib/queues/memoryqueue.js +37 -61
  52. package/lib/queues/memoryqueue.js.map +1 -1
  53. package/lib/queues/memoryqueue.spec.js +142 -165
  54. package/lib/queues/memoryqueue.spec.js.map +1 -1
  55. package/lib/queues/pubsubservice.d.ts +2 -2
  56. package/lib/queues/pubsubservice.js +3 -7
  57. package/lib/queues/pubsubservice.js.map +1 -1
  58. package/lib/queues/queue.spec.d.ts +1 -1
  59. package/lib/queues/queue.spec.js +42 -56
  60. package/lib/queues/queue.spec.js.map +1 -1
  61. package/lib/queues/queueservice.d.ts +4 -4
  62. package/lib/queues/queueservice.js +52 -67
  63. package/lib/queues/queueservice.js.map +1 -1
  64. package/lib/router.d.ts +7 -3
  65. package/lib/router.js +49 -48
  66. package/lib/router.js.map +1 -1
  67. package/lib/router.spec.js +64 -61
  68. package/lib/router.spec.js.map +1 -1
  69. package/lib/services/asyncevents.d.ts +2 -2
  70. package/lib/services/asyncevents.js +44 -64
  71. package/lib/services/asyncevents.js.map +1 -1
  72. package/lib/services/asyncevents.spec.js +81 -98
  73. package/lib/services/asyncevents.spec.js.map +1 -1
  74. package/lib/services/authentication.d.ts +28 -19
  75. package/lib/services/authentication.js +539 -571
  76. package/lib/services/authentication.js.map +1 -1
  77. package/lib/services/authentication.spec.js +411 -447
  78. package/lib/services/authentication.spec.js.map +1 -1
  79. package/lib/services/binary.d.ts +8 -6
  80. package/lib/services/binary.js +212 -244
  81. package/lib/services/binary.js.map +1 -1
  82. package/lib/services/binary.spec.d.ts +3 -3
  83. package/lib/services/binary.spec.js +390 -443
  84. package/lib/services/binary.spec.js.map +1 -1
  85. package/lib/services/cloudbinary.d.ts +3 -3
  86. package/lib/services/cloudbinary.js +46 -71
  87. package/lib/services/cloudbinary.js.map +1 -1
  88. package/lib/services/cloudbinary.spec.d.ts +3 -3
  89. package/lib/services/cloudbinary.spec.js +133 -162
  90. package/lib/services/cloudbinary.spec.js.map +1 -1
  91. package/lib/services/configuration.d.ts +6 -3
  92. package/lib/services/configuration.js +78 -103
  93. package/lib/services/configuration.js.map +1 -1
  94. package/lib/services/configuration.spec.js +63 -83
  95. package/lib/services/configuration.spec.js.map +1 -1
  96. package/lib/services/cron.d.ts +3 -2
  97. package/lib/services/cron.js +9 -13
  98. package/lib/services/cron.js.map +1 -1
  99. package/lib/services/cron.spec.js +18 -21
  100. package/lib/services/cron.spec.js.map +1 -1
  101. package/lib/services/cryptoservice.d.ts +258 -0
  102. package/lib/services/cryptoservice.js +312 -0
  103. package/lib/services/cryptoservice.js.map +1 -0
  104. package/lib/services/cryptoservice.spec.d.ts +1 -0
  105. package/lib/services/cryptoservice.spec.js +137 -0
  106. package/lib/services/cryptoservice.spec.js.map +1 -0
  107. package/lib/services/debugmailer.d.ts +1 -1
  108. package/lib/services/debugmailer.js +13 -34
  109. package/lib/services/debugmailer.js.map +1 -1
  110. package/lib/services/debugmailer.spec.js +16 -29
  111. package/lib/services/debugmailer.spec.js.map +1 -1
  112. package/lib/services/echo.d.ts +2 -2
  113. package/lib/services/echo.js +15 -31
  114. package/lib/services/echo.js.map +1 -1
  115. package/lib/services/echo.spec.js +27 -40
  116. package/lib/services/echo.spec.js.map +1 -1
  117. package/lib/services/filebinary.d.ts +15 -5
  118. package/lib/services/filebinary.js +171 -200
  119. package/lib/services/filebinary.js.map +1 -1
  120. package/lib/services/filebinary.spec.d.ts +2 -1
  121. package/lib/services/filebinary.spec.js +106 -117
  122. package/lib/services/filebinary.spec.js.map +1 -1
  123. package/lib/services/fileconfiguration.d.ts +2 -2
  124. package/lib/services/fileconfiguration.js +25 -43
  125. package/lib/services/fileconfiguration.js.map +1 -1
  126. package/lib/services/fileconfiguration.spec.js +79 -109
  127. package/lib/services/fileconfiguration.spec.js.map +1 -1
  128. package/lib/services/invitationservice.d.ts +9 -9
  129. package/lib/services/invitationservice.js +275 -313
  130. package/lib/services/invitationservice.js.map +1 -1
  131. package/lib/services/invitationservice.spec.js +442 -448
  132. package/lib/services/invitationservice.spec.js.map +1 -1
  133. package/lib/services/kubernetesconfiguration.d.ts +2 -2
  134. package/lib/services/kubernetesconfiguration.js +41 -59
  135. package/lib/services/kubernetesconfiguration.js.map +1 -1
  136. package/lib/services/kubernetesconfiguration.spec.js +80 -98
  137. package/lib/services/kubernetesconfiguration.spec.js.map +1 -1
  138. package/lib/services/mailer.d.ts +4 -4
  139. package/lib/services/mailer.js +62 -86
  140. package/lib/services/mailer.js.map +1 -1
  141. package/lib/services/mailer.spec.js +86 -127
  142. package/lib/services/mailer.spec.js.map +1 -1
  143. package/lib/services/notificationservice.d.ts +4 -4
  144. package/lib/services/notificationservice.js +23 -42
  145. package/lib/services/notificationservice.js.map +1 -1
  146. package/lib/services/notificationservice.spec.js +47 -73
  147. package/lib/services/notificationservice.spec.js.map +1 -1
  148. package/lib/services/oauth.d.ts +32 -6
  149. package/lib/services/oauth.js +73 -78
  150. package/lib/services/oauth.js.map +1 -1
  151. package/lib/services/oauth.spec.js +128 -147
  152. package/lib/services/oauth.spec.js.map +1 -1
  153. package/lib/services/proxy.d.ts +74 -0
  154. package/lib/services/proxy.js +126 -0
  155. package/lib/services/proxy.js.map +1 -0
  156. package/lib/services/proxy.spec.d.ts +1 -0
  157. package/lib/services/proxy.spec.js +59 -0
  158. package/lib/services/proxy.spec.js.map +1 -0
  159. package/lib/services/resource.d.ts +2 -2
  160. package/lib/services/resource.js +12 -18
  161. package/lib/services/resource.js.map +1 -1
  162. package/lib/services/resource.spec.js +67 -99
  163. package/lib/services/resource.spec.js.map +1 -1
  164. package/lib/services/service.d.ts +33 -7
  165. package/lib/services/service.js +74 -42
  166. package/lib/services/service.js.map +1 -1
  167. package/lib/services/service.spec.js +62 -67
  168. package/lib/services/service.spec.js.map +1 -1
  169. package/lib/services/version.d.ts +1 -1
  170. package/lib/services/version.js +3 -8
  171. package/lib/services/version.js.map +1 -1
  172. package/lib/services/version.spec.js +11 -24
  173. package/lib/services/version.spec.js.map +1 -1
  174. package/lib/stores/aggregator.d.ts +3 -3
  175. package/lib/stores/aggregator.js +37 -57
  176. package/lib/stores/aggregator.js.map +1 -1
  177. package/lib/stores/file.d.ts +3 -3
  178. package/lib/stores/file.js +93 -131
  179. package/lib/stores/file.js.map +1 -1
  180. package/lib/stores/file.spec.d.ts +2 -2
  181. package/lib/stores/file.spec.js +261 -289
  182. package/lib/stores/file.spec.js.map +1 -1
  183. package/lib/stores/mapper.d.ts +4 -4
  184. package/lib/stores/mapper.js +112 -137
  185. package/lib/stores/mapper.js.map +1 -1
  186. package/lib/stores/mapper.spec.js +131 -150
  187. package/lib/stores/mapper.spec.js.map +1 -1
  188. package/lib/stores/memory.d.ts +67 -6
  189. package/lib/stores/memory.js +155 -117
  190. package/lib/stores/memory.js.map +1 -1
  191. package/lib/stores/memory.spec.d.ts +3 -2
  192. package/lib/stores/memory.spec.js +127 -105
  193. package/lib/stores/memory.spec.js.map +1 -1
  194. package/lib/stores/store.d.ts +35 -15
  195. package/lib/stores/store.js +839 -821
  196. package/lib/stores/store.js.map +1 -1
  197. package/lib/stores/store.spec.d.ts +6 -4
  198. package/lib/stores/store.spec.js +627 -647
  199. package/lib/stores/store.spec.js.map +1 -1
  200. package/lib/stores/webdaql/WebdaQLLexer.d.ts +4 -4
  201. package/lib/stores/webdaql/WebdaQLLexer.js +9 -13
  202. package/lib/stores/webdaql/WebdaQLLexer.js.map +1 -1
  203. package/lib/stores/webdaql/WebdaQLParserLexer.d.ts +4 -4
  204. package/lib/stores/webdaql/WebdaQLParserLexer.js +9 -13
  205. package/lib/stores/webdaql/WebdaQLParserLexer.js.map +1 -1
  206. package/lib/stores/webdaql/WebdaQLParserListener.d.ts +2 -2
  207. package/lib/stores/webdaql/WebdaQLParserListener.js +1 -2
  208. package/lib/stores/webdaql/WebdaQLParserListener.js.map +1 -1
  209. package/lib/stores/webdaql/WebdaQLParserParser.d.ts +10 -10
  210. package/lib/stores/webdaql/WebdaQLParserParser.js +62 -91
  211. package/lib/stores/webdaql/WebdaQLParserParser.js.map +1 -1
  212. package/lib/stores/webdaql/WebdaQLParserVisitor.d.ts +2 -2
  213. package/lib/stores/webdaql/WebdaQLParserVisitor.js +1 -2
  214. package/lib/stores/webdaql/WebdaQLParserVisitor.js.map +1 -1
  215. package/lib/stores/webdaql/query.d.ts +4 -5
  216. package/lib/stores/webdaql/query.js +16 -19
  217. package/lib/stores/webdaql/query.js.map +1 -1
  218. package/lib/stores/webdaql/query.spec.js +30 -32
  219. package/lib/stores/webdaql/query.spec.js.map +1 -1
  220. package/lib/test.d.ts +3 -3
  221. package/lib/test.js +74 -94
  222. package/lib/test.js.map +1 -1
  223. package/lib/unpackedapplication.d.ts +1 -1
  224. package/lib/unpackedapplication.js +25 -31
  225. package/lib/unpackedapplication.js.map +1 -1
  226. package/lib/utils/abstractdeployer.js +1 -5
  227. package/lib/utils/abstractdeployer.js.map +1 -1
  228. package/lib/utils/abstractdeployer.spec.js +6 -8
  229. package/lib/utils/abstractdeployer.spec.js.map +1 -1
  230. package/lib/utils/context.d.ts +61 -29
  231. package/lib/utils/context.js +133 -127
  232. package/lib/utils/context.js.map +1 -1
  233. package/lib/utils/context.spec.js +147 -153
  234. package/lib/utils/context.spec.js.map +1 -1
  235. package/lib/utils/cookie.d.ts +66 -45
  236. package/lib/utils/cookie.js +69 -158
  237. package/lib/utils/cookie.js.map +1 -1
  238. package/lib/utils/cookie.spec.js +220 -238
  239. package/lib/utils/cookie.spec.js.map +1 -1
  240. package/lib/utils/esm.d.ts +4 -0
  241. package/lib/utils/esm.js +10 -0
  242. package/lib/utils/esm.js.map +1 -0
  243. package/lib/utils/httpcontext.d.ts +37 -9
  244. package/lib/utils/httpcontext.js +86 -57
  245. package/lib/utils/httpcontext.js.map +1 -1
  246. package/lib/utils/httpcontext.spec.js +37 -48
  247. package/lib/utils/httpcontext.spec.js.map +1 -1
  248. package/lib/utils/logger.d.ts +2 -2
  249. package/lib/utils/logger.js +15 -28
  250. package/lib/utils/logger.js.map +1 -1
  251. package/lib/utils/logger.spec.js +9 -11
  252. package/lib/utils/logger.spec.js.map +1 -1
  253. package/lib/utils/serializers.js +17 -20
  254. package/lib/utils/serializers.js.map +1 -1
  255. package/lib/utils/serializers.spec.js +43 -44
  256. package/lib/utils/serializers.spec.js.map +1 -1
  257. package/lib/utils/session.d.ts +120 -0
  258. package/lib/utils/session.js +155 -0
  259. package/lib/utils/session.js.map +1 -0
  260. package/lib/utils/session.spec.d.ts +1 -0
  261. package/lib/utils/session.spec.js +66 -0
  262. package/lib/utils/session.spec.js.map +1 -0
  263. package/lib/utils/waiter.d.ts +1 -1
  264. package/lib/utils/waiter.js +32 -52
  265. package/lib/utils/waiter.js.map +1 -1
  266. package/lib/utils/waiter.spec.js +75 -92
  267. package/lib/utils/waiter.spec.js.map +1 -1
  268. package/package.json +22 -14
  269. package/test/config-invitation.json +1 -3
  270. package/test/config.json +3 -3
  271. package/test/config.old.json +1 -2
  272. package/test/moddas/annotatedservice.js +5 -5
  273. package/test/moddas/debugmailer.js +2 -3
  274. package/test/moddas/fakeservice.js +2 -3
  275. package/test/moddas/voidstore.js +6 -4
  276. package/test/models/ident.js +2 -6
  277. package/test/models/task.js +3 -7
  278. package/test/package.json +2 -1
  279. package/webda.module.json +956 -188
@@ -1,21 +1,15 @@
1
1
  /// <reference types="node" />
2
+ /// <reference types="node" />
3
+ /// <reference types="node" />
2
4
  import { WorkerLogLevel } from "@webda/workout";
3
5
  import { EventEmitter } from "events";
4
6
  import * as http from "http";
5
- import { Core } from "../core";
6
- import { User } from "../models/user";
7
- import { Service } from "../services/service";
8
- import { SessionCookie } from "../utils/cookie";
9
- import { HttpContext } from "./httpcontext";
10
- /**
11
- * @category CoreFeatures
12
- */
13
- export declare class ClientInfo extends Map<string, any> {
14
- ip: string;
15
- userAgent: string;
16
- locale: string;
17
- referer: string;
18
- }
7
+ import { Writable } from "stream";
8
+ import { Core } from "../core.js";
9
+ import { User } from "../models/user.js";
10
+ import { Service } from "../services/service.js";
11
+ import { Session } from "../utils/session.js";
12
+ import { HttpContext } from "./httpcontext.js";
19
13
  /**
20
14
  * @category CoreFeatures
21
15
  */
@@ -29,26 +23,47 @@ declare class Cookie {
29
23
  * @WebdaModel
30
24
  */
31
25
  export declare class Context<T = any, U = any> extends EventEmitter {
32
- clientInfo: ClientInfo;
33
26
  protected _body: any;
27
+ /**
28
+ * Contains the response headers
29
+ */
34
30
  protected _outputHeaders: Map<string, string>;
31
+ /**
32
+ * Contain emitting Core
33
+ */
35
34
  protected _webda: Core;
35
+ /**
36
+ * Current status code
37
+ */
36
38
  statusCode: number;
37
39
  _cookie: Map<string, Cookie>;
40
+ /**
41
+ *
42
+ */
38
43
  headers: Map<string, string>;
39
44
  _route: any;
40
- _buffered: boolean;
41
- protected session: SessionCookie;
45
+ /**
46
+ * Session
47
+ */
48
+ protected session: Session;
42
49
  _ended: Promise<any>;
43
- _stream: any;
50
+ _stream: Writable;
51
+ /**
52
+ * Contain all registered promises to this context
53
+ */
44
54
  _promises: Promise<any>[];
45
55
  _executor: Service<any>;
46
- _flushHeaders: boolean;
47
- _sanitized: any;
56
+ /**
57
+ * If headers were flushed
58
+ */
59
+ protected headersFlushed: boolean;
60
+ /**
61
+ * Contain the sanitized request body if computed
62
+ */
63
+ protected _sanitized: any;
48
64
  protected parameters: any;
49
65
  protected _pathParams: any;
50
66
  protected _serviceParams: any;
51
- files: any[];
52
67
  protected static __globalContext: Context;
53
68
  private global;
54
69
  /**
@@ -57,6 +72,9 @@ export declare class Context<T = any, U = any> extends EventEmitter {
57
72
  protected extensions: {
58
73
  [key: string]: any;
59
74
  };
75
+ /**
76
+ * Loaded user if exist
77
+ */
60
78
  private user;
61
79
  /**
62
80
  * Get Global Context
@@ -68,12 +86,10 @@ export declare class Context<T = any, U = any> extends EventEmitter {
68
86
  * @param ctx to set as Global
69
87
  */
70
88
  static setGlobalContext(ctx: Context): void;
71
- isGlobal(): boolean;
72
89
  /**
73
- * @private
74
- * Used in case of Buffer response ( like Lambda )
90
+ * Return if context is global
75
91
  */
76
- _write(chunk: any, _enc: any, next: any): boolean;
92
+ isGlobal(): boolean;
77
93
  /**
78
94
  * Set current http context
79
95
  * @param httpContext current http context
@@ -107,11 +123,18 @@ export declare class Context<T = any, U = any> extends EventEmitter {
107
123
  parameter(name: string): any;
108
124
  getParameters(): any;
109
125
  private processParameters;
110
- getSession(): SessionCookie;
126
+ /**
127
+ * Get linked session
128
+ * @returns
129
+ */
130
+ getSession<K = Session>(): K;
111
131
  getServiceParameters(): any;
112
132
  getPathParameters(): any;
113
133
  setServiceParameters(params: any): void;
114
134
  setPathParameters(params: any): void;
135
+ /**
136
+ * Remove everything that was about to be sent
137
+ */
115
138
  resetResponse(): void;
116
139
  /**
117
140
  * Write data to the client
@@ -170,6 +193,10 @@ export declare class Context<T = any, U = any> extends EventEmitter {
170
193
  */
171
194
  end(): Promise<any>;
172
195
  getRequestBody(sanitizedOptions?: any): Promise<T>;
196
+ /**
197
+ * Get request body
198
+ * @returns
199
+ */
173
200
  getResponseBody(): any;
174
201
  /**
175
202
  * Retrieve a http.IncomingMessage valid from Context
@@ -189,7 +216,7 @@ export declare class Context<T = any, U = any> extends EventEmitter {
189
216
  * Get the HTTP stream to output raw data
190
217
  * @returns {*}
191
218
  */
192
- getStream(): any;
219
+ getStream(): Writable;
193
220
  /**
194
221
  * Get the current user from session
195
222
  */
@@ -249,8 +276,13 @@ export declare class Context<T = any, U = any> extends EventEmitter {
249
276
  * @ignore
250
277
  * Used by Webda framework to set the body, session and output stream if known
251
278
  */
252
- constructor(webda: Core, httpContext: HttpContext, stream?: any);
253
- newSession(): SessionCookie;
279
+ constructor(webda: Core, httpContext: HttpContext, stream?: Writable);
280
+ createStream(): void;
281
+ /**
282
+ * Create a new session
283
+ * @returns
284
+ */
285
+ newSession(): Session;
254
286
  init(): Promise<this>;
255
287
  emitError(err: any): void;
256
288
  }
@@ -1,26 +1,9 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.Context = exports.ClientInfo = void 0;
13
- const acceptLanguage = require("accept-language");
14
- const events_1 = require("events");
15
- const sanitizeHtml = require("sanitize-html");
16
- const stream_1 = require("stream");
17
- const serializers_1 = require("./serializers");
18
- /**
19
- * @category CoreFeatures
20
- */
21
- class ClientInfo extends Map {
22
- }
23
- exports.ClientInfo = ClientInfo;
1
+ import acceptLanguage from "accept-language";
2
+ import { EventEmitter } from "events";
3
+ import sanitizeHtml from "sanitize-html";
4
+ import { Readable } from "stream";
5
+ import { WritableStreamBuffer } from "stream-buffers";
6
+ import { JSONUtils } from "./serializers.js";
24
7
  /**
25
8
  * @category CoreFeatures
26
9
  */
@@ -30,7 +13,7 @@ class Cookie {
30
13
  * @category CoreFeatures
31
14
  * @WebdaModel
32
15
  */
33
- class Context extends events_1.EventEmitter {
16
+ export class Context extends EventEmitter {
34
17
  /**
35
18
  * @ignore
36
19
  * Used by Webda framework to set the body, session and output stream if known
@@ -42,24 +25,20 @@ class Context extends events_1.EventEmitter {
42
25
  this._pathParams = {};
43
26
  this._serviceParams = {};
44
27
  this.global = false;
45
- this.clientInfo = new ClientInfo();
46
28
  this.extensions = {
47
29
  http: httpContext
48
30
  };
49
31
  this._webda = webda;
50
32
  this._promises = [];
51
33
  this._outputHeaders = new Map();
52
- this._flushHeaders = false;
34
+ this.headersFlushed = false;
53
35
  this._body = undefined;
54
36
  this.statusCode = 204;
55
37
  this._stream = stream;
56
- this._buffered = false;
57
38
  this.parameters = {};
58
39
  this.headers = new Map();
59
40
  if (stream === undefined) {
60
- this._stream = new stream_1.Writable();
61
- this._stream._body = [];
62
- this._stream._write = this._write;
41
+ this.createStream();
63
42
  }
64
43
  this.processParameters();
65
44
  if (httpContext) {
@@ -81,20 +60,11 @@ class Context extends events_1.EventEmitter {
81
60
  ctx.global = true;
82
61
  Context.__globalContext = ctx;
83
62
  }
84
- isGlobal() {
85
- return this.global;
86
- }
87
63
  /**
88
- * @private
89
- * Used in case of Buffer response ( like Lambda )
64
+ * Return if context is global
90
65
  */
91
- _write(chunk, _enc, next) {
92
- if (this._body === undefined) {
93
- this._body = [];
94
- }
95
- this._body.push(chunk);
96
- next();
97
- return true;
66
+ isGlobal() {
67
+ return this.global;
98
68
  }
99
69
  /**
100
70
  * Set current http context
@@ -109,6 +79,7 @@ class Context extends events_1.EventEmitter {
109
79
  */
110
80
  reinit() {
111
81
  this._sanitized = undefined;
82
+ this.createStream();
112
83
  }
113
84
  /**
114
85
  * Get current http context
@@ -151,11 +122,12 @@ class Context extends events_1.EventEmitter {
151
122
  this.parameters = Object.assign({}, this._serviceParams);
152
123
  this.parameters = Object.assign(this.parameters, this._pathParams);
153
124
  }
125
+ /**
126
+ * Get linked session
127
+ * @returns
128
+ */
154
129
  getSession() {
155
- if (this.session) {
156
- return this.session.getProxy();
157
- }
158
- return undefined;
130
+ return this.session;
159
131
  }
160
132
  getServiceParameters() {
161
133
  return this._serviceParams;
@@ -171,9 +143,15 @@ class Context extends events_1.EventEmitter {
171
143
  this._pathParams = params;
172
144
  this.processParameters();
173
145
  }
146
+ /**
147
+ * Remove everything that was about to be sent
148
+ */
174
149
  resetResponse() {
175
150
  this._body = undefined;
176
151
  this._outputHeaders.clear();
152
+ if (this._stream instanceof WritableStreamBuffer) {
153
+ this.createStream();
154
+ }
177
155
  }
178
156
  /**
179
157
  * Write data to the client
@@ -188,7 +166,7 @@ class Context extends events_1.EventEmitter {
188
166
  }
189
167
  if (typeof output === "object" && !(output instanceof Buffer)) {
190
168
  this.setHeader("Content-type", "application/json");
191
- this._body = serializers_1.JSONUtils.stringify(output, undefined, 0, true);
169
+ this._body = JSONUtils.stringify(output, undefined, 0, true);
192
170
  return true;
193
171
  }
194
172
  else if (typeof output == "string") {
@@ -209,6 +187,9 @@ class Context extends events_1.EventEmitter {
209
187
  * @param {String} value
210
188
  */
211
189
  setHeader(header, value) {
190
+ if (this.headersFlushed) {
191
+ throw new Error("Headers have been sent already");
192
+ }
212
193
  this._outputHeaders[header] = value;
213
194
  }
214
195
  /**
@@ -219,7 +200,7 @@ class Context extends events_1.EventEmitter {
219
200
  * @param {Object} headers to add to the response
220
201
  */
221
202
  writeHead(statusCode, headers = undefined) {
222
- this._outputHeaders = Object.assign(Object.assign({}, this._outputHeaders), headers);
203
+ this._outputHeaders = { ...this._outputHeaders, ...headers };
223
204
  if (statusCode !== undefined) {
224
205
  this.statusCode = statusCode;
225
206
  }
@@ -278,59 +259,65 @@ class Context extends events_1.EventEmitter {
278
259
  * @emits 'finish' event
279
260
  * @throws Error if the request was already ended
280
261
  */
281
- end() {
282
- return __awaiter(this, void 0, void 0, function* () {
283
- /** @ignore */
284
- if (this._ended) {
285
- return this._ended;
286
- }
287
- this._ended = new Promise((resolve) => __awaiter(this, void 0, void 0, function* () {
288
- this.emit("end");
289
- yield Promise.all(this._promises);
290
- if (this._buffered && this._stream._body !== undefined) {
291
- this._body = Buffer.concat(this._stream._body);
292
- this.statusCode = 200;
293
- }
294
- if (!this._flushHeaders) {
295
- this._webda.flushHeaders(this);
296
- }
297
- this._webda.flush(this);
298
- this.emit("close");
299
- resolve();
300
- }));
262
+ async end() {
263
+ /** @ignore */
264
+ if (this._ended) {
301
265
  return this._ended;
266
+ }
267
+ this._ended = new Promise(async (resolve) => {
268
+ this.emit("end");
269
+ if (this.getExtension("http")) {
270
+ await this._webda.getService("SessionManager").save(this, this.session);
271
+ }
272
+ await Promise.all(this._promises);
273
+ if (this._stream instanceof WritableStreamBuffer && this._stream.size()) {
274
+ this._body = this._stream.getContents();
275
+ this.statusCode = 200;
276
+ }
277
+ if (!this.headersFlushed) {
278
+ this._webda.flushHeaders(this);
279
+ }
280
+ this._webda.flush(this);
281
+ this.emit("close");
282
+ resolve();
302
283
  });
284
+ return this._ended;
303
285
  }
304
- getRequestBody(sanitizedOptions = {
286
+ async getRequestBody(sanitizedOptions = {
305
287
  allowedTags: [],
306
288
  allowedAttributes: {}
307
289
  }) {
308
- return __awaiter(this, void 0, void 0, function* () {
309
- if (this._sanitized) {
310
- return this._sanitized;
311
- }
312
- let recursiveSanitize = (obj, options = undefined) => {
313
- if (typeof obj === "string") {
314
- return sanitizeHtml(obj, options);
315
- }
316
- if (typeof obj === "object") {
317
- Object.keys(obj).forEach(key => {
318
- obj[key] = recursiveSanitize(obj[key], options);
319
- });
320
- }
321
- return obj;
322
- };
323
- try {
324
- this._sanitized = recursiveSanitize(JSON.parse(yield this.getHttpContext().getRawBody(this.getWebda().getGlobalParams().requestLimit, this.getWebda().getGlobalParams().requestTimeout)), sanitizedOptions);
290
+ if (this._sanitized) {
291
+ return this._sanitized;
292
+ }
293
+ let recursiveSanitize = (obj, options = undefined) => {
294
+ if (typeof obj === "string") {
295
+ return sanitizeHtml(obj, options);
325
296
  }
326
- catch (err) {
327
- this.log("ERROR", err, this.getHttpContext().getRawBody());
328
- return undefined;
297
+ if (typeof obj === "object") {
298
+ Object.keys(obj).forEach(key => {
299
+ obj[key] = recursiveSanitize(obj[key], options);
300
+ });
329
301
  }
330
- return this._sanitized;
331
- });
302
+ return obj;
303
+ };
304
+ try {
305
+ this._sanitized = recursiveSanitize(JSON.parse(await this.getHttpContext().getRawBodyAsString(this.getWebda().getGlobalParams().requestLimit, this.getWebda().getGlobalParams().requestTimeout)), sanitizedOptions);
306
+ }
307
+ catch (err) {
308
+ this.log("ERROR", err, `Body: '${await this.getHttpContext().getRawBodyAsString()}'`);
309
+ return undefined;
310
+ }
311
+ return this._sanitized;
332
312
  }
313
+ /**
314
+ * Get request body
315
+ * @returns
316
+ */
333
317
  getResponseBody() {
318
+ if (!this._body && this._stream instanceof WritableStreamBuffer) {
319
+ return this._stream.getContents();
320
+ }
334
321
  return this._body;
335
322
  }
336
323
  /**
@@ -340,11 +327,25 @@ class Context extends events_1.EventEmitter {
340
327
  * @returns
341
328
  */
342
329
  getRequest() {
343
- const s = require("stream");
344
- var stream = s.Readable.from([JSON.stringify(this.getRequestBody())]);
345
- return Object.assign({ httpVersionMajor: 1, httpVersionMinor: 0, headers: this.headers, httpVersion: "1.0", method: this.getHttpContext().getMethod(), rawHeaders: [], rawTrailers: [], setTimeout: (msec, callback) => {
330
+ const stream = Readable.from([JSON.stringify(this.getRequestBody())]);
331
+ return {
332
+ httpVersionMajor: 1,
333
+ httpVersionMinor: 0,
334
+ headers: this.headers,
335
+ httpVersion: "1.0",
336
+ method: this.getHttpContext().getMethod(),
337
+ rawHeaders: [],
338
+ rawTrailers: [],
339
+ setTimeout: (msec, callback) => {
346
340
  setTimeout(callback, msec);
347
- }, socket: undefined, statusCode: 200, trailers: {}, url: this.getHttpContext().getUrl(), connection: undefined }, stream);
341
+ },
342
+ socket: undefined,
343
+ statusCode: 200,
344
+ trailers: {},
345
+ url: this.getHttpContext().getUrl(),
346
+ connection: undefined,
347
+ ...stream
348
+ };
348
349
  }
349
350
  /**
350
351
  * Get a service from webda
@@ -365,24 +366,22 @@ class Context extends events_1.EventEmitter {
365
366
  /**
366
367
  * Get the current user from session
367
368
  */
368
- getCurrentUser(refresh = false) {
369
- return __awaiter(this, void 0, void 0, function* () {
370
- if (!this.getCurrentUserId()) {
371
- return undefined;
372
- }
373
- // Caching the answer
374
- if (!this.user || refresh) {
375
- this.user = yield this._webda.getService("Users").get(this.getCurrentUserId());
376
- }
377
- return this.user;
378
- });
369
+ async getCurrentUser(refresh = false) {
370
+ if (!this.getCurrentUserId()) {
371
+ return undefined;
372
+ }
373
+ // Caching the answer
374
+ if (!this.user || refresh) {
375
+ this.user = await this._webda.getService("Users").get(this.getCurrentUserId());
376
+ }
377
+ return this.user;
379
378
  }
380
379
  /**
381
380
  * Get the current user id from session
382
381
  */
383
382
  getCurrentUserId() {
384
383
  if (this.session) {
385
- return this.session.getUserId();
384
+ return this.session.userId;
386
385
  }
387
386
  return undefined;
388
387
  }
@@ -395,13 +394,11 @@ class Context extends events_1.EventEmitter {
395
394
  /**
396
395
  * Execute the target route
397
396
  */
398
- execute() {
399
- return __awaiter(this, void 0, void 0, function* () {
400
- if (this.getExecutor() && typeof this._route._method === "function") {
401
- return Promise.resolve(this.getExecutor()[this._route._method.name](this));
402
- }
403
- return Promise.reject(Error("Not implemented"));
404
- });
397
+ async execute() {
398
+ if (this.getExecutor() && typeof this._route._method === "function") {
399
+ return Promise.resolve(this.getExecutor()[this._route._method.name](this));
400
+ }
401
+ return Promise.reject(Error("Not implemented"));
405
402
  }
406
403
  /**
407
404
  * Return the webda
@@ -427,7 +424,7 @@ class Context extends events_1.EventEmitter {
427
424
  */
428
425
  setRoute(route) {
429
426
  this._route = route;
430
- this.parameters = Object.assign(Object.assign({}, route.params), this.parameters);
427
+ this.parameters = { ...route.params, ...this.parameters };
431
428
  }
432
429
  getRoute() {
433
430
  return this._route;
@@ -458,32 +455,41 @@ class Context extends events_1.EventEmitter {
458
455
  * @returns
459
456
  */
460
457
  hasFlushedHeaders() {
461
- return this._flushHeaders;
458
+ return this.headersFlushed;
462
459
  }
463
460
  /**
464
461
  * Set flushed header status
465
462
  * @param status
466
463
  */
467
464
  setFlushedHeaders(status = true) {
468
- this._flushHeaders = status;
465
+ this.headersFlushed = status;
466
+ }
467
+ createStream() {
468
+ this._stream = new WritableStreamBuffer({
469
+ initialSize: 100 * 1024,
470
+ incrementAmount: 100 * 1024
471
+ });
469
472
  }
473
+ /**
474
+ * Create a new session
475
+ * @returns
476
+ */
470
477
  newSession() {
471
- this.session = new (this._webda.getModel(this._webda.parameter("sessionModel") || "Webda/SessionCookie"))(this);
478
+ this.session = new (this._webda.getModel(this._webda.parameter("sessionModel") || "Webda/Session"))(this);
472
479
  return this.session;
473
480
  }
474
- init() {
475
- return __awaiter(this, void 0, void 0, function* () {
476
- this._stream.on("pipe", () => {
477
- this._buffered = true;
478
- this._webda.flushHeaders(this);
479
- });
480
- yield this.session.init();
481
- return this;
481
+ async init() {
482
+ this._stream.on("pipe", () => {
483
+ this._webda.flushHeaders(this);
484
+ this.headersFlushed = true;
482
485
  });
486
+ if (this.getExtension("http")) {
487
+ this.session = (await this._webda.getService("SessionManager").load(this)).getProxy();
488
+ }
489
+ return this;
483
490
  }
484
491
  emitError(err) {
485
492
  this.emit("error", err);
486
493
  }
487
494
  }
488
- exports.Context = Context;
489
495
  //# sourceMappingURL=context.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/utils/context.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/utils/context.ts"],"names":[],"mappings":"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"}