@webda/core 2.0.0-beta.2 → 2.0.1
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 +5 -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 +44 -45
- package/lib/core.js +239 -320
- 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 +128 -151
- package/lib/models/aclmodel.spec.js.map +1 -1
- package/lib/models/coremodel.d.ts +39 -17
- package/lib/models/coremodel.js +160 -117
- package/lib/models/coremodel.js.map +1 -1
- package/lib/models/coremodel.spec.js +143 -107
- package/lib/models/coremodel.spec.js.map +1 -1
- package/lib/models/deployment.js +1 -2
- package/lib/models/ident.d.ts +3 -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 +2 -2
- package/lib/models/ownermodel.js +39 -62
- package/lib/models/ownermodel.js.map +1 -1
- package/lib/models/ownermodel.spec.js +126 -166
- 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 +9 -9
- 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 +3 -3
- package/lib/router.js +46 -47
- 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 +542 -574
- 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 +9 -7
- package/lib/services/binary.js +213 -245
- 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 +45 -70
- 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 +10 -5
- package/lib/services/filebinary.js +171 -205
- 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 +10 -10
- package/lib/services/invitationservice.js +275 -313
- package/lib/services/invitationservice.js.map +1 -1
- package/lib/services/invitationservice.spec.js +443 -449
- 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 -148
- 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 +29 -6
- package/lib/services/service.js +69 -39
- 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 +262 -289
- package/lib/stores/file.spec.js.map +1 -1
- package/lib/stores/mapper.d.ts +4 -4
- package/lib/stores/mapper.js +111 -137
- package/lib/stores/mapper.js.map +1 -1
- package/lib/stores/mapper.spec.js +133 -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 +40 -16
- package/lib/stores/store.js +847 -830
- package/lib/stores/store.js.map +1 -1
- package/lib/stores/store.spec.d.ts +6 -4
- package/lib/stores/store.spec.js +628 -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 +44 -38
- 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 +144 -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 +3 -0
- package/lib/utils/httpcontext.js +48 -65
- package/lib/utils/httpcontext.js.map +1 -1
- package/lib/utils/httpcontext.spec.js +37 -56
- 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 +895 -189
package/lib/router.spec.js
CHANGED
|
@@ -1,25 +1,14 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
2
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
3
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
4
|
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
5
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
6
|
};
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
14
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
15
|
-
});
|
|
16
|
-
};
|
|
17
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
-
const assert = require("assert");
|
|
19
|
-
const mocha_1 = require("@testdeck/mocha");
|
|
20
|
-
const test_1 = require("./test");
|
|
21
|
-
const httpcontext_1 = require("./utils/httpcontext");
|
|
22
|
-
let RouterTest = class RouterTest extends test_1.WebdaTest {
|
|
7
|
+
import { suite, test } from "@testdeck/mocha";
|
|
8
|
+
import * as assert from "assert";
|
|
9
|
+
import { WebdaTest } from "./test.js";
|
|
10
|
+
import { HttpContext } from "./utils/httpcontext.js";
|
|
11
|
+
let RouterTest = class RouterTest extends WebdaTest {
|
|
23
12
|
testGetRouteMethodsFromUrl() {
|
|
24
13
|
const info = { methods: ["GET"], executor: "DefinedMailer" };
|
|
25
14
|
this.webda.addRoute("/plop", info);
|
|
@@ -39,47 +28,39 @@ let RouterTest = class RouterTest extends test_1.WebdaTest {
|
|
|
39
28
|
// Should be skipped
|
|
40
29
|
this.webda.addRoute("/plop", info);
|
|
41
30
|
}
|
|
42
|
-
testRouterWithPrefix() {
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
this.webda.getRouter().remapRoutes();
|
|
49
|
-
});
|
|
31
|
+
async testRouterWithPrefix() {
|
|
32
|
+
this.webda.addRoute("/test/{uuid}", { methods: ["GET"], executor: "DefinedMailer" });
|
|
33
|
+
this.webda.getGlobalParams().routePrefix = "/reprefix";
|
|
34
|
+
assert.strictEqual(this.webda.getRouter().getFinalUrl("/test/plop"), "/reprefix/test/plop");
|
|
35
|
+
assert.strictEqual(this.webda.getRouter().getFinalUrl("/reprefix/test/plop"), "/reprefix/test/plop");
|
|
36
|
+
this.webda.getRouter().remapRoutes();
|
|
50
37
|
}
|
|
51
|
-
testRouteWithPrefix() {
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
assert.strictEqual(ctx.getPathParameters().uuid, "plop");
|
|
59
|
-
});
|
|
38
|
+
async testRouteWithPrefix() {
|
|
39
|
+
this.webda.addRoute("/test/{uuid}", { methods: ["GET"], executor: "DefinedMailer" });
|
|
40
|
+
let httpContext = new HttpContext("test.webda.io", "GET", "/prefix/test/plop", "https");
|
|
41
|
+
httpContext.setPrefix("/prefix");
|
|
42
|
+
let ctx = await this.webda.newContext(httpContext);
|
|
43
|
+
this.webda.updateContextWithRoute(ctx);
|
|
44
|
+
assert.strictEqual(ctx.getPathParameters().uuid, "plop");
|
|
60
45
|
}
|
|
61
|
-
testRouteWithOverlap() {
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
assert.deepStrictEqual(this.webda.getRouter().getRouteMethodsFromUrl("/test/plop"), ["GET"]);
|
|
69
|
-
});
|
|
46
|
+
async testRouteWithOverlap() {
|
|
47
|
+
this.webda.addRoute("/test/{uuid}", { methods: ["GET"], executor: "DefinedMailer" });
|
|
48
|
+
this.webda.addRoute("/test/{id}", { methods: ["GET"], executor: "DefinedMailer" });
|
|
49
|
+
let httpContext = new HttpContext("test.webda.io", "GET", "/test/plop", "https");
|
|
50
|
+
let ctx = await this.webda.newContext(httpContext);
|
|
51
|
+
this.webda.updateContextWithRoute(ctx);
|
|
52
|
+
assert.deepStrictEqual(this.webda.getRouter().getRouteMethodsFromUrl("/test/plop"), ["GET"]);
|
|
70
53
|
}
|
|
71
|
-
testRouteWithQueryParam() {
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
assert.strictEqual(ctx.getPathParameters().uuid, "bouzouf");
|
|
82
|
-
});
|
|
54
|
+
async testRouteWithQueryParam() {
|
|
55
|
+
this.webda.addRoute("/test/plop{?uuid}", { methods: ["GET"], executor: "DefinedMailer" });
|
|
56
|
+
let httpContext = new HttpContext("test.webda.io", "GET", "/test/plop", "http");
|
|
57
|
+
let ctx = await this.webda.newContext(httpContext);
|
|
58
|
+
assert.strictEqual(this.webda.updateContextWithRoute(ctx), true);
|
|
59
|
+
assert.strictEqual(ctx.getPathParameters().uuid, undefined);
|
|
60
|
+
httpContext = new HttpContext("test.webda.io", "GET", "/test/plop?uuid=bouzouf", "http");
|
|
61
|
+
ctx = await this.webda.newContext(httpContext);
|
|
62
|
+
assert.strictEqual(this.webda.updateContextWithRoute(ctx), true);
|
|
63
|
+
assert.strictEqual(ctx.getPathParameters().uuid, "bouzouf");
|
|
83
64
|
}
|
|
84
65
|
completeOpenApi() {
|
|
85
66
|
let api = { paths: {}, info: { title: "Plop", version: "1.0" }, openapi: "", tags: [{ name: "test" }] };
|
|
@@ -105,26 +86,48 @@ let RouterTest = class RouterTest extends test_1.WebdaTest {
|
|
|
105
86
|
assert.deepStrictEqual(api.paths["/plop"].get.tags, ["plop", "test"]);
|
|
106
87
|
assert.ok(api.tags.filter(f => f.name === "plop").length === 1);
|
|
107
88
|
}
|
|
89
|
+
cov() {
|
|
90
|
+
const info = {
|
|
91
|
+
methods: ["GET"],
|
|
92
|
+
executor: "DefinedMailer",
|
|
93
|
+
openapi: {
|
|
94
|
+
tags: ["plop", "test"],
|
|
95
|
+
hidden: true,
|
|
96
|
+
get: {
|
|
97
|
+
schemas: {
|
|
98
|
+
output: "test"
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
};
|
|
103
|
+
this.webda.addRoute("/cov", info);
|
|
104
|
+
this.webda.addRoute("/cov", info);
|
|
105
|
+
this.webda.addRoute("/cov", { ...info, methods: ["PUT"] });
|
|
106
|
+
this.webda.getRouter().removeRoute("/cov", info);
|
|
107
|
+
}
|
|
108
108
|
};
|
|
109
109
|
__decorate([
|
|
110
|
-
|
|
110
|
+
test
|
|
111
111
|
], RouterTest.prototype, "testGetRouteMethodsFromUrl", null);
|
|
112
112
|
__decorate([
|
|
113
|
-
|
|
113
|
+
test
|
|
114
114
|
], RouterTest.prototype, "testRouterWithPrefix", null);
|
|
115
115
|
__decorate([
|
|
116
|
-
|
|
116
|
+
test
|
|
117
117
|
], RouterTest.prototype, "testRouteWithPrefix", null);
|
|
118
118
|
__decorate([
|
|
119
|
-
|
|
119
|
+
test
|
|
120
120
|
], RouterTest.prototype, "testRouteWithOverlap", null);
|
|
121
121
|
__decorate([
|
|
122
|
-
|
|
122
|
+
test
|
|
123
123
|
], RouterTest.prototype, "testRouteWithQueryParam", null);
|
|
124
124
|
__decorate([
|
|
125
|
-
|
|
125
|
+
test
|
|
126
126
|
], RouterTest.prototype, "completeOpenApi", null);
|
|
127
|
+
__decorate([
|
|
128
|
+
test
|
|
129
|
+
], RouterTest.prototype, "cov", null);
|
|
127
130
|
RouterTest = __decorate([
|
|
128
|
-
|
|
131
|
+
suite
|
|
129
132
|
], RouterTest);
|
|
130
133
|
//# sourceMappingURL=router.spec.js.map
|
package/lib/router.spec.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router.spec.js","sourceRoot":"","sources":["../src/router.spec.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"router.spec.js","sourceRoot":"","sources":["../src/router.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,20 +1,8 @@
|
|
|
1
|
-
|
|
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.EventService = exports.EventServiceParameters = exports.AsyncEvent = void 0;
|
|
13
|
-
const service_1 = require("./service");
|
|
1
|
+
import { Service, ServiceParameters } from "./service.js";
|
|
14
2
|
/**
|
|
15
3
|
* AsyncEvent representation
|
|
16
4
|
*/
|
|
17
|
-
class AsyncEvent {
|
|
5
|
+
export class AsyncEvent {
|
|
18
6
|
constructor(service, type, payload = {}) {
|
|
19
7
|
this.service = service;
|
|
20
8
|
this.type = type;
|
|
@@ -29,12 +17,15 @@ class AsyncEvent {
|
|
|
29
17
|
* @returns
|
|
30
18
|
*/
|
|
31
19
|
toJSON() {
|
|
32
|
-
return
|
|
33
|
-
|
|
20
|
+
return {
|
|
21
|
+
...this,
|
|
22
|
+
payload: JSON.stringify(this.payload, (_key, value) => {
|
|
23
|
+
if (value instanceof Service) {
|
|
34
24
|
return `${AsyncEvent.ServiceTag}${value.getName()}`;
|
|
35
25
|
}
|
|
36
26
|
return value;
|
|
37
|
-
})
|
|
27
|
+
})
|
|
28
|
+
};
|
|
38
29
|
}
|
|
39
30
|
/**
|
|
40
31
|
* Deserialize from the queue, reviving any detected service
|
|
@@ -61,7 +52,6 @@ class AsyncEvent {
|
|
|
61
52
|
return this.service + "_" + this.type;
|
|
62
53
|
}
|
|
63
54
|
}
|
|
64
|
-
exports.AsyncEvent = AsyncEvent;
|
|
65
55
|
/**
|
|
66
56
|
* Used when serializing a service
|
|
67
57
|
*/
|
|
@@ -69,23 +59,21 @@ AsyncEvent.ServiceTag = "#Webda:Service:";
|
|
|
69
59
|
/**
|
|
70
60
|
* @inheritdoc
|
|
71
61
|
*/
|
|
72
|
-
class EventServiceParameters extends
|
|
62
|
+
export class EventServiceParameters extends ServiceParameters {
|
|
73
63
|
/**
|
|
74
64
|
* @inheritdoc
|
|
75
65
|
*/
|
|
76
66
|
constructor(params) {
|
|
77
|
-
var _a, _b;
|
|
78
67
|
super(params);
|
|
79
|
-
|
|
80
|
-
|
|
68
|
+
this.queues ?? (this.queues = {});
|
|
69
|
+
this.sync ?? (this.sync = false);
|
|
81
70
|
}
|
|
82
71
|
}
|
|
83
|
-
exports.EventServiceParameters = EventServiceParameters;
|
|
84
72
|
/**
|
|
85
73
|
* @category CoreServices
|
|
86
74
|
* @WebdaModda AsyncEvents
|
|
87
75
|
*/
|
|
88
|
-
class EventService extends
|
|
76
|
+
class EventService extends Service {
|
|
89
77
|
constructor() {
|
|
90
78
|
super(...arguments);
|
|
91
79
|
this._callbacks = {};
|
|
@@ -105,22 +93,20 @@ class EventService extends service_1.Service {
|
|
|
105
93
|
* @ignore
|
|
106
94
|
* Setup the default routes
|
|
107
95
|
*/
|
|
108
|
-
computeParameters() {
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
this._defaultQueue = key;
|
|
114
|
-
}
|
|
115
|
-
this._queues[key] = this.getService(this.parameters.queues[key]);
|
|
116
|
-
});
|
|
117
|
-
this._async = !this.parameters.sync;
|
|
118
|
-
// Check we have at least one queue to handle asynchronous
|
|
119
|
-
if (this._async && Object.keys(this._queues).length < 1) {
|
|
120
|
-
this._webda.log("ERROR", "Need at least one queue for async to be ready", this.parameters);
|
|
121
|
-
throw Error("Need at least one queue for async to be ready");
|
|
96
|
+
async computeParameters() {
|
|
97
|
+
Object.keys(this.parameters.queues).forEach(key => {
|
|
98
|
+
// Define default as first queue
|
|
99
|
+
if (!this._defaultQueue) {
|
|
100
|
+
this._defaultQueue = key;
|
|
122
101
|
}
|
|
102
|
+
this._queues[key] = this.getService(this.parameters.queues[key]);
|
|
123
103
|
});
|
|
104
|
+
this._async = !this.parameters.sync;
|
|
105
|
+
// Check we have at least one queue to handle asynchronous
|
|
106
|
+
if (this._async && Object.keys(this._queues).length < 1) {
|
|
107
|
+
this._webda.log("ERROR", "Need at least one queue for async to be ready", this.parameters);
|
|
108
|
+
throw Error("Need at least one queue for async to be ready");
|
|
109
|
+
}
|
|
124
110
|
}
|
|
125
111
|
/**
|
|
126
112
|
* Bind a asynchronous event
|
|
@@ -169,16 +155,14 @@ class EventService extends service_1.Service {
|
|
|
169
155
|
* @param payload
|
|
170
156
|
* @returns
|
|
171
157
|
*/
|
|
172
|
-
pushEvent(service, type, queue, payload) {
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
}
|
|
181
|
-
});
|
|
158
|
+
async pushEvent(service, type, queue, payload) {
|
|
159
|
+
let event = new AsyncEvent(service.getName(), type, payload);
|
|
160
|
+
if (this._async) {
|
|
161
|
+
return this._queues[queue].sendMessage(event);
|
|
162
|
+
}
|
|
163
|
+
else {
|
|
164
|
+
return this.handleEvent(event);
|
|
165
|
+
}
|
|
182
166
|
}
|
|
183
167
|
/**
|
|
184
168
|
* Process one event
|
|
@@ -186,28 +170,24 @@ class EventService extends service_1.Service {
|
|
|
186
170
|
* @param event
|
|
187
171
|
* @returns
|
|
188
172
|
*/
|
|
189
|
-
handleEvent(event) {
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
promises.push(executor(event.payload, event));
|
|
197
|
-
});
|
|
198
|
-
// Need to handle the failure
|
|
199
|
-
yield Promise.all(promises);
|
|
173
|
+
async handleEvent(event) {
|
|
174
|
+
if (!this._callbacks[event.getMapper()]) {
|
|
175
|
+
return Promise.reject("Callbacks should not be empty, possible application version mismatch between emitter and worker");
|
|
176
|
+
}
|
|
177
|
+
let promises = [];
|
|
178
|
+
this._callbacks[event.getMapper()].map(executor => {
|
|
179
|
+
promises.push(executor(event.payload, event));
|
|
200
180
|
});
|
|
181
|
+
// Need to handle the failure
|
|
182
|
+
await Promise.all(promises);
|
|
201
183
|
}
|
|
202
184
|
/**
|
|
203
185
|
*
|
|
204
186
|
* @param eventBody serialized event
|
|
205
187
|
* @returns
|
|
206
188
|
*/
|
|
207
|
-
handleRawEvent(event) {
|
|
208
|
-
return
|
|
209
|
-
return this.handleEvent(AsyncEvent.fromQueue(event, this));
|
|
210
|
-
});
|
|
189
|
+
async handleRawEvent(event) {
|
|
190
|
+
return this.handleEvent(AsyncEvent.fromQueue(event, this));
|
|
211
191
|
}
|
|
212
192
|
/**
|
|
213
193
|
* Process asynchronous event on queue
|
|
@@ -220,5 +200,5 @@ class EventService extends service_1.Service {
|
|
|
220
200
|
return this._queues[queue].consume(this.handleRawEvent.bind(this));
|
|
221
201
|
}
|
|
222
202
|
}
|
|
223
|
-
|
|
203
|
+
export { EventService };
|
|
224
204
|
//# sourceMappingURL=asyncevents.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"asyncevents.js","sourceRoot":"","sources":["../../src/services/asyncevents.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"asyncevents.js","sourceRoot":"","sources":["../../src/services/asyncevents.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,79 +1,66 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
2
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
3
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
4
|
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
5
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
6
|
};
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
var priorityQueue = this.webda.getService("PriorityEventQueue");
|
|
31
|
-
var eventService = this.webda.getService("AsyncEvents");
|
|
32
|
-
users.onAsync("Store.Saved", () => {
|
|
33
|
-
eventsCount++;
|
|
34
|
-
});
|
|
35
|
-
users.onAsync("Store.Deleted", () => {
|
|
36
|
-
priorityEventsCount++;
|
|
37
|
-
}, "priority");
|
|
38
|
-
yield users.save({
|
|
39
|
-
uuid: "test",
|
|
40
|
-
type: 1
|
|
41
|
-
});
|
|
42
|
-
let size = yield defaultQueue.size();
|
|
43
|
-
assert.strictEqual(size, 1);
|
|
44
|
-
size = yield priorityQueue.size();
|
|
45
|
-
assert.strictEqual(size, 0);
|
|
46
|
-
yield users.delete("test");
|
|
47
|
-
size = yield priorityQueue.size();
|
|
48
|
-
assert.strictEqual(size, 1);
|
|
49
|
-
size = yield defaultQueue.size();
|
|
50
|
-
assert.strictEqual(size, 1);
|
|
51
|
-
// Now that we have queued all messages see if they unqueue correctly
|
|
52
|
-
// We need to emulate the worker as it wont stop pulling from the queue
|
|
53
|
-
assert.strictEqual(eventsCount, 0);
|
|
54
|
-
assert.strictEqual(priorityEventsCount, 0);
|
|
55
|
-
let evts = yield defaultQueue.receiveMessage();
|
|
56
|
-
// @ts-ignore
|
|
57
|
-
yield eventService.handleRawEvent(evts[0].Message);
|
|
58
|
-
assert.strictEqual(eventsCount, 1);
|
|
59
|
-
assert.strictEqual(priorityEventsCount, 0);
|
|
60
|
-
evts = yield priorityQueue.receiveMessage();
|
|
61
|
-
// @ts-ignore
|
|
62
|
-
yield eventService.handleRawEvent(evts[0].Message);
|
|
63
|
-
assert.strictEqual(eventsCount, 1);
|
|
64
|
-
assert.strictEqual(priorityEventsCount, 1);
|
|
65
|
-
// Disable async and verify that it directly update now
|
|
66
|
-
eventService._async = false;
|
|
67
|
-
yield users.save({
|
|
68
|
-
uuid: "test",
|
|
69
|
-
type: 1
|
|
70
|
-
});
|
|
71
|
-
assert.strictEqual(eventsCount, 2);
|
|
72
|
-
assert.strictEqual(priorityEventsCount, 1);
|
|
73
|
-
yield users.delete("test");
|
|
74
|
-
assert.strictEqual(eventsCount, 2);
|
|
75
|
-
assert.strictEqual(priorityEventsCount, 2);
|
|
7
|
+
import { suite, test } from "@testdeck/mocha";
|
|
8
|
+
import * as assert from "assert";
|
|
9
|
+
import * as sinon from "sinon";
|
|
10
|
+
import { WebdaTest } from "../test.js";
|
|
11
|
+
import { EventService } from "./asyncevents.js";
|
|
12
|
+
let AsyncEventsTest = class AsyncEventsTest extends WebdaTest {
|
|
13
|
+
async simple() {
|
|
14
|
+
var users = this.webda.getService("users");
|
|
15
|
+
var eventsCount = 0;
|
|
16
|
+
var priorityEventsCount = 0;
|
|
17
|
+
var defaultQueue = this.webda.getService("EventQueue");
|
|
18
|
+
var priorityQueue = this.webda.getService("PriorityEventQueue");
|
|
19
|
+
var eventService = this.webda.getService("AsyncEvents");
|
|
20
|
+
users.onAsync("Store.Saved", () => {
|
|
21
|
+
eventsCount++;
|
|
22
|
+
});
|
|
23
|
+
users.onAsync("Store.Deleted", () => {
|
|
24
|
+
priorityEventsCount++;
|
|
25
|
+
}, "priority");
|
|
26
|
+
await users.save({
|
|
27
|
+
uuid: "test",
|
|
28
|
+
type: 1
|
|
76
29
|
});
|
|
30
|
+
let size = await defaultQueue.size();
|
|
31
|
+
assert.strictEqual(size, 1);
|
|
32
|
+
size = await priorityQueue.size();
|
|
33
|
+
assert.strictEqual(size, 0);
|
|
34
|
+
await users.delete("test");
|
|
35
|
+
size = await priorityQueue.size();
|
|
36
|
+
assert.strictEqual(size, 1);
|
|
37
|
+
size = await defaultQueue.size();
|
|
38
|
+
assert.strictEqual(size, 1);
|
|
39
|
+
// Now that we have queued all messages see if they unqueue correctly
|
|
40
|
+
// We need to emulate the worker as it wont stop pulling from the queue
|
|
41
|
+
assert.strictEqual(eventsCount, 0);
|
|
42
|
+
assert.strictEqual(priorityEventsCount, 0);
|
|
43
|
+
let evts = await defaultQueue.receiveMessage();
|
|
44
|
+
// @ts-ignore
|
|
45
|
+
await eventService.handleRawEvent(evts[0].Message);
|
|
46
|
+
assert.strictEqual(eventsCount, 1);
|
|
47
|
+
assert.strictEqual(priorityEventsCount, 0);
|
|
48
|
+
evts = await priorityQueue.receiveMessage();
|
|
49
|
+
// @ts-ignore
|
|
50
|
+
await eventService.handleRawEvent(evts[0].Message);
|
|
51
|
+
assert.strictEqual(eventsCount, 1);
|
|
52
|
+
assert.strictEqual(priorityEventsCount, 1);
|
|
53
|
+
// Disable async and verify that it directly update now
|
|
54
|
+
eventService._async = false;
|
|
55
|
+
await users.save({
|
|
56
|
+
uuid: "test",
|
|
57
|
+
type: 1
|
|
58
|
+
});
|
|
59
|
+
assert.strictEqual(eventsCount, 2);
|
|
60
|
+
assert.strictEqual(priorityEventsCount, 1);
|
|
61
|
+
await users.delete("test");
|
|
62
|
+
assert.strictEqual(eventsCount, 2);
|
|
63
|
+
assert.strictEqual(priorityEventsCount, 2);
|
|
77
64
|
}
|
|
78
65
|
worker() {
|
|
79
66
|
let eventService = this.webda.getService("AsyncEvents");
|
|
@@ -90,46 +77,42 @@ let AsyncEventsTest = class AsyncEventsTest extends test_1.WebdaTest {
|
|
|
90
77
|
assert.strictEqual(eventService.worker("plop"), "ploper");
|
|
91
78
|
assert.strictEqual(eventService.worker(), "default");
|
|
92
79
|
}
|
|
93
|
-
computeParameters() {
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
yield assert.rejects(() => evt.computeParameters(), /Need at least one queue for async to be ready/);
|
|
97
|
-
});
|
|
80
|
+
async computeParameters() {
|
|
81
|
+
let evt = new EventService(this.webda, "none", { sync: false });
|
|
82
|
+
await assert.rejects(() => evt.computeParameters(), /Need at least one queue for async to be ready/);
|
|
98
83
|
}
|
|
99
|
-
cov() {
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
}
|
|
117
|
-
});
|
|
84
|
+
async cov() {
|
|
85
|
+
let evt = new EventService(this.webda, "none", { sync: true });
|
|
86
|
+
assert.throws(() => evt.bindAsyncListener(evt, "plop", undefined, "plop"), /EventService is not configured for asynchronous/);
|
|
87
|
+
await assert.rejects(
|
|
88
|
+
// @ts-ignore
|
|
89
|
+
() => evt.handleEvent({ getMapper: () => "plop" }), /Callbacks should not be empty, possible application version mismatch between emitter and worker/);
|
|
90
|
+
evt._async = true;
|
|
91
|
+
let stub = sinon.spy(this.webda.getService("users"), "on");
|
|
92
|
+
try {
|
|
93
|
+
evt.bindAsyncListener(this.webda.getService("users"), "plop", () => { }, "priority");
|
|
94
|
+
evt.bindAsyncListener(this.webda.getService("users"), "plop", () => { }, "priority");
|
|
95
|
+
// Should call 'on' only once
|
|
96
|
+
assert.strictEqual(stub.callCount, 1);
|
|
97
|
+
}
|
|
98
|
+
finally {
|
|
99
|
+
stub.restore();
|
|
100
|
+
}
|
|
118
101
|
}
|
|
119
102
|
};
|
|
120
103
|
__decorate([
|
|
121
|
-
|
|
104
|
+
test
|
|
122
105
|
], AsyncEventsTest.prototype, "simple", null);
|
|
123
106
|
__decorate([
|
|
124
|
-
|
|
107
|
+
test
|
|
125
108
|
], AsyncEventsTest.prototype, "worker", null);
|
|
126
109
|
__decorate([
|
|
127
|
-
|
|
110
|
+
test
|
|
128
111
|
], AsyncEventsTest.prototype, "computeParameters", null);
|
|
129
112
|
__decorate([
|
|
130
|
-
|
|
113
|
+
test
|
|
131
114
|
], AsyncEventsTest.prototype, "cov", null);
|
|
132
115
|
AsyncEventsTest = __decorate([
|
|
133
|
-
|
|
116
|
+
suite
|
|
134
117
|
], AsyncEventsTest);
|
|
135
118
|
//# sourceMappingURL=asyncevents.spec.js.map
|