@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.
- package/lib/application.d.ts +9 -21
- package/lib/application.js +71 -84
- package/lib/application.js.map +1 -1
- package/lib/application.spec.js +121 -140
- package/lib/application.spec.js.map +1 -1
- package/lib/core.d.ts +86 -46
- package/lib/core.js +254 -316
- package/lib/core.js.map +1 -1
- package/lib/core.spec.js +326 -391
- package/lib/core.spec.js.map +1 -1
- package/lib/index.d.ts +49 -45
- package/lib/index.js +54 -67
- package/lib/index.js.map +1 -1
- package/lib/models/aclmodel.d.ts +2 -2
- package/lib/models/aclmodel.js +63 -90
- package/lib/models/aclmodel.js.map +1 -1
- package/lib/models/aclmodel.spec.js +127 -151
- package/lib/models/aclmodel.spec.js.map +1 -1
- package/lib/models/coremodel.d.ts +84 -11
- package/lib/models/coremodel.js +104 -103
- package/lib/models/coremodel.js.map +1 -1
- package/lib/models/coremodel.spec.js +91 -91
- package/lib/models/coremodel.spec.js.map +1 -1
- package/lib/models/deployment.js +1 -2
- package/lib/models/ident.d.ts +5 -3
- package/lib/models/ident.js +4 -9
- package/lib/models/ident.js.map +1 -1
- package/lib/models/ident.spec.js +9 -11
- package/lib/models/ident.spec.js.map +1 -1
- package/lib/models/ownermodel.d.ts +12 -2
- package/lib/models/ownermodel.js +54 -62
- package/lib/models/ownermodel.js.map +1 -1
- package/lib/models/ownermodel.spec.js +129 -152
- package/lib/models/ownermodel.spec.js.map +1 -1
- package/lib/models/rolemodel.d.ts +2 -2
- package/lib/models/rolemodel.js +24 -40
- package/lib/models/rolemodel.js.map +1 -1
- package/lib/models/rolemodel.spec.js +44 -61
- package/lib/models/rolemodel.spec.js.map +1 -1
- package/lib/models/user.d.ts +5 -5
- package/lib/models/user.js +3 -8
- package/lib/models/user.js.map +1 -1
- package/lib/models/user.spec.js +14 -16
- package/lib/models/user.spec.js.map +1 -1
- package/lib/queues/filequeue.d.ts +2 -2
- package/lib/queues/filequeue.js +72 -93
- package/lib/queues/filequeue.js.map +1 -1
- package/lib/queues/filequeue.spec.js +53 -70
- package/lib/queues/filequeue.spec.js.map +1 -1
- package/lib/queues/memoryqueue.d.ts +2 -2
- package/lib/queues/memoryqueue.js +37 -61
- package/lib/queues/memoryqueue.js.map +1 -1
- package/lib/queues/memoryqueue.spec.js +142 -165
- package/lib/queues/memoryqueue.spec.js.map +1 -1
- package/lib/queues/pubsubservice.d.ts +2 -2
- package/lib/queues/pubsubservice.js +3 -7
- package/lib/queues/pubsubservice.js.map +1 -1
- package/lib/queues/queue.spec.d.ts +1 -1
- package/lib/queues/queue.spec.js +42 -56
- package/lib/queues/queue.spec.js.map +1 -1
- package/lib/queues/queueservice.d.ts +4 -4
- package/lib/queues/queueservice.js +52 -67
- package/lib/queues/queueservice.js.map +1 -1
- package/lib/router.d.ts +7 -3
- package/lib/router.js +49 -48
- package/lib/router.js.map +1 -1
- package/lib/router.spec.js +64 -61
- package/lib/router.spec.js.map +1 -1
- package/lib/services/asyncevents.d.ts +2 -2
- package/lib/services/asyncevents.js +44 -64
- package/lib/services/asyncevents.js.map +1 -1
- package/lib/services/asyncevents.spec.js +81 -98
- package/lib/services/asyncevents.spec.js.map +1 -1
- package/lib/services/authentication.d.ts +28 -19
- package/lib/services/authentication.js +539 -571
- package/lib/services/authentication.js.map +1 -1
- package/lib/services/authentication.spec.js +411 -447
- package/lib/services/authentication.spec.js.map +1 -1
- package/lib/services/binary.d.ts +8 -6
- package/lib/services/binary.js +212 -244
- package/lib/services/binary.js.map +1 -1
- package/lib/services/binary.spec.d.ts +3 -3
- package/lib/services/binary.spec.js +390 -443
- package/lib/services/binary.spec.js.map +1 -1
- package/lib/services/cloudbinary.d.ts +3 -3
- package/lib/services/cloudbinary.js +46 -71
- package/lib/services/cloudbinary.js.map +1 -1
- package/lib/services/cloudbinary.spec.d.ts +3 -3
- package/lib/services/cloudbinary.spec.js +133 -162
- package/lib/services/cloudbinary.spec.js.map +1 -1
- package/lib/services/configuration.d.ts +6 -3
- package/lib/services/configuration.js +78 -103
- package/lib/services/configuration.js.map +1 -1
- package/lib/services/configuration.spec.js +63 -83
- package/lib/services/configuration.spec.js.map +1 -1
- package/lib/services/cron.d.ts +3 -2
- package/lib/services/cron.js +9 -13
- package/lib/services/cron.js.map +1 -1
- package/lib/services/cron.spec.js +18 -21
- package/lib/services/cron.spec.js.map +1 -1
- package/lib/services/cryptoservice.d.ts +258 -0
- package/lib/services/cryptoservice.js +312 -0
- package/lib/services/cryptoservice.js.map +1 -0
- package/lib/services/cryptoservice.spec.d.ts +1 -0
- package/lib/services/cryptoservice.spec.js +137 -0
- package/lib/services/cryptoservice.spec.js.map +1 -0
- package/lib/services/debugmailer.d.ts +1 -1
- package/lib/services/debugmailer.js +13 -34
- package/lib/services/debugmailer.js.map +1 -1
- package/lib/services/debugmailer.spec.js +16 -29
- package/lib/services/debugmailer.spec.js.map +1 -1
- package/lib/services/echo.d.ts +2 -2
- package/lib/services/echo.js +15 -31
- package/lib/services/echo.js.map +1 -1
- package/lib/services/echo.spec.js +27 -40
- package/lib/services/echo.spec.js.map +1 -1
- package/lib/services/filebinary.d.ts +15 -5
- package/lib/services/filebinary.js +171 -200
- package/lib/services/filebinary.js.map +1 -1
- package/lib/services/filebinary.spec.d.ts +2 -1
- package/lib/services/filebinary.spec.js +106 -117
- package/lib/services/filebinary.spec.js.map +1 -1
- package/lib/services/fileconfiguration.d.ts +2 -2
- package/lib/services/fileconfiguration.js +25 -43
- package/lib/services/fileconfiguration.js.map +1 -1
- package/lib/services/fileconfiguration.spec.js +79 -109
- package/lib/services/fileconfiguration.spec.js.map +1 -1
- package/lib/services/invitationservice.d.ts +9 -9
- package/lib/services/invitationservice.js +275 -313
- package/lib/services/invitationservice.js.map +1 -1
- package/lib/services/invitationservice.spec.js +442 -448
- package/lib/services/invitationservice.spec.js.map +1 -1
- package/lib/services/kubernetesconfiguration.d.ts +2 -2
- package/lib/services/kubernetesconfiguration.js +41 -59
- package/lib/services/kubernetesconfiguration.js.map +1 -1
- package/lib/services/kubernetesconfiguration.spec.js +80 -98
- package/lib/services/kubernetesconfiguration.spec.js.map +1 -1
- package/lib/services/mailer.d.ts +4 -4
- package/lib/services/mailer.js +62 -86
- package/lib/services/mailer.js.map +1 -1
- package/lib/services/mailer.spec.js +86 -127
- package/lib/services/mailer.spec.js.map +1 -1
- package/lib/services/notificationservice.d.ts +4 -4
- package/lib/services/notificationservice.js +23 -42
- package/lib/services/notificationservice.js.map +1 -1
- package/lib/services/notificationservice.spec.js +47 -73
- package/lib/services/notificationservice.spec.js.map +1 -1
- package/lib/services/oauth.d.ts +32 -6
- package/lib/services/oauth.js +73 -78
- package/lib/services/oauth.js.map +1 -1
- package/lib/services/oauth.spec.js +128 -147
- package/lib/services/oauth.spec.js.map +1 -1
- package/lib/services/proxy.d.ts +74 -0
- package/lib/services/proxy.js +126 -0
- package/lib/services/proxy.js.map +1 -0
- package/lib/services/proxy.spec.d.ts +1 -0
- package/lib/services/proxy.spec.js +59 -0
- package/lib/services/proxy.spec.js.map +1 -0
- package/lib/services/resource.d.ts +2 -2
- package/lib/services/resource.js +12 -18
- package/lib/services/resource.js.map +1 -1
- package/lib/services/resource.spec.js +67 -99
- package/lib/services/resource.spec.js.map +1 -1
- package/lib/services/service.d.ts +33 -7
- package/lib/services/service.js +74 -42
- package/lib/services/service.js.map +1 -1
- package/lib/services/service.spec.js +62 -67
- package/lib/services/service.spec.js.map +1 -1
- package/lib/services/version.d.ts +1 -1
- package/lib/services/version.js +3 -8
- package/lib/services/version.js.map +1 -1
- package/lib/services/version.spec.js +11 -24
- package/lib/services/version.spec.js.map +1 -1
- package/lib/stores/aggregator.d.ts +3 -3
- package/lib/stores/aggregator.js +37 -57
- package/lib/stores/aggregator.js.map +1 -1
- package/lib/stores/file.d.ts +3 -3
- package/lib/stores/file.js +93 -131
- package/lib/stores/file.js.map +1 -1
- package/lib/stores/file.spec.d.ts +2 -2
- package/lib/stores/file.spec.js +261 -289
- package/lib/stores/file.spec.js.map +1 -1
- package/lib/stores/mapper.d.ts +4 -4
- package/lib/stores/mapper.js +112 -137
- package/lib/stores/mapper.js.map +1 -1
- package/lib/stores/mapper.spec.js +131 -150
- package/lib/stores/mapper.spec.js.map +1 -1
- package/lib/stores/memory.d.ts +67 -6
- package/lib/stores/memory.js +155 -117
- package/lib/stores/memory.js.map +1 -1
- package/lib/stores/memory.spec.d.ts +3 -2
- package/lib/stores/memory.spec.js +127 -105
- package/lib/stores/memory.spec.js.map +1 -1
- package/lib/stores/store.d.ts +35 -15
- package/lib/stores/store.js +839 -821
- package/lib/stores/store.js.map +1 -1
- package/lib/stores/store.spec.d.ts +6 -4
- package/lib/stores/store.spec.js +627 -647
- package/lib/stores/store.spec.js.map +1 -1
- package/lib/stores/webdaql/WebdaQLLexer.d.ts +4 -4
- package/lib/stores/webdaql/WebdaQLLexer.js +9 -13
- package/lib/stores/webdaql/WebdaQLLexer.js.map +1 -1
- package/lib/stores/webdaql/WebdaQLParserLexer.d.ts +4 -4
- package/lib/stores/webdaql/WebdaQLParserLexer.js +9 -13
- package/lib/stores/webdaql/WebdaQLParserLexer.js.map +1 -1
- package/lib/stores/webdaql/WebdaQLParserListener.d.ts +2 -2
- package/lib/stores/webdaql/WebdaQLParserListener.js +1 -2
- package/lib/stores/webdaql/WebdaQLParserListener.js.map +1 -1
- package/lib/stores/webdaql/WebdaQLParserParser.d.ts +10 -10
- package/lib/stores/webdaql/WebdaQLParserParser.js +62 -91
- package/lib/stores/webdaql/WebdaQLParserParser.js.map +1 -1
- package/lib/stores/webdaql/WebdaQLParserVisitor.d.ts +2 -2
- package/lib/stores/webdaql/WebdaQLParserVisitor.js +1 -2
- package/lib/stores/webdaql/WebdaQLParserVisitor.js.map +1 -1
- package/lib/stores/webdaql/query.d.ts +4 -5
- package/lib/stores/webdaql/query.js +16 -19
- package/lib/stores/webdaql/query.js.map +1 -1
- package/lib/stores/webdaql/query.spec.js +30 -32
- package/lib/stores/webdaql/query.spec.js.map +1 -1
- package/lib/test.d.ts +3 -3
- package/lib/test.js +74 -94
- package/lib/test.js.map +1 -1
- package/lib/unpackedapplication.d.ts +1 -1
- package/lib/unpackedapplication.js +25 -31
- package/lib/unpackedapplication.js.map +1 -1
- package/lib/utils/abstractdeployer.js +1 -5
- package/lib/utils/abstractdeployer.js.map +1 -1
- package/lib/utils/abstractdeployer.spec.js +6 -8
- package/lib/utils/abstractdeployer.spec.js.map +1 -1
- package/lib/utils/context.d.ts +61 -29
- package/lib/utils/context.js +133 -127
- package/lib/utils/context.js.map +1 -1
- package/lib/utils/context.spec.js +147 -153
- package/lib/utils/context.spec.js.map +1 -1
- package/lib/utils/cookie.d.ts +66 -45
- package/lib/utils/cookie.js +69 -158
- package/lib/utils/cookie.js.map +1 -1
- package/lib/utils/cookie.spec.js +220 -238
- package/lib/utils/cookie.spec.js.map +1 -1
- package/lib/utils/esm.d.ts +4 -0
- package/lib/utils/esm.js +10 -0
- package/lib/utils/esm.js.map +1 -0
- package/lib/utils/httpcontext.d.ts +37 -9
- package/lib/utils/httpcontext.js +86 -57
- package/lib/utils/httpcontext.js.map +1 -1
- package/lib/utils/httpcontext.spec.js +37 -48
- package/lib/utils/httpcontext.spec.js.map +1 -1
- package/lib/utils/logger.d.ts +2 -2
- package/lib/utils/logger.js +15 -28
- package/lib/utils/logger.js.map +1 -1
- package/lib/utils/logger.spec.js +9 -11
- package/lib/utils/logger.spec.js.map +1 -1
- package/lib/utils/serializers.js +17 -20
- package/lib/utils/serializers.js.map +1 -1
- package/lib/utils/serializers.spec.js +43 -44
- package/lib/utils/serializers.spec.js.map +1 -1
- package/lib/utils/session.d.ts +120 -0
- package/lib/utils/session.js +155 -0
- package/lib/utils/session.js.map +1 -0
- package/lib/utils/session.spec.d.ts +1 -0
- package/lib/utils/session.spec.js +66 -0
- package/lib/utils/session.spec.js.map +1 -0
- package/lib/utils/waiter.d.ts +1 -1
- package/lib/utils/waiter.js +32 -52
- package/lib/utils/waiter.js.map +1 -1
- package/lib/utils/waiter.spec.js +75 -92
- package/lib/utils/waiter.spec.js.map +1 -1
- package/package.json +22 -14
- package/test/config-invitation.json +1 -3
- package/test/config.json +3 -3
- package/test/config.old.json +1 -2
- package/test/moddas/annotatedservice.js +5 -5
- package/test/moddas/debugmailer.js +2 -3
- package/test/moddas/fakeservice.js +2 -3
- package/test/moddas/voidstore.js +6 -4
- package/test/models/ident.js +2 -6
- package/test/models/task.js +3 -7
- package/test/package.json +2 -1
- package/webda.module.json +956 -188
package/lib/queues/queue.spec.js
CHANGED
|
@@ -1,17 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
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
|
|
24
|
-
simple(queue, inconsistentSize = false, ackDelayMs = 1000) {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
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
|
-
|
|
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":"
|
|
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():
|
|
88
|
+
resolve(): this;
|
|
89
89
|
/**
|
|
90
90
|
* Receive and process message from the queue
|
|
91
91
|
*
|
|
@@ -1,33 +1,19 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
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
|
|
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
|
-
|
|
27
|
-
|
|
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
|
|
25
|
+
class Queue extends PubSubService {
|
|
40
26
|
/**
|
|
41
27
|
* Create the delayer
|
|
42
28
|
*/
|
|
43
29
|
resolve() {
|
|
44
30
|
super.resolve();
|
|
45
|
-
this.delayer =
|
|
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
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
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
|
-
|
|
76
|
-
|
|
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
|
-
|
|
56
|
+
};
|
|
57
|
+
if (this.parameters.workerParallelism) {
|
|
58
|
+
// Parallelized processing
|
|
59
|
+
await Promise.all(items.map(msgWorker));
|
|
82
60
|
}
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
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) =>
|
|
116
|
-
let res =
|
|
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
|
-
|
|
104
|
+
await canceller();
|
|
120
105
|
}
|
|
121
|
-
}
|
|
122
|
-
let parentQueueCallback = (_canceller) =>
|
|
123
|
-
let res =
|
|
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
|
|
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
|
-
|
|
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":"
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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 (
|
|
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 (
|
|
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
|
-
|
|
147
|
-
|
|
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
|
-
|
|
164
|
-
|
|
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
|
-
|
|
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: "#/
|
|
185
|
+
$ref: "#/components/schemas/Object"
|
|
188
186
|
};
|
|
189
187
|
}
|
|
190
188
|
else if (typeof schema === "string") {
|
|
191
189
|
return {
|
|
192
|
-
$ref: "#/
|
|
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
|
|
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
|
|
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(
|
|
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") &&
|
|
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(
|
|
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
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
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
|