@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,17 +1,5 @@
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.QueueTest = void 0;
13
- const assert = require("assert");
14
- const test_1 = require("../test");
1
+ import * as assert from "assert";
2
+ import { WebdaTest } from "../test.js";
15
3
  class QueueItemTest {
16
4
  constructor(type) {
17
5
  this.type = type;
@@ -20,48 +8,46 @@ class QueueItemTest {
20
8
  return this.type * 2;
21
9
  }
22
10
  }
23
- class QueueTest extends test_1.WebdaTest {
24
- simple(queue, inconsistentSize = false, ackDelayMs = 1000) {
25
- return __awaiter(this, void 0, void 0, function* () {
26
- var msg;
27
- this.log("DEBUG", "Send test message 1");
28
- yield queue.sendMessage(new QueueItemTest(1));
29
- let size = yield queue.size();
30
- if (!inconsistentSize) {
31
- assert.strictEqual(size, 1);
32
- }
33
- this.log("DEBUG", "Send test message 2");
34
- yield queue.sendMessage(new QueueItemTest(2));
35
- // Pause for 1s - to verify the repopulation
36
- yield this.sleep(ackDelayMs);
37
- size = yield queue.size();
38
- if (!inconsistentSize) {
39
- assert.strictEqual(size, 2);
40
- }
41
- this.log("DEBUG", "Receive a message");
42
- msg = yield queue.receiveMessage();
43
- assert.strictEqual(msg[0].Message.getDouble, undefined);
44
- size = yield queue.size();
45
- if (!inconsistentSize) {
46
- assert.strictEqual(size, 2);
47
- }
48
- this.log("DEBUG", "Delete message");
49
- yield queue.deleteMessage(msg[0].ReceiptHandle);
50
- // Pause for 1s - to verify the repopulation
51
- yield this.sleep(ackDelayMs);
52
- this.log("DEBUG", "Receive a message with prototype");
53
- msg = yield queue.receiveMessage(QueueItemTest);
54
- assert.notStrictEqual(msg[0].Message.getDouble, undefined);
55
- if (!inconsistentSize) {
56
- assert.strictEqual(msg.length, 1);
57
- }
58
- this.log("DEBUG", "Delete message");
59
- yield queue.deleteMessage(msg[0].ReceiptHandle);
60
- if (!inconsistentSize) {
61
- assert.strictEqual(yield queue.size(), 0);
62
- }
63
- });
11
+ class QueueTest extends WebdaTest {
12
+ async simple(queue, inconsistentSize = false, ackDelayMs = 1000) {
13
+ var msg;
14
+ this.log("DEBUG", "Send test message 1");
15
+ await queue.sendMessage(new QueueItemTest(1));
16
+ let size = await queue.size();
17
+ if (!inconsistentSize) {
18
+ assert.strictEqual(size, 1);
19
+ }
20
+ this.log("DEBUG", "Send test message 2");
21
+ await queue.sendMessage(new QueueItemTest(2));
22
+ // Pause for 1s - to verify the repopulation
23
+ await this.sleep(ackDelayMs);
24
+ size = await queue.size();
25
+ if (!inconsistentSize) {
26
+ assert.strictEqual(size, 2);
27
+ }
28
+ this.log("DEBUG", "Receive a message");
29
+ msg = await queue.receiveMessage();
30
+ assert.strictEqual(msg[0].Message.getDouble, undefined);
31
+ size = await queue.size();
32
+ if (!inconsistentSize) {
33
+ assert.strictEqual(size, 2);
34
+ }
35
+ this.log("DEBUG", "Delete message");
36
+ await queue.deleteMessage(msg[0].ReceiptHandle);
37
+ // Pause for 1s - to verify the repopulation
38
+ await this.sleep(ackDelayMs);
39
+ this.log("DEBUG", "Receive a message with prototype");
40
+ msg = await queue.receiveMessage(QueueItemTest);
41
+ assert.notStrictEqual(msg[0].Message.getDouble, undefined);
42
+ if (!inconsistentSize) {
43
+ assert.strictEqual(msg.length, 1);
44
+ }
45
+ this.log("DEBUG", "Delete message");
46
+ await queue.deleteMessage(msg[0].ReceiptHandle);
47
+ if (!inconsistentSize) {
48
+ assert.strictEqual(await queue.size(), 0);
49
+ }
64
50
  }
65
51
  }
66
- exports.QueueTest = QueueTest;
52
+ export { QueueTest };
67
53
  //# sourceMappingURL=queue.spec.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"queue.spec.js","sourceRoot":"","sources":["../../src/queues/queue.spec.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,iCAAiC;AACjC,kCAAoC;AAEpC,MAAM,aAAa;IAGjB,YAAY,IAAa;QACvB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;IACvB,CAAC;CACF;AAED,MAAM,SAAU,SAAQ,gBAAS;IACzB,MAAM,CAAC,KAAK,EAAE,mBAA4B,KAAK,EAAE,aAAqB,IAAI;;YAC9E,IAAI,GAAG,CAAC;YACR,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,qBAAqB,CAAC,CAAC;YACzC,MAAM,KAAK,CAAC,WAAW,CAAC,IAAI,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9C,IAAI,IAAI,GAAG,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC;YAC9B,IAAI,CAAC,gBAAgB,EAAE;gBACrB,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;aAC7B;YACD,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,qBAAqB,CAAC,CAAC;YACzC,MAAM,KAAK,CAAC,WAAW,CAAC,IAAI,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9C,4CAA4C;YAC5C,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;YAC7B,IAAI,GAAG,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC;YAC1B,IAAI,CAAC,gBAAgB,EAAE;gBACrB,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;aAC7B;YACD,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,mBAAmB,CAAC,CAAC;YACvC,GAAG,GAAG,MAAM,KAAK,CAAC,cAAc,EAAE,CAAC;YACnC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;YACxD,IAAI,GAAG,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC;YAC1B,IAAI,CAAC,gBAAgB,EAAE;gBACrB,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;aAC7B;YACD,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;YACpC,MAAM,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC;YAEhD,4CAA4C;YAC5C,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;YAC7B,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,kCAAkC,CAAC,CAAC;YACtD,GAAG,GAAG,MAAM,KAAK,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;YAChD,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;YAC3D,IAAI,CAAC,gBAAgB,EAAE;gBACrB,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;aACnC;YACD,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;YACpC,MAAM,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC;YAEhD,IAAI,CAAC,gBAAgB,EAAE;gBACrB,MAAM,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;aAC3C;QACH,CAAC;KAAA;CACF;AAEQ,8BAAS"}
1
+ {"version":3,"file":"queue.spec.js","sourceRoot":"","sources":["../../src/queues/queue.spec.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AACjC,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEpC,MAAM,aAAa;IAGjB,YAAY,IAAa;QACvB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;IACvB,CAAC;CACF;AAED,MAAM,SAAU,SAAQ,SAAS;IAC/B,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,mBAA4B,KAAK,EAAE,aAAqB,IAAI;QAC9E,IAAI,GAAG,CAAC;QACR,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,qBAAqB,CAAC,CAAC;QACzC,MAAM,KAAK,CAAC,WAAW,CAAC,IAAI,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9C,IAAI,IAAI,GAAG,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC;QAC9B,IAAI,CAAC,gBAAgB,EAAE;YACrB,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;SAC7B;QACD,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,qBAAqB,CAAC,CAAC;QACzC,MAAM,KAAK,CAAC,WAAW,CAAC,IAAI,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9C,4CAA4C;QAC5C,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAC7B,IAAI,GAAG,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC;QAC1B,IAAI,CAAC,gBAAgB,EAAE;YACrB,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;SAC7B;QACD,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,mBAAmB,CAAC,CAAC;QACvC,GAAG,GAAG,MAAM,KAAK,CAAC,cAAc,EAAE,CAAC;QACnC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QACxD,IAAI,GAAG,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC;QAC1B,IAAI,CAAC,gBAAgB,EAAE;YACrB,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;SAC7B;QACD,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;QACpC,MAAM,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC;QAEhD,4CAA4C;QAC5C,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAC7B,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,kCAAkC,CAAC,CAAC;QACtD,GAAG,GAAG,MAAM,KAAK,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;QAChD,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QAC3D,IAAI,CAAC,gBAAgB,EAAE;YACrB,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;SACnC;QACD,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;QACpC,MAAM,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC;QAEhD,IAAI,CAAC,gBAAgB,EAAE;YACrB,MAAM,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;SAC3C;IACH,CAAC;CACF;AAED,OAAO,EAAE,SAAS,EAAE,CAAC"}
@@ -1,7 +1,7 @@
1
1
  /// <reference types="node" />
2
- import { ServiceParameters } from "../services/service";
3
- import { CancelablePromise, WaitDelayer, WaitDelayerDefinition } from "../utils/waiter";
4
- import { PubSubService } from "./pubsubservice";
2
+ import { ServiceParameters } from "../services/service.js";
3
+ import { CancelablePromise, WaitDelayer, WaitDelayerDefinition } from "../utils/waiter.js";
4
+ import { PubSubService } from "./pubsubservice.js";
5
5
  /**
6
6
  * Raw message from queue
7
7
  */
@@ -85,7 +85,7 @@ declare abstract class Queue<T = any, K extends QueueParameters = QueueParameter
85
85
  /**
86
86
  * Create the delayer
87
87
  */
88
- resolve(): void;
88
+ resolve(): this;
89
89
  /**
90
90
  * Receive and process message from the queue
91
91
  *
@@ -1,33 +1,19 @@
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.Queue = exports.QueueParameters = void 0;
13
- const service_1 = require("../services/service");
14
- const waiter_1 = require("../utils/waiter");
15
- const pubsubservice_1 = require("./pubsubservice");
1
+ import { ServiceParameters } from "../services/service.js";
2
+ import { CancelableLoopPromise, WaitDelayerFactories } from "../utils/waiter.js";
3
+ import { PubSubService } from "./pubsubservice.js";
16
4
  /**
17
5
  * @inheritdoc
18
6
  */
19
- class QueueParameters extends service_1.ServiceParameters {
7
+ export class QueueParameters extends ServiceParameters {
20
8
  /**
21
9
  * @inheritdoc
22
10
  */
23
11
  constructor(params) {
24
- var _a, _b;
25
12
  super(params);
26
- (_a = this.workerParallelism) !== null && _a !== void 0 ? _a : (this.workerParallelism = true);
27
- (_b = this.maxConsumers) !== null && _b !== void 0 ? _b : (this.maxConsumers = 10);
13
+ this.workerParallelism ?? (this.workerParallelism = true);
14
+ this.maxConsumers ?? (this.maxConsumers = 10);
28
15
  }
29
16
  }
30
- exports.QueueParameters = QueueParameters;
31
17
  /**
32
18
  * AbstractQueue implements the worker system
33
19
  *
@@ -36,57 +22,56 @@ exports.QueueParameters = QueueParameters;
36
22
  *
37
23
  * @category CoreServices
38
24
  */
39
- class Queue extends pubsubservice_1.PubSubService {
25
+ class Queue extends PubSubService {
40
26
  /**
41
27
  * Create the delayer
42
28
  */
43
29
  resolve() {
44
30
  super.resolve();
45
- this.delayer = waiter_1.WaitDelayerFactories.get(this.parameters.workerDelayer);
31
+ this.delayer = WaitDelayerFactories.get(this.parameters.workerDelayer);
32
+ return this;
46
33
  }
47
34
  /**
48
35
  * Receive and process message from the queue
49
36
  *
50
37
  * @returns
51
38
  */
52
- consumerReceiveMessage() {
53
- return __awaiter(this, void 0, void 0, function* () {
54
- try {
55
- let speed = Date.now();
56
- let items = yield this.receiveMessage(this.eventPrototype);
57
- speed = Date.now() - speed;
58
- this.failedIterations = 0;
59
- if (items.length === 0) {
60
- return { speed, items: items.length };
61
- }
62
- const msgWorker = (msg) => __awaiter(this, void 0, void 0, function* () {
63
- try {
64
- yield this.callback(msg.Message);
65
- yield this.deleteMessage(msg.ReceiptHandle);
66
- }
67
- catch (err) {
68
- this.getWebda().log("ERROR", `Message ${msg.ReceiptHandle}`, err);
69
- }
70
- });
71
- if (this.parameters.workerParallelism) {
72
- // Parallelized processing
73
- yield Promise.all(items.map(msgWorker));
39
+ async consumerReceiveMessage() {
40
+ try {
41
+ let speed = Date.now();
42
+ let items = await this.receiveMessage(this.eventPrototype);
43
+ speed = Date.now() - speed;
44
+ this.failedIterations = 0;
45
+ if (items.length === 0) {
46
+ return { speed, items: items.length };
47
+ }
48
+ const msgWorker = async (msg) => {
49
+ try {
50
+ await this.callback(msg.Message);
51
+ await this.deleteMessage(msg.ReceiptHandle);
74
52
  }
75
- else {
76
- // Serialized processing
77
- for (const item of items) {
78
- yield msgWorker(item);
79
- }
53
+ catch (err) {
54
+ this.getWebda().log("ERROR", `Message ${msg.ReceiptHandle}`, err);
80
55
  }
81
- return { speed, items: items.length };
56
+ };
57
+ if (this.parameters.workerParallelism) {
58
+ // Parallelized processing
59
+ await Promise.all(items.map(msgWorker));
82
60
  }
83
- catch (err) {
84
- this.failedIterations += 1;
85
- this.log("ERROR", err);
86
- yield new Promise(resolve => setTimeout(resolve, this.delayer(this.failedIterations)));
87
- return { speed: 0, items: -1 };
61
+ else {
62
+ // Serialized processing
63
+ for (const item of items) {
64
+ await msgWorker(item);
65
+ }
88
66
  }
89
- });
67
+ return { speed, items: items.length };
68
+ }
69
+ catch (err) {
70
+ this.failedIterations += 1;
71
+ this.log("ERROR", err);
72
+ await new Promise(resolve => setTimeout(resolve, this.delayer(this.failedIterations)));
73
+ return { speed: 0, items: -1 };
74
+ }
90
75
  }
91
76
  /**
92
77
  * Return the max consumers for the queue
@@ -112,18 +97,18 @@ class Queue extends pubsubservice_1.PubSubService {
112
97
  this.callback = callback;
113
98
  this.eventPrototype = eventPrototype;
114
99
  let consumers = new Set();
115
- let childQueueCallback = (canceller) => __awaiter(this, void 0, void 0, function* () {
116
- let res = yield this.consumerReceiveMessage();
100
+ let childQueueCallback = async (canceller) => {
101
+ let res = await this.consumerReceiveMessage();
117
102
  // If an error occured or no results found, stop the child
118
103
  if (res.items <= 0) {
119
- yield canceller();
104
+ await canceller();
120
105
  }
121
- });
122
- let parentQueueCallback = (_canceller) => __awaiter(this, void 0, void 0, function* () {
123
- let res = yield this.consumerReceiveMessage();
106
+ };
107
+ let parentQueueCallback = async (_canceller) => {
108
+ let res = await this.consumerReceiveMessage();
124
109
  if (res.items > 0 && res.speed < 3000 && consumers.size < this.getMaxConsumers() - 1) {
125
110
  this.log("TRACE", `Launching a new queue consumer for ${this.getName()}`);
126
- let consumer = new waiter_1.CancelableLoopPromise(childQueueCallback);
111
+ let consumer = new CancelableLoopPromise(childQueueCallback);
127
112
  // Add consumer to our list
128
113
  consumers.add(consumer);
129
114
  // Remove consumer once finished
@@ -131,11 +116,11 @@ class Queue extends pubsubservice_1.PubSubService {
131
116
  consumers.delete(consumer);
132
117
  });
133
118
  }
119
+ };
120
+ return new CancelableLoopPromise(parentQueueCallback, async () => {
121
+ await Promise.all(Array.from(consumers).map(c => c.cancel()));
134
122
  });
135
- return new waiter_1.CancelableLoopPromise(parentQueueCallback, () => __awaiter(this, void 0, void 0, function* () {
136
- yield Promise.all(Array.from(consumers).map(c => c.cancel()));
137
- }));
138
123
  }
139
124
  }
140
- exports.Queue = Queue;
125
+ export { Queue };
141
126
  //# sourceMappingURL=queueservice.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"queueservice.js","sourceRoot":"","sources":["../../src/queues/queueservice.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"queueservice.js","sourceRoot":"","sources":["../../src/queues/queueservice.ts"],"names":[],"mappings":"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"}
package/lib/router.d.ts CHANGED
@@ -1,8 +1,8 @@
1
1
  import { JSONSchema7 } from "json-schema";
2
2
  import { OpenAPIV3 } from "openapi-types";
3
- import { Core } from "./core";
4
- import { Context } from "./utils/context";
5
- import { HttpMethodType } from "./utils/httpcontext";
3
+ import { Core } from "./core.js";
4
+ import { Context } from "./utils/context.js";
5
+ import { HttpMethodType } from "./utils/httpcontext.js";
6
6
  declare type RecursivePartial<T> = {
7
7
  [P in keyof T]?: RecursivePartial<T[P]>;
8
8
  };
@@ -71,6 +71,10 @@ export interface RouteInfo {
71
71
  * Hash
72
72
  */
73
73
  hash?: string;
74
+ /**
75
+ * Intend to override existing
76
+ */
77
+ override?: boolean;
74
78
  }
75
79
  /**
76
80
  * Manage Route resolution
package/lib/router.js CHANGED
@@ -1,12 +1,9 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Router = void 0;
4
- const uriTemplates = require("uri-templates");
1
+ import uriTemplates from "uri-templates";
5
2
  /**
6
3
  * Manage Route resolution
7
4
  * @category CoreFeatures
8
5
  */
9
- class Router {
6
+ export class Router {
10
7
  constructor(webda) {
11
8
  this.routes = new Map();
12
9
  this.initiated = false;
@@ -31,10 +28,9 @@ class Router {
31
28
  * @param {Object} info the type of executor
32
29
  */
33
30
  addRoute(url, info) {
34
- var _a;
35
31
  const finalUrl = this.getFinalUrl(url);
36
32
  this.webda.log("TRACE", `Add route ${info.methods.join(",")} ${finalUrl}`);
37
- (_a = info.openapi) !== null && _a !== void 0 ? _a : (info.openapi = {});
33
+ info.openapi ?? (info.openapi = {});
38
34
  if (this.routes[finalUrl]) {
39
35
  // If route is already added do not do anything
40
36
  if (this.routes[finalUrl].includes(info)) {
@@ -44,7 +40,9 @@ class Router {
44
40
  let methods = this.routes[finalUrl].map((r) => r.methods).flat();
45
41
  info.methods.forEach(m => {
46
42
  if (methods.indexOf(m) >= 0) {
47
- this.webda.log("WARN", `${m} ${finalUrl} overlap with another defined route`);
43
+ if (!info.override) {
44
+ this.webda.log("WARN", `${m} ${finalUrl} overlap with another defined route`);
45
+ }
48
46
  }
49
47
  });
50
48
  // Last added need to be overriding
@@ -92,7 +90,7 @@ class Router {
92
90
  this.initURITemplates(this.routes);
93
91
  // Order path desc
94
92
  this.pathMap = [];
95
- for (var i in this.routes) {
93
+ for (let i in this.routes) {
96
94
  // Might need to trail the query string
97
95
  this.routes[i].forEach((config) => {
98
96
  this.pathMap.push({
@@ -127,7 +125,7 @@ class Router {
127
125
  */
128
126
  initURITemplates(config) {
129
127
  // Prepare tbe URI parser
130
- for (var map in config) {
128
+ for (let map in config) {
131
129
  if (map.indexOf("{") !== -1) {
132
130
  config[map].forEach((e) => (e._uriTemplateParse = uriTemplates(map)));
133
131
  }
@@ -143,8 +141,8 @@ class Router {
143
141
  const finalUrl = this.getFinalUrl(url);
144
142
  let methods = new Set();
145
143
  for (let i in this.pathMap) {
146
- var routeUrl = this.pathMap[i].url;
147
- var map = this.pathMap[i].config;
144
+ const routeUrl = this.pathMap[i].url;
145
+ const map = this.pathMap[i].config;
148
146
  if (routeUrl !== finalUrl &&
149
147
  (map._uriTemplateParse === undefined || map._uriTemplateParse.fromUri(finalUrl) === undefined)) {
150
148
  continue;
@@ -160,8 +158,8 @@ class Router {
160
158
  const finalUrl = this.getFinalUrl(url);
161
159
  let parameters = this.webda.getConfiguration().parameters;
162
160
  for (let i in this.pathMap) {
163
- var routeUrl = this.pathMap[i].url;
164
- var map = this.pathMap[i].config;
161
+ const routeUrl = this.pathMap[i].url;
162
+ const map = this.pathMap[i].config;
165
163
  // Check method
166
164
  if (map.methods.indexOf(method) === -1) {
167
165
  continue;
@@ -173,7 +171,7 @@ class Router {
173
171
  if (map._uriTemplateParse === undefined) {
174
172
  continue;
175
173
  }
176
- var parse_result = map._uriTemplateParse.fromUri(finalUrl);
174
+ const parse_result = map._uriTemplateParse.fromUri(finalUrl);
177
175
  if (parse_result !== undefined) {
178
176
  ctx.setServiceParameters(parameters);
179
177
  ctx.setPathParameters(parse_result);
@@ -184,12 +182,12 @@ class Router {
184
182
  getOpenAPISchema(schema) {
185
183
  if (!schema) {
186
184
  return {
187
- $ref: "#/definitions/Object"
185
+ $ref: "#/components/schemas/Object"
188
186
  };
189
187
  }
190
188
  else if (typeof schema === "string") {
191
189
  return {
192
- $ref: "#/definitions/" + schema
190
+ $ref: "#/components/schemas/" + schema
193
191
  };
194
192
  }
195
193
  return schema;
@@ -201,16 +199,12 @@ class Router {
201
199
  * @param skipHidden add hidden routes or not
202
200
  */
203
201
  completeOpenAPI(openapi, skipHidden = true) {
204
- let hasTag = (tag) => {
205
- for (let t in openapi.tags) {
206
- if (openapi.tags[t].name === tag) {
207
- return true;
208
- }
209
- }
210
- return false;
211
- };
202
+ let hasTag = tag => openapi.tags.find(t => t.name === tag) !== undefined;
212
203
  for (let i in this.routes) {
213
204
  this.routes[i].forEach((route) => {
205
+ route.openapi = this.webda
206
+ .getApplication()
207
+ .replaceVariables(route.openapi || {}, this.webda.getService(route.executor).getOpenApiReplacements());
214
208
  if (route.openapi.hidden && skipHidden) {
215
209
  return;
216
210
  }
@@ -233,7 +227,10 @@ class Router {
233
227
  openapi.paths[path].parameters.push({
234
228
  name,
235
229
  in: "query",
236
- required: !varName.startsWith("*")
230
+ required: !varName.startsWith("*"),
231
+ schema: {
232
+ type: "string"
233
+ }
237
234
  });
238
235
  return;
239
236
  }
@@ -241,26 +238,31 @@ class Router {
241
238
  // ^[a-zA-Z0-9._$-]+$] is the official regex of AWS
242
239
  name: varName.replace(/[^a-zA-Z0-9._$-]/g, ""),
243
240
  in: "path",
244
- required: true
241
+ required: true,
242
+ schema: {
243
+ type: "string"
244
+ }
245
245
  });
246
246
  });
247
247
  }
248
248
  route.methods.forEach(method => {
249
- var _a, _b, _c, _d, _e, _f, _g;
250
- var _h;
249
+ var _a;
251
250
  let responses;
252
251
  let schema;
253
252
  let description;
254
253
  let summary;
255
254
  let operationId;
256
- let tags = (_a = route.openapi.tags) !== null && _a !== void 0 ? _a : [];
255
+ let requestBody;
256
+ let tags = route.openapi.tags ?? [];
257
+ // Refactor here
257
258
  if (route.openapi[method.toLowerCase()]) {
258
259
  responses = route.openapi[method.toLowerCase()].responses;
259
- schema = this.getOpenAPISchema((_b = route.openapi[method.toLowerCase()].schemas) === null || _b === void 0 ? void 0 : _b.output);
260
+ schema = this.getOpenAPISchema(route.openapi[method.toLowerCase()].schemas?.output);
260
261
  description = route.openapi[method.toLowerCase()].description;
261
262
  summary = route.openapi[method.toLowerCase()].summary;
262
263
  operationId = route.openapi[method.toLowerCase()].operationId;
263
264
  tags.push(...(route.openapi[method.toLowerCase()].tags || []));
265
+ requestBody = route.openapi[method.toLowerCase()].requestBody;
264
266
  }
265
267
  responses = responses || {
266
268
  200: {
@@ -268,16 +270,17 @@ class Router {
268
270
  }
269
271
  };
270
272
  for (let j in responses) {
271
- (_c = (_h = responses[j]).content) !== null && _c !== void 0 ? _c : (_h.content = {});
272
- responses[j].content["application/json"] = {
273
- schema
274
- };
275
273
  // Add default answer
276
274
  let code = parseInt(j);
277
275
  if (code < 300 && code >= 200 && !responses[j].description) {
278
276
  responses[j].description = "Operation success";
277
+ (_a = responses[j]).content ?? (_a.content = {});
278
+ responses[j].content["application/json"] = {
279
+ schema
280
+ };
279
281
  }
280
282
  }
283
+ // Add the service name if no tags are defined
281
284
  if (tags.length === 0) {
282
285
  tags.push(route.executor);
283
286
  }
@@ -286,30 +289,28 @@ class Router {
286
289
  responses: responses,
287
290
  description,
288
291
  summary,
289
- operationId
292
+ operationId,
293
+ requestBody
290
294
  };
291
- if (method.toLowerCase().startsWith("p") && ((_e = (_d = route.openapi[method.toLowerCase()]) === null || _d === void 0 ? void 0 : _d.schemas) === null || _e === void 0 ? void 0 : _e.input)) {
295
+ if (method.toLowerCase().startsWith("p") && route.openapi[method.toLowerCase()]?.schemas?.input) {
292
296
  // Add request schema if exist
293
- desc.requestBody = {
297
+ desc.requestBody ?? (desc.requestBody = {
294
298
  content: {
295
299
  "application/json": {
296
- schema: this.getOpenAPISchema((_g = (_f = route.openapi[method.toLowerCase()]) === null || _f === void 0 ? void 0 : _f.schemas) === null || _g === void 0 ? void 0 : _g.input)
300
+ schema: this.getOpenAPISchema(route.openapi[method.toLowerCase()]?.schemas?.input)
297
301
  }
298
302
  }
299
- };
303
+ });
300
304
  }
301
305
  openapi.paths[path][method.toLowerCase()] = desc;
302
- tags.forEach(tag => {
303
- if (!hasTag(tag)) {
304
- openapi.tags.push({
305
- name: tag
306
- });
307
- }
308
- });
306
+ tags
307
+ .filter(tag => !hasTag(tag))
308
+ .forEach(tag => openapi.tags.push({
309
+ name: tag
310
+ }));
309
311
  });
310
312
  });
311
313
  }
312
314
  }
313
315
  }
314
- exports.Router = Router;
315
316
  //# sourceMappingURL=router.js.map