@conduitplatform/module-tools 0.16.0-alpha.9 → 0.16.0-rc.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/dist/ManagedModule.d.ts +1 -0
- package/dist/ManagedModule.js +153 -358
- package/dist/ManagedModule.js.map +1 -1
- package/dist/classes/ConduitActiveSchema.d.ts +12 -9
- package/dist/classes/ConduitActiveSchema.js +43 -52
- package/dist/classes/ConduitActiveSchema.js.map +1 -1
- package/dist/classes/ConduitServiceModule.d.ts +2 -0
- package/dist/classes/ConduitServiceModule.js +65 -112
- package/dist/classes/ConduitServiceModule.js.map +1 -1
- package/dist/classes/ConfigController.js +10 -17
- package/dist/classes/ConfigController.js.map +1 -1
- package/dist/classes/GrpcServer.d.ts +1 -0
- package/dist/classes/GrpcServer.js +93 -172
- package/dist/classes/GrpcServer.js.map +1 -1
- package/dist/helpers/GrpcHelper.js +11 -11
- package/dist/helpers/GrpcHelper.js.map +1 -1
- package/dist/helpers/GrpcToParsedRouterRequest.d.ts +2 -0
- package/dist/helpers/GrpcToParsedRouterRequest.js +19 -0
- package/dist/helpers/GrpcToParsedRouterRequest.js.map +1 -0
- package/dist/helpers/TypeHelpers.js +57 -119
- package/dist/helpers/TypeHelpers.js.map +1 -1
- package/dist/helpers/index.d.ts +1 -0
- package/dist/helpers/index.js +1 -0
- package/dist/helpers/index.js.map +1 -1
- package/dist/helpers/wrapGrpcFunctions.js +14 -15
- package/dist/helpers/wrapGrpcFunctions.js.map +1 -1
- package/dist/interfaces/ModuleLifecycleStage.d.ts +7 -0
- package/dist/interfaces/ModuleLifecycleStage.js +12 -0
- package/dist/interfaces/ModuleLifecycleStage.js.map +1 -0
- package/dist/logging/index.js +80 -180
- package/dist/logging/index.js.map +1 -1
- package/dist/metrics/MetricsServer.d.ts +2 -1
- package/dist/metrics/MetricsServer.js +25 -70
- package/dist/metrics/MetricsServer.js.map +1 -1
- package/dist/metrics/clientMiddleware.js +76 -217
- package/dist/metrics/clientMiddleware.js.map +1 -1
- package/dist/metrics/config/defaults.js +1 -1
- package/dist/metrics/config/defaults.js.map +1 -1
- package/dist/metrics/index.js +53 -89
- package/dist/metrics/index.js.map +1 -1
- package/dist/module.proto +58 -0
- package/dist/routing/ProxyRouteBuilder.js +21 -24
- package/dist/routing/ProxyRouteBuilder.js.map +1 -1
- package/dist/routing/RouteBuilder.js +31 -34
- package/dist/routing/RouteBuilder.js.map +1 -1
- package/dist/routing/RoutingController.d.ts +8 -0
- package/dist/routing/RoutingController.js +25 -0
- package/dist/routing/RoutingController.js.map +1 -0
- package/dist/routing/RoutingManager.d.ts +5 -2
- package/dist/routing/RoutingManager.js +61 -115
- package/dist/routing/RoutingManager.js.map +1 -1
- package/dist/routing/RoutingUtilities.js +3 -3
- package/dist/routing/RoutingUtilities.js.map +1 -1
- package/dist/routing/wrapRouterFunctions.d.ts +5 -5
- package/dist/routing/wrapRouterFunctions.js +30 -39
- package/dist/routing/wrapRouterFunctions.js.map +1 -1
- package/dist/utilities/convictConfigParser.js +2 -2
- package/dist/utilities/convictConfigParser.js.map +1 -1
- package/dist/utilities/initializeSdk.js +9 -11
- package/dist/utilities/initializeSdk.js.map +1 -1
- package/dist/utilities/linearBackoffTimeout.d.ts +1 -1
- package/dist/utilities/linearBackoffTimeout.js +35 -92
- package/dist/utilities/linearBackoffTimeout.js.map +1 -1
- package/dist/utilities/merge.js +2 -2
- package/dist/utilities/merge.js.map +1 -1
- package/package.json +19 -20
package/dist/module.proto
CHANGED
|
@@ -12,3 +12,61 @@ message SetConfigResponse {
|
|
|
12
12
|
service ConduitModule {
|
|
13
13
|
rpc SetConfig(SetConfigRequest) returns (SetConfigResponse);
|
|
14
14
|
}
|
|
15
|
+
|
|
16
|
+
service ClientRouter {
|
|
17
|
+
rpc Route(Request) returns (Response);
|
|
18
|
+
rpc SocketRoute(SocketRequest) returns (SocketResponse);
|
|
19
|
+
}
|
|
20
|
+
service AdminRouter {
|
|
21
|
+
rpc Route(Request) returns (Response);
|
|
22
|
+
rpc SocketRoute(SocketRequest) returns (SocketResponse);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
message Request {
|
|
26
|
+
string params = 1;
|
|
27
|
+
string path = 2;
|
|
28
|
+
string headers = 3;
|
|
29
|
+
string context = 4;
|
|
30
|
+
string cookies = 5;
|
|
31
|
+
string bodyParams = 6;
|
|
32
|
+
string urlParams = 7;
|
|
33
|
+
string queryParams = 8;
|
|
34
|
+
string functionName = 9;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
message Response {
|
|
38
|
+
string result = 1;
|
|
39
|
+
string redirect = 2;
|
|
40
|
+
repeated Cookie setCookies = 3;
|
|
41
|
+
repeated Cookie removeCookies = 4;
|
|
42
|
+
}
|
|
43
|
+
message Cookie {
|
|
44
|
+
string name = 1;
|
|
45
|
+
optional string value = 2;
|
|
46
|
+
CookieOptions options = 3;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
message CookieOptions {
|
|
50
|
+
bool httpOnly = 1;
|
|
51
|
+
bool secure = 2;
|
|
52
|
+
bool signed = 3;
|
|
53
|
+
int32 maxAge = 4;
|
|
54
|
+
string path = 5;
|
|
55
|
+
string domain = 6;
|
|
56
|
+
string sameSite = 7;
|
|
57
|
+
|
|
58
|
+
}
|
|
59
|
+
message SocketRequest {
|
|
60
|
+
string event = 1;
|
|
61
|
+
string socketId = 2;
|
|
62
|
+
string params = 3;
|
|
63
|
+
string context = 4;
|
|
64
|
+
string functionName = 5;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
message SocketResponse {
|
|
68
|
+
string event = 1;
|
|
69
|
+
string data = 2;
|
|
70
|
+
repeated string receivers = 3;
|
|
71
|
+
repeated string rooms = 4;
|
|
72
|
+
}
|
|
@@ -1,35 +1,33 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ProxyRouteBuilder = void 0;
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
class ProxyRouteBuilder {
|
|
5
|
+
constructor(manager) {
|
|
6
6
|
this.manager = manager;
|
|
7
7
|
this._options = { path: '' };
|
|
8
8
|
this._proxy = { target: '' };
|
|
9
9
|
}
|
|
10
|
-
|
|
10
|
+
method(action) {
|
|
11
11
|
this._options.action = action;
|
|
12
12
|
return this;
|
|
13
|
-
}
|
|
14
|
-
|
|
13
|
+
}
|
|
14
|
+
path(path) {
|
|
15
15
|
this._options.path = path;
|
|
16
16
|
return this;
|
|
17
|
-
}
|
|
18
|
-
|
|
17
|
+
}
|
|
18
|
+
target(target) {
|
|
19
19
|
this._proxy.target = target;
|
|
20
20
|
return this;
|
|
21
|
-
}
|
|
22
|
-
|
|
21
|
+
}
|
|
22
|
+
options(options) {
|
|
23
23
|
this._options = options;
|
|
24
24
|
return this;
|
|
25
|
-
}
|
|
26
|
-
|
|
25
|
+
}
|
|
26
|
+
proxy(proxy) {
|
|
27
27
|
this._proxy = proxy;
|
|
28
28
|
return this;
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
var _this = this;
|
|
32
|
-
if (allowDuplicates === void 0) { allowDuplicates = false; }
|
|
29
|
+
}
|
|
30
|
+
middleware(middleware, allowDuplicates = false) {
|
|
33
31
|
if (!Array.isArray(middleware)) {
|
|
34
32
|
middleware = [middleware];
|
|
35
33
|
}
|
|
@@ -38,28 +36,28 @@ var ProxyRouteBuilder = /** @class */ (function () {
|
|
|
38
36
|
this._options.middlewares = this._options.middlewares.concat(middleware);
|
|
39
37
|
}
|
|
40
38
|
else {
|
|
41
|
-
this._options.middlewares = this._options.middlewares.concat(middleware.filter(
|
|
39
|
+
this._options.middlewares = this._options.middlewares.concat(middleware.filter(mid => { var _a; return ((_a = this._options.middlewares) === null || _a === void 0 ? void 0 : _a.indexOf(mid)) === -1; }));
|
|
42
40
|
}
|
|
43
41
|
}
|
|
44
42
|
else {
|
|
45
43
|
this._options.middlewares = middleware;
|
|
46
44
|
}
|
|
47
45
|
return this;
|
|
48
|
-
}
|
|
49
|
-
|
|
46
|
+
}
|
|
47
|
+
add() {
|
|
50
48
|
if (!this.manager)
|
|
51
49
|
throw new Error('Builder not setup with manager');
|
|
52
50
|
if (!this._options.path)
|
|
53
51
|
throw new Error('Cannot build route without path');
|
|
54
52
|
if (!this._proxy.target)
|
|
55
53
|
throw new Error('Cannot build route without target');
|
|
56
|
-
|
|
54
|
+
const input = {
|
|
57
55
|
options: this._options,
|
|
58
56
|
proxy: this._proxy,
|
|
59
57
|
};
|
|
60
58
|
this.manager.proxyRoute(input);
|
|
61
|
-
}
|
|
62
|
-
|
|
59
|
+
}
|
|
60
|
+
build() {
|
|
63
61
|
if (!this.manager)
|
|
64
62
|
throw new Error('Builder not setup with manager');
|
|
65
63
|
if (!this._options.path)
|
|
@@ -74,8 +72,7 @@ var ProxyRouteBuilder = /** @class */ (function () {
|
|
|
74
72
|
proxy: this._proxy,
|
|
75
73
|
},
|
|
76
74
|
};
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
}());
|
|
75
|
+
}
|
|
76
|
+
}
|
|
80
77
|
exports.ProxyRouteBuilder = ProxyRouteBuilder;
|
|
81
78
|
//# sourceMappingURL=ProxyRouteBuilder.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProxyRouteBuilder.js","sourceRoot":"","sources":["../../src/routing/ProxyRouteBuilder.ts"],"names":[],"mappings":";;;AAOA;
|
|
1
|
+
{"version":3,"file":"ProxyRouteBuilder.js","sourceRoot":"","sources":["../../src/routing/ProxyRouteBuilder.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,32 +1,30 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.RouteBuilder = void 0;
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
const grpc_sdk_1 = require("@conduitplatform/grpc-sdk");
|
|
5
|
+
class RouteBuilder {
|
|
6
|
+
constructor(manager) {
|
|
7
7
|
this.manager = manager;
|
|
8
8
|
this._options = {};
|
|
9
9
|
}
|
|
10
|
-
|
|
10
|
+
method(action) {
|
|
11
11
|
this._options.action = action;
|
|
12
12
|
return this;
|
|
13
|
-
}
|
|
14
|
-
|
|
13
|
+
}
|
|
14
|
+
name(name) {
|
|
15
15
|
this._options.name = name;
|
|
16
16
|
return this;
|
|
17
|
-
}
|
|
18
|
-
|
|
17
|
+
}
|
|
18
|
+
description(description) {
|
|
19
19
|
this._options.description = description;
|
|
20
20
|
return this;
|
|
21
|
-
}
|
|
22
|
-
|
|
21
|
+
}
|
|
22
|
+
cacheControl(cache) {
|
|
23
23
|
this._options.cacheControl = cache;
|
|
24
24
|
return this;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
var _this = this;
|
|
25
|
+
}
|
|
26
|
+
middleware(middleware, allowDuplicates = false) {
|
|
28
27
|
var _a, _b, _c;
|
|
29
|
-
if (allowDuplicates === void 0) { allowDuplicates = false; }
|
|
30
28
|
if (!Array.isArray(middleware)) {
|
|
31
29
|
middleware = [middleware];
|
|
32
30
|
}
|
|
@@ -37,39 +35,39 @@ var RouteBuilder = /** @class */ (function () {
|
|
|
37
35
|
}
|
|
38
36
|
else {
|
|
39
37
|
// add to existing middlewares and filter out potential duplicates
|
|
40
|
-
this._options.middlewares = (_c = this._options.middlewares) === null || _c === void 0 ? void 0 : _c.concat(middleware.filter(
|
|
38
|
+
this._options.middlewares = (_c = this._options.middlewares) === null || _c === void 0 ? void 0 : _c.concat(middleware.filter(mid => { var _a; return ((_a = this._options.middlewares) === null || _a === void 0 ? void 0 : _a.indexOf(mid)) === -1; }));
|
|
41
39
|
}
|
|
42
40
|
}
|
|
43
41
|
else {
|
|
44
42
|
this._options.middlewares = middleware;
|
|
45
43
|
}
|
|
46
44
|
return this;
|
|
47
|
-
}
|
|
48
|
-
|
|
45
|
+
}
|
|
46
|
+
path(path) {
|
|
49
47
|
this._options.path = path;
|
|
50
48
|
return this;
|
|
51
|
-
}
|
|
52
|
-
|
|
49
|
+
}
|
|
50
|
+
queryParams(params) {
|
|
53
51
|
this._options.queryParams = params;
|
|
54
52
|
return this;
|
|
55
|
-
}
|
|
56
|
-
|
|
53
|
+
}
|
|
54
|
+
urlParams(params) {
|
|
57
55
|
this._options.urlParams = params;
|
|
58
56
|
return this;
|
|
59
|
-
}
|
|
60
|
-
|
|
57
|
+
}
|
|
58
|
+
bodyParams(params) {
|
|
61
59
|
this._options.bodyParams = params;
|
|
62
60
|
return this;
|
|
63
|
-
}
|
|
64
|
-
|
|
61
|
+
}
|
|
62
|
+
return(name, fields) {
|
|
65
63
|
this._returns = new grpc_sdk_1.ConduitRouteReturnDefinition(name, fields);
|
|
66
64
|
return this;
|
|
67
|
-
}
|
|
68
|
-
|
|
65
|
+
}
|
|
66
|
+
handler(fn) {
|
|
69
67
|
this._handler = fn;
|
|
70
68
|
return this;
|
|
71
|
-
}
|
|
72
|
-
|
|
69
|
+
}
|
|
70
|
+
add() {
|
|
73
71
|
if (!this.manager)
|
|
74
72
|
throw new Error('Builder not setup with manager');
|
|
75
73
|
if (!this._options)
|
|
@@ -83,8 +81,8 @@ var RouteBuilder = /** @class */ (function () {
|
|
|
83
81
|
if (!this._handler)
|
|
84
82
|
throw new Error('Cannot build route without handler');
|
|
85
83
|
this.manager.route(this._options, this._returns, this._handler);
|
|
86
|
-
}
|
|
87
|
-
|
|
84
|
+
}
|
|
85
|
+
build() {
|
|
88
86
|
if (!this._options)
|
|
89
87
|
throw new Error('Cannot build route without options');
|
|
90
88
|
if (!this._options.action)
|
|
@@ -100,8 +98,7 @@ var RouteBuilder = /** @class */ (function () {
|
|
|
100
98
|
returnType: this._returns,
|
|
101
99
|
handler: this._handler,
|
|
102
100
|
};
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
}());
|
|
101
|
+
}
|
|
102
|
+
}
|
|
106
103
|
exports.RouteBuilder = RouteBuilder;
|
|
107
104
|
//# sourceMappingURL=RouteBuilder.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RouteBuilder.js","sourceRoot":"","sources":["../../src/routing/RouteBuilder.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"RouteBuilder.js","sourceRoot":"","sources":["../../src/routing/RouteBuilder.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { GrpcCallback, GrpcRequest } from '@conduitplatform/grpc-sdk';
|
|
2
|
+
export declare class RoutingController {
|
|
3
|
+
private _routeHandlers;
|
|
4
|
+
handleRequest(call: GrpcRequest<any>, callback: GrpcCallback<any>): void;
|
|
5
|
+
setRoutes(routes: {
|
|
6
|
+
[key: string]: (call: any, callback: any) => void;
|
|
7
|
+
}): void;
|
|
8
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RoutingController = void 0;
|
|
4
|
+
const grpc_js_1 = require("@grpc/grpc-js");
|
|
5
|
+
class RoutingController {
|
|
6
|
+
constructor() {
|
|
7
|
+
this._routeHandlers = {};
|
|
8
|
+
}
|
|
9
|
+
handleRequest(call, callback) {
|
|
10
|
+
if (this._routeHandlers[call.request.functionName]) {
|
|
11
|
+
this._routeHandlers[call.request.functionName](call, callback);
|
|
12
|
+
}
|
|
13
|
+
else {
|
|
14
|
+
callback({
|
|
15
|
+
code: grpc_js_1.status.NOT_FOUND,
|
|
16
|
+
message: 'Not found',
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
setRoutes(routes) {
|
|
21
|
+
this._routeHandlers = routes;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
exports.RoutingController = RoutingController;
|
|
25
|
+
//# sourceMappingURL=RoutingController.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RoutingController.js","sourceRoot":"","sources":["../../src/routing/RoutingController.ts"],"names":[],"mappings":";;;AACA,2CAAuC;AAEvC,MAAa,iBAAiB;IAA9B;QACU,mBAAc,GAElB,EAAE,CAAC;IAgBT,CAAC;IAdC,aAAa,CAAC,IAAsB,EAAE,QAA2B;QAC/D,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE;YAClD,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;SAChE;aAAM;YACL,QAAQ,CAAC;gBACP,IAAI,EAAE,gBAAM,CAAC,SAAS;gBACtB,OAAO,EAAE,WAAW;aACrB,CAAC,CAAC;SACJ;IACH,CAAC;IAED,SAAS,CAAC,MAA6D;QACrE,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC;IAC/B,CAAC;CACF;AAnBD,8CAmBC"}
|
|
@@ -1,13 +1,16 @@
|
|
|
1
1
|
import { RouteBuilder } from './RouteBuilder';
|
|
2
2
|
import { RequestHandlers } from './wrapRouterFunctions';
|
|
3
|
-
import { Admin, ConduitMiddlewareOptions, ConduitRouteOptions, ConduitRouteReturnDefinition, ConduitSocketEventHandler, ConduitSocketOptions,
|
|
3
|
+
import { Admin, ConduitMiddlewareOptions, ConduitRouteOptions, ConduitRouteReturnDefinition, ConduitSocketEventHandler, ConduitSocketOptions, ProxyMiddlewareOptions, ProxyRouteOptions, Router } from '@conduitplatform/grpc-sdk';
|
|
4
4
|
import { GrpcServer } from '../classes';
|
|
5
5
|
import { ProxyRouteBuilder } from './ProxyRouteBuilder';
|
|
6
|
+
import { RoutingController } from './RoutingController';
|
|
6
7
|
export declare class RoutingManager {
|
|
7
8
|
private readonly _router;
|
|
8
9
|
private readonly _server;
|
|
9
10
|
private _moduleRoutes;
|
|
10
11
|
private _moduleProxyRoutes;
|
|
12
|
+
static ClientController: RoutingController;
|
|
13
|
+
static AdminController: RoutingController;
|
|
11
14
|
private _routeHandlers;
|
|
12
15
|
private readonly isAdmin;
|
|
13
16
|
constructor(_router: Router | Admin, _server: GrpcServer);
|
|
@@ -18,7 +21,7 @@ export declare class RoutingManager {
|
|
|
18
21
|
patch(path: string): RouteBuilder;
|
|
19
22
|
proxy(): ProxyRouteBuilder;
|
|
20
23
|
clear(): void;
|
|
21
|
-
middleware(input: ConduitMiddlewareOptions, handler:
|
|
24
|
+
middleware(input: ConduitMiddlewareOptions, handler: RequestHandlers): void;
|
|
22
25
|
route(input: ConduitRouteOptions, type: ConduitRouteReturnDefinition, handler: RequestHandlers): void;
|
|
23
26
|
proxyRoute(input: {
|
|
24
27
|
options: ProxyRouteOptions;
|
|
@@ -1,53 +1,12 @@
|
|
|
1
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
|
-
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
12
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
13
|
-
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
14
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
15
|
-
function step(op) {
|
|
16
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
17
|
-
while (_) try {
|
|
18
|
-
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
19
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
20
|
-
switch (op[0]) {
|
|
21
|
-
case 0: case 1: t = op; break;
|
|
22
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
23
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
24
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
25
|
-
default:
|
|
26
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
27
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
28
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
29
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
30
|
-
if (t[2]) _.ops.pop();
|
|
31
|
-
_.trys.pop(); continue;
|
|
32
|
-
}
|
|
33
|
-
op = body.call(thisArg, _);
|
|
34
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
35
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
36
|
-
}
|
|
37
|
-
};
|
|
38
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
39
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
40
|
-
};
|
|
41
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
42
3
|
exports.RoutingManager = void 0;
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
var RoutingManager = /** @class */ (function () {
|
|
50
|
-
function RoutingManager(_router, _server) {
|
|
4
|
+
const RouteBuilder_1 = require("./RouteBuilder");
|
|
5
|
+
const RoutingUtilities_1 = require("./RoutingUtilities");
|
|
6
|
+
const grpc_sdk_1 = require("@conduitplatform/grpc-sdk");
|
|
7
|
+
const ProxyRouteBuilder_1 = require("./ProxyRouteBuilder");
|
|
8
|
+
class RoutingManager {
|
|
9
|
+
constructor(_router, _server) {
|
|
51
10
|
this._router = _router;
|
|
52
11
|
this._server = _server;
|
|
53
12
|
this._moduleRoutes = {};
|
|
@@ -58,39 +17,39 @@ var RoutingManager = /** @class */ (function () {
|
|
|
58
17
|
this.isAdmin = true;
|
|
59
18
|
}
|
|
60
19
|
}
|
|
61
|
-
|
|
20
|
+
get(path) {
|
|
62
21
|
return new RouteBuilder_1.RouteBuilder(this).method(grpc_sdk_1.ConduitRouteActions.GET).path(path);
|
|
63
|
-
}
|
|
64
|
-
|
|
22
|
+
}
|
|
23
|
+
post(path) {
|
|
65
24
|
return new RouteBuilder_1.RouteBuilder(this).method(grpc_sdk_1.ConduitRouteActions.POST).path(path);
|
|
66
|
-
}
|
|
67
|
-
|
|
25
|
+
}
|
|
26
|
+
delete(path) {
|
|
68
27
|
return new RouteBuilder_1.RouteBuilder(this).method(grpc_sdk_1.ConduitRouteActions.DELETE).path(path);
|
|
69
|
-
}
|
|
70
|
-
|
|
28
|
+
}
|
|
29
|
+
update(path) {
|
|
71
30
|
return new RouteBuilder_1.RouteBuilder(this).method(grpc_sdk_1.ConduitRouteActions.UPDATE).path(path);
|
|
72
|
-
}
|
|
73
|
-
|
|
31
|
+
}
|
|
32
|
+
patch(path) {
|
|
74
33
|
return new RouteBuilder_1.RouteBuilder(this).method(grpc_sdk_1.ConduitRouteActions.PATCH).path(path);
|
|
75
|
-
}
|
|
76
|
-
|
|
34
|
+
}
|
|
35
|
+
proxy() {
|
|
77
36
|
return new ProxyRouteBuilder_1.ProxyRouteBuilder(this);
|
|
78
|
-
}
|
|
79
|
-
|
|
37
|
+
}
|
|
38
|
+
clear() {
|
|
80
39
|
this._moduleRoutes = {};
|
|
81
40
|
this._routeHandlers = {};
|
|
82
41
|
this._moduleProxyRoutes = {};
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
|
|
42
|
+
}
|
|
43
|
+
middleware(input, handler) {
|
|
44
|
+
const routeObject = this.parseRouteObject({
|
|
86
45
|
options: input,
|
|
87
46
|
grpcFunction: input.name,
|
|
88
47
|
});
|
|
89
48
|
this._moduleRoutes[routeObject.grpcFunction] = routeObject;
|
|
90
49
|
this._routeHandlers[routeObject.grpcFunction] = handler;
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
|
|
50
|
+
}
|
|
51
|
+
route(input, type, handler) {
|
|
52
|
+
const routeObject = this.parseRouteObject({
|
|
94
53
|
options: input,
|
|
95
54
|
returns: {
|
|
96
55
|
name: type.name,
|
|
@@ -100,27 +59,26 @@ var RoutingManager = /** @class */ (function () {
|
|
|
100
59
|
});
|
|
101
60
|
this._moduleRoutes[routeObject.grpcFunction] = routeObject;
|
|
102
61
|
this._routeHandlers[routeObject.grpcFunction] = handler;
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
|
|
62
|
+
}
|
|
63
|
+
proxyRoute(input) {
|
|
64
|
+
const routeObject = this.parseRouteObject({
|
|
106
65
|
options: input,
|
|
107
66
|
});
|
|
108
67
|
this._moduleProxyRoutes[routeObject.options.path + routeObject.proxy.target] =
|
|
109
68
|
routeObject;
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
var routeObject = this.parseRouteObject({
|
|
69
|
+
}
|
|
70
|
+
socket(input, events) {
|
|
71
|
+
const eventsObj = {};
|
|
72
|
+
const routeObject = this.parseRouteObject({
|
|
115
73
|
options: input,
|
|
116
74
|
events: '',
|
|
117
75
|
});
|
|
118
|
-
|
|
119
|
-
Object.keys(events).forEach(
|
|
76
|
+
let primary;
|
|
77
|
+
Object.keys(events).forEach((eventName) => {
|
|
120
78
|
var _a, _b, _c;
|
|
121
79
|
if (!primary)
|
|
122
80
|
primary = eventName;
|
|
123
|
-
|
|
81
|
+
const event = events[eventName];
|
|
124
82
|
eventsObj[eventName] = {
|
|
125
83
|
grpcFunction: eventName,
|
|
126
84
|
params: JSON.stringify(event.params),
|
|
@@ -129,58 +87,47 @@ var RoutingManager = /** @class */ (function () {
|
|
|
129
87
|
fields: JSON.stringify((_c = event.returnType) === null || _c === void 0 ? void 0 : _c.fields),
|
|
130
88
|
},
|
|
131
89
|
};
|
|
132
|
-
|
|
90
|
+
this._routeHandlers[eventName] = event.handler;
|
|
133
91
|
});
|
|
134
92
|
routeObject.events = JSON.stringify(eventsObj);
|
|
135
93
|
this._moduleRoutes[primary] = routeObject;
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
return [4 /*yield*/, this._server.addService(protoPath, protoDescriptions.formattedModuleName +
|
|
152
|
-
(this.isAdmin ? '.admin.Admin' : '.router.Router'), modifiedFunctions)];
|
|
153
|
-
case 2:
|
|
154
|
-
_a.sent();
|
|
155
|
-
paths = Object.values(this._moduleRoutes);
|
|
156
|
-
return [2 /*return*/, this._router.register(paths, protoDescriptions.protoFile)];
|
|
157
|
-
}
|
|
158
|
-
});
|
|
159
|
-
});
|
|
160
|
-
};
|
|
161
|
-
RoutingManager.prototype.generateGrpcName = function (options) {
|
|
94
|
+
}
|
|
95
|
+
async registerRoutes() {
|
|
96
|
+
if (Object.keys(this._routeHandlers).length === 0)
|
|
97
|
+
return;
|
|
98
|
+
const modifiedFunctions = (0, RoutingUtilities_1.wrapFunctionsAsync)(this._routeHandlers, this.isAdmin ? 'admin' : 'client');
|
|
99
|
+
if (this.isAdmin) {
|
|
100
|
+
RoutingManager.AdminController.setRoutes(modifiedFunctions);
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
RoutingManager.ClientController.setRoutes(modifiedFunctions);
|
|
104
|
+
}
|
|
105
|
+
const paths = Object.values(this._moduleRoutes);
|
|
106
|
+
return this._router.register(paths);
|
|
107
|
+
}
|
|
108
|
+
generateGrpcName(options) {
|
|
162
109
|
if (options.name) {
|
|
163
110
|
return options.name.charAt(0).toUpperCase() + options.name.slice(1);
|
|
164
111
|
}
|
|
165
112
|
else {
|
|
166
|
-
|
|
113
|
+
const name = options.action.charAt(0) +
|
|
167
114
|
options.action.slice(1).toLowerCase() +
|
|
168
115
|
this.extractNameFromPath(options.path);
|
|
169
|
-
return
|
|
116
|
+
return name.charAt(0).toUpperCase() + name.slice(1);
|
|
170
117
|
}
|
|
171
|
-
}
|
|
172
|
-
|
|
118
|
+
}
|
|
119
|
+
extractNameFromPath(path) {
|
|
173
120
|
path = path.replace(/[-:]/g, '/');
|
|
174
121
|
return path
|
|
175
122
|
.split('/')
|
|
176
|
-
.map(
|
|
123
|
+
.map(word => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())
|
|
177
124
|
.join('');
|
|
178
|
-
}
|
|
179
|
-
|
|
125
|
+
}
|
|
126
|
+
parseRouteObject(routeObject) {
|
|
180
127
|
if (!routeObject.options.middlewares) {
|
|
181
128
|
routeObject.options.middlewares = [];
|
|
182
129
|
}
|
|
183
|
-
for (
|
|
130
|
+
for (const option in routeObject.options) {
|
|
184
131
|
if (!routeObject.options.hasOwnProperty(option))
|
|
185
132
|
continue;
|
|
186
133
|
if (option === 'middlewares')
|
|
@@ -191,8 +138,7 @@ var RoutingManager = /** @class */ (function () {
|
|
|
191
138
|
routeObject.options[option] = JSON.stringify(routeObject.options[option]);
|
|
192
139
|
}
|
|
193
140
|
return routeObject;
|
|
194
|
-
}
|
|
195
|
-
|
|
196
|
-
}());
|
|
141
|
+
}
|
|
142
|
+
}
|
|
197
143
|
exports.RoutingManager = RoutingManager;
|
|
198
144
|
//# sourceMappingURL=RoutingManager.js.map
|