@restorecommerce/chassis-srv 0.3.3 → 0.3.7
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/CHANGELOG.md +19 -0
- package/lib/cache/index.js +22 -3
- package/lib/cache/index.js.map +1 -1
- package/lib/command-interface/index.d.ts +3 -3
- package/lib/command-interface/index.js +432 -498
- package/lib/command-interface/index.js.map +1 -1
- package/lib/config/index.js +6 -15
- package/lib/config/index.js.map +1 -1
- package/lib/database/index.d.ts +2 -4
- package/lib/database/index.js +4 -13
- package/lib/database/index.js.map +1 -1
- package/lib/database/provider/arango/base.js +314 -322
- package/lib/database/provider/arango/base.js.map +1 -1
- package/lib/database/provider/arango/common.js +70 -57
- package/lib/database/provider/arango/common.js.map +1 -1
- package/lib/database/provider/arango/graph.d.ts +4 -8
- package/lib/database/provider/arango/graph.js +335 -470
- package/lib/database/provider/arango/graph.js.map +1 -1
- package/lib/database/provider/arango/index.js +34 -21
- package/lib/database/provider/arango/index.js.map +1 -1
- package/lib/database/provider/arango/interface.d.ts +70 -0
- package/lib/database/provider/arango/interface.js +46 -0
- package/lib/database/provider/arango/interface.js.map +1 -0
- package/lib/database/provider/arango/utils.d.ts +77 -0
- package/lib/database/provider/arango/utils.js +587 -0
- package/lib/database/provider/arango/utils.js.map +1 -0
- package/lib/database/provider/nedb/index.js +203 -206
- package/lib/database/provider/nedb/index.js.map +1 -1
- package/lib/health/index.js +36 -42
- package/lib/health/index.js.map +1 -1
- package/lib/index.d.ts +4 -0
- package/lib/index.js +27 -6
- package/lib/index.js.map +1 -1
- package/lib/microservice/endpoint.js +33 -23
- package/lib/microservice/endpoint.js.map +1 -1
- package/lib/microservice/server.js +115 -106
- package/lib/microservice/server.js.map +1 -1
- package/lib/microservice/transport/provider/grpc/index.js +58 -52
- package/lib/microservice/transport/provider/grpc/index.js.map +1 -1
- package/lib/microservice/transport/provider/grpc/reflection.js +101 -93
- package/lib/microservice/transport/provider/grpc/reflection.js.map +1 -1
- package/lib/offsets/index.d.ts +2 -2
- package/lib/offsets/index.js +41 -42
- package/lib/offsets/index.js.map +1 -1
- package/package.json +29 -29
- package/tsconfig.json +13 -6
- package/setupTopics.js +0 -32
package/lib/health/index.js
CHANGED
|
@@ -1,13 +1,4 @@
|
|
|
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
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
3
|
exports.Health = void 0;
|
|
13
4
|
const grpc_client_1 = require("@restorecommerce/grpc-client");
|
|
@@ -32,54 +23,57 @@ class Health {
|
|
|
32
23
|
packageName: 'grpc.health.v1',
|
|
33
24
|
serviceName: 'Health'
|
|
34
25
|
};
|
|
35
|
-
const serviceConfig =
|
|
26
|
+
const serviceConfig = {
|
|
27
|
+
...clientCfg[dependency],
|
|
28
|
+
proto: {
|
|
29
|
+
...clientCfg[dependency]['proto'],
|
|
30
|
+
protoPath: 'grpc/health/v1/health.proto',
|
|
31
|
+
services: {
|
|
36
32
|
['dependency']: dependencyCfg
|
|
37
|
-
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
};
|
|
38
36
|
const client = new grpc_client_1.GrpcClient(serviceConfig, this.opts.logger);
|
|
39
37
|
this.endpoints[dependency] = client.dependency;
|
|
40
38
|
}
|
|
41
39
|
}
|
|
42
40
|
}
|
|
43
41
|
}
|
|
44
|
-
watch(call, context) {
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
// IGNORED
|
|
48
|
-
});
|
|
42
|
+
async watch(call, context) {
|
|
43
|
+
// TODO
|
|
44
|
+
// IGNORED
|
|
49
45
|
}
|
|
50
|
-
check(call, context) {
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
if (
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
if (this.
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
this.opts.logger.warn('Readiness error from ' + service + ':', response);
|
|
63
|
-
return { status: ServingStatus.NOT_SERVING };
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
try {
|
|
68
|
-
if (this.opts.readiness && !(yield this.opts.readiness())) {
|
|
46
|
+
async check(call, context) {
|
|
47
|
+
const service = (call.request && call.request.service) || 'liveness';
|
|
48
|
+
if (service === 'readiness') {
|
|
49
|
+
if (this.ci.redisClient && !this.ci.redisClient.ping()) {
|
|
50
|
+
return { status: ServingStatus.NOT_SERVING };
|
|
51
|
+
}
|
|
52
|
+
if (this.opts) {
|
|
53
|
+
if (this.endpoints) {
|
|
54
|
+
for (const service of Object.keys(this.endpoints)) {
|
|
55
|
+
const response = await this.endpoints[service].check({});
|
|
56
|
+
if ('error' in response && response.error) {
|
|
57
|
+
this.opts.logger.warn('Readiness error from ' + service + ':', response);
|
|
69
58
|
return { status: ServingStatus.NOT_SERVING };
|
|
70
59
|
}
|
|
71
60
|
}
|
|
72
|
-
|
|
61
|
+
}
|
|
62
|
+
try {
|
|
63
|
+
if (this.opts.readiness && !await this.opts.readiness()) {
|
|
73
64
|
return { status: ServingStatus.NOT_SERVING };
|
|
74
65
|
}
|
|
75
66
|
}
|
|
67
|
+
catch (e) {
|
|
68
|
+
return { status: ServingStatus.NOT_SERVING };
|
|
69
|
+
}
|
|
76
70
|
}
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
|
|
71
|
+
}
|
|
72
|
+
const response = await this.ci.check({});
|
|
73
|
+
if (!('status' in response)) {
|
|
74
|
+
return { status: ServingStatus.UNKNOWN };
|
|
75
|
+
}
|
|
76
|
+
return response;
|
|
83
77
|
}
|
|
84
78
|
}
|
|
85
79
|
exports.Health = Health;
|
package/lib/health/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/health/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/health/index.ts"],"names":[],"mappings":"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"}
|
package/lib/index.d.ts
CHANGED
|
@@ -26,3 +26,7 @@ import { OffsetStore } from './offsets';
|
|
|
26
26
|
export { OffsetStore };
|
|
27
27
|
import { Health } from './health';
|
|
28
28
|
export { Health };
|
|
29
|
+
import { toTraversalFilterObject } from './database/provider/arango/utils';
|
|
30
|
+
export { toTraversalFilterObject };
|
|
31
|
+
import { Vertices, Collection, GraphFilters, TraversalOptions, TraversalResponse } from './database/provider/arango/interface';
|
|
32
|
+
export { Vertices, Collection, GraphFilters, TraversalOptions, TraversalResponse };
|
package/lib/index.js
CHANGED
|
@@ -1,11 +1,30 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
+
}) : (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
o[k2] = m[k];
|
|
8
|
+
}));
|
|
9
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
10
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
11
|
+
}) : function(o, v) {
|
|
12
|
+
o["default"] = v;
|
|
13
|
+
});
|
|
14
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
15
|
+
if (mod && mod.__esModule) return mod;
|
|
16
|
+
var result = {};
|
|
17
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
18
|
+
__setModuleDefault(result, mod);
|
|
19
|
+
return result;
|
|
20
|
+
};
|
|
2
21
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.Health = exports.OffsetStore = exports.CommandInterface = exports.ServerReflection = exports.grpcServer = exports.grpc = exports.errors = exports.chainMiddleware = exports.makeEndpoint = exports.Server = exports.nedb = exports.arango = exports.database = exports.config = exports.cache = void 0;
|
|
4
|
-
const cache = require("./cache");
|
|
22
|
+
exports.toTraversalFilterObject = exports.Health = exports.OffsetStore = exports.CommandInterface = exports.ServerReflection = exports.grpcServer = exports.grpc = exports.errors = exports.chainMiddleware = exports.makeEndpoint = exports.Server = exports.nedb = exports.arango = exports.database = exports.config = exports.cache = void 0;
|
|
23
|
+
const cache = __importStar(require("./cache"));
|
|
5
24
|
exports.cache = cache;
|
|
6
|
-
const config = require("./config");
|
|
25
|
+
const config = __importStar(require("./config"));
|
|
7
26
|
exports.config = config;
|
|
8
|
-
const database = require("./database");
|
|
27
|
+
const database = __importStar(require("./database"));
|
|
9
28
|
exports.database = database;
|
|
10
29
|
const arango_1 = require("./database/provider/arango");
|
|
11
30
|
Object.defineProperty(exports, "arango", { enumerable: true, get: function () { return arango_1.create; } });
|
|
@@ -16,9 +35,9 @@ Object.defineProperty(exports, "Server", { enumerable: true, get: function () {
|
|
|
16
35
|
const endpoint_1 = require("./microservice/endpoint");
|
|
17
36
|
Object.defineProperty(exports, "makeEndpoint", { enumerable: true, get: function () { return endpoint_1.makeEndpoint; } });
|
|
18
37
|
Object.defineProperty(exports, "chainMiddleware", { enumerable: true, get: function () { return endpoint_1.chainMiddleware; } });
|
|
19
|
-
const errors = require("./microservice/errors");
|
|
38
|
+
const errors = __importStar(require("./microservice/errors"));
|
|
20
39
|
exports.errors = errors;
|
|
21
|
-
const grpc = require("./microservice/transport/provider/grpc");
|
|
40
|
+
const grpc = __importStar(require("./microservice/transport/provider/grpc"));
|
|
22
41
|
exports.grpc = grpc;
|
|
23
42
|
var grpc_1 = require("./microservice/transport/provider/grpc");
|
|
24
43
|
Object.defineProperty(exports, "grpcServer", { enumerable: true, get: function () { return grpc_1.Server; } });
|
|
@@ -30,4 +49,6 @@ const offsets_1 = require("./offsets");
|
|
|
30
49
|
Object.defineProperty(exports, "OffsetStore", { enumerable: true, get: function () { return offsets_1.OffsetStore; } });
|
|
31
50
|
const health_1 = require("./health");
|
|
32
51
|
Object.defineProperty(exports, "Health", { enumerable: true, get: function () { return health_1.Health; } });
|
|
52
|
+
const utils_1 = require("./database/provider/arango/utils");
|
|
53
|
+
Object.defineProperty(exports, "toTraversalFilterObject", { enumerable: true, get: function () { return utils_1.toTraversalFilterObject; } });
|
|
33
54
|
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,+CAAiC;AACxB,sBAAK;AACd,iDAAmC;AAC1B,wBAAM;AACf,qDAAuC;AAE9B,4BAAQ;AACjB,uDAA8D;AACrD,uFADU,eAAM,OACV;AACf,mDAA0D;AACjD,qFADU,aAAI,OACV;AAEb,kDAAyD;AAChD,uFADU,eAAM,OACV;AAEf,sDAAwE;AAC/D,6FADA,uBAAY,OACA;AAAE,gGADA,0BAAe,OACA;AAEtC,8DAAgD;AACvC,wBAAM;AACf,6EAA+D;AACtD,oBAAI;AAEb,+DAA8E;AAArE,kGAAA,MAAM,OAAc;AAC7B,iEAA0E;AACjE,iGADA,uBAAgB,OACA;AAEzB,2DAA8F;AAClE,iGADoB,oCAAgB,OACpB;AAE5C,uCAAwC;AAC/B,4FADA,qBAAW,OACA;AAEpB,qCAAkC;AACzB,uFADA,eAAM,OACA;AAEf,4DAA2E;AAClE,wGADA,+BAAuB,OACA"}
|
|
@@ -1,40 +1,50 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
+
}) : (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
o[k2] = m[k];
|
|
8
|
+
}));
|
|
9
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
10
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
11
|
+
}) : function(o, v) {
|
|
12
|
+
o["default"] = v;
|
|
13
|
+
});
|
|
14
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
15
|
+
if (mod && mod.__esModule) return mod;
|
|
16
|
+
var result = {};
|
|
17
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
18
|
+
__setModuleDefault(result, mod);
|
|
19
|
+
return result;
|
|
10
20
|
};
|
|
11
21
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
22
|
exports.makeEndpoint = exports.chainMiddleware = void 0;
|
|
13
|
-
const _ = require("lodash");
|
|
14
|
-
const rTracer = require("cls-rtracer");
|
|
23
|
+
const _ = __importStar(require("lodash"));
|
|
24
|
+
const rTracer = __importStar(require("cls-rtracer"));
|
|
15
25
|
const service_config_1 = require("@restorecommerce/service-config");
|
|
16
26
|
const middlewareClsTracer = rTracer.koaMiddleware({
|
|
17
27
|
useHeader: true,
|
|
18
28
|
headerName: 'x-request-id'
|
|
19
29
|
});
|
|
20
|
-
const cfg = service_config_1.createServiceConfig(process.cwd());
|
|
30
|
+
const cfg = (0, service_config_1.createServiceConfig)(process.cwd());
|
|
21
31
|
const oneOfFieldsConfig = cfg.get('oneOfFields');
|
|
22
32
|
/**
|
|
23
33
|
* calls each middleware
|
|
24
34
|
* @param middleware
|
|
25
35
|
*/
|
|
26
36
|
const chainMiddleware = (middleware) => {
|
|
27
|
-
return (request, next) =>
|
|
37
|
+
return async (request, next) => {
|
|
28
38
|
let n = next;
|
|
29
39
|
if (next) {
|
|
30
40
|
for (let i = middleware.length - 1; i >= 0; i -= 1) {
|
|
31
41
|
const reqClone = _.clone(request);
|
|
32
42
|
Object.assign(request, { req: reqClone }, { res: reqClone });
|
|
33
|
-
const result =
|
|
43
|
+
const result = await middleware[i](request, async () => {
|
|
34
44
|
const grpcRequest = { request: request.request };
|
|
35
45
|
delete grpcRequest.request.headers;
|
|
36
|
-
return
|
|
37
|
-
})
|
|
46
|
+
return await next(grpcRequest);
|
|
47
|
+
});
|
|
38
48
|
if (i == 0) {
|
|
39
49
|
return result;
|
|
40
50
|
}
|
|
@@ -43,11 +53,11 @@ const chainMiddleware = (middleware) => {
|
|
|
43
53
|
else {
|
|
44
54
|
n = request;
|
|
45
55
|
for (let i = middleware.length - 1; i >= 1; i -= 1) {
|
|
46
|
-
n =
|
|
56
|
+
n = await middleware[i](n);
|
|
47
57
|
}
|
|
48
58
|
}
|
|
49
|
-
return
|
|
50
|
-
}
|
|
59
|
+
return await middleware[0](n);
|
|
60
|
+
};
|
|
51
61
|
};
|
|
52
62
|
exports.chainMiddleware = chainMiddleware;
|
|
53
63
|
// iterate iterates an object recursively
|
|
@@ -120,7 +130,7 @@ const removeBufferFileds = (object, ctx) => {
|
|
|
120
130
|
* @param cfg
|
|
121
131
|
*/
|
|
122
132
|
const makeEndpoint = (middleware, service, transportName, methodName, logger, cfg) => {
|
|
123
|
-
return (request, context) =>
|
|
133
|
+
return async (request, context) => {
|
|
124
134
|
const ctx = context || {};
|
|
125
135
|
ctx.transport = transportName;
|
|
126
136
|
ctx.method = methodName;
|
|
@@ -213,8 +223,8 @@ const makeEndpoint = (middleware, service, transportName, methodName, logger, cf
|
|
|
213
223
|
}
|
|
214
224
|
if (middlewareChain.length > 0) {
|
|
215
225
|
logger.verbose(`[rid: ${rid}] received request to method ${ctx.method} over transport ${ctx.transport}`, Request);
|
|
216
|
-
const chain = exports.chainMiddleware(middlewareChain);
|
|
217
|
-
const result =
|
|
226
|
+
const chain = (0, exports.chainMiddleware)(middlewareChain);
|
|
227
|
+
const result = await chain(request, service[methodName].bind(service));
|
|
218
228
|
let response = _.cloneDeep(result);
|
|
219
229
|
response = removeBufferFileds(response, ctx);
|
|
220
230
|
logger.verbose(`[rid: ${rid}] request to method ${ctx.method} over transport ${ctx.transport} response`, { Request, response });
|
|
@@ -224,7 +234,7 @@ const makeEndpoint = (middleware, service, transportName, methodName, logger, cf
|
|
|
224
234
|
e = service[methodName].bind(service);
|
|
225
235
|
}
|
|
226
236
|
logger.verbose(`received request to method ${ctx.method} over transport ${ctx.transport}`, Request);
|
|
227
|
-
const result =
|
|
237
|
+
const result = await e(request, ctx);
|
|
228
238
|
let response = _.cloneDeep(result);
|
|
229
239
|
response = removeBufferFileds(response, ctx);
|
|
230
240
|
logger.verbose(`request to method ${ctx.method} over transport ${ctx.transport} response`, { Request, response });
|
|
@@ -246,7 +256,7 @@ const makeEndpoint = (middleware, service, transportName, methodName, logger, cf
|
|
|
246
256
|
}
|
|
247
257
|
throw err;
|
|
248
258
|
}
|
|
249
|
-
}
|
|
259
|
+
};
|
|
250
260
|
};
|
|
251
261
|
exports.makeEndpoint = makeEndpoint;
|
|
252
262
|
//# sourceMappingURL=endpoint.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"endpoint.js","sourceRoot":"","sources":["../../src/microservice/endpoint.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"endpoint.js","sourceRoot":"","sources":["../../src/microservice/endpoint.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,18 +1,28 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
+
}) : (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
o[k2] = m[k];
|
|
8
|
+
}));
|
|
9
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
10
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
11
|
+
}) : function(o, v) {
|
|
12
|
+
o["default"] = v;
|
|
13
|
+
});
|
|
14
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
15
|
+
if (mod && mod.__esModule) return mod;
|
|
16
|
+
var result = {};
|
|
17
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
18
|
+
__setModuleDefault(result, mod);
|
|
19
|
+
return result;
|
|
10
20
|
};
|
|
11
21
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
22
|
exports.Server = exports.registerTransport = void 0;
|
|
13
23
|
const endpoint_1 = require("./endpoint");
|
|
14
24
|
const logger_1 = require("@restorecommerce/logger");
|
|
15
|
-
const _ = require("lodash");
|
|
25
|
+
const _ = __importStar(require("lodash"));
|
|
16
26
|
const events_1 = require("events");
|
|
17
27
|
const transports = {};
|
|
18
28
|
/**
|
|
@@ -27,7 +37,7 @@ const registerTransport = (name, provider) => {
|
|
|
27
37
|
exports.registerTransport = registerTransport;
|
|
28
38
|
// register included providers
|
|
29
39
|
const grpc = require('./transport/provider/grpc');
|
|
30
|
-
exports.registerTransport('grpc', grpc.Server);
|
|
40
|
+
(0, exports.registerTransport)('grpc', grpc.Server);
|
|
31
41
|
/**
|
|
32
42
|
* Initializes all configured transports.
|
|
33
43
|
* @param {object} config Configuration
|
|
@@ -79,10 +89,15 @@ class Server extends events_1.EventEmitter {
|
|
|
79
89
|
// logger
|
|
80
90
|
if (_.isNil(logger)) {
|
|
81
91
|
if (_.isNil(this.config.logger)) {
|
|
82
|
-
this.logger = logger_1.createLogger();
|
|
92
|
+
this.logger = (0, logger_1.createLogger)();
|
|
83
93
|
}
|
|
84
94
|
else {
|
|
85
|
-
|
|
95
|
+
const loggerCfg = this.config.logger;
|
|
96
|
+
loggerCfg.esTransformer = (msg) => {
|
|
97
|
+
msg.fields = JSON.stringify(msg.fields);
|
|
98
|
+
return msg;
|
|
99
|
+
};
|
|
100
|
+
this.logger = (0, logger_1.createLogger)(loggerCfg);
|
|
86
101
|
}
|
|
87
102
|
}
|
|
88
103
|
else {
|
|
@@ -136,119 +151,113 @@ class Server extends events_1.EventEmitter {
|
|
|
136
151
|
* @param {string} name Service name.
|
|
137
152
|
* @param {object} service A business logic service.
|
|
138
153
|
*/
|
|
139
|
-
bind(name, service) {
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
154
|
+
async bind(name, service) {
|
|
155
|
+
if (_.isNil(name)) {
|
|
156
|
+
throw new Error('missing argument name');
|
|
157
|
+
}
|
|
158
|
+
if (!_.isString(name)) {
|
|
159
|
+
throw new Error('argument name is not of type string');
|
|
160
|
+
}
|
|
161
|
+
if (_.isNil(service)) {
|
|
162
|
+
throw new Error('missing argument service');
|
|
163
|
+
}
|
|
164
|
+
const serviceCfg = this.config.services[name];
|
|
165
|
+
if (!serviceCfg) {
|
|
166
|
+
throw new Error(`configuration for ${name} does not exist`);
|
|
167
|
+
}
|
|
168
|
+
const transportNames = Object.keys(this.transport);
|
|
169
|
+
// endpoints
|
|
170
|
+
const logger = this.logger;
|
|
171
|
+
const endpoints = {};
|
|
172
|
+
Object.keys(serviceCfg).forEach((endpointName) => {
|
|
173
|
+
const endpointCfg = serviceCfg[endpointName];
|
|
174
|
+
if (_.isNil(endpointCfg)) {
|
|
175
|
+
logger.error(`configuration for service
|
|
176
|
+
${name} endpoint ${endpointName} does not exist`);
|
|
177
|
+
return;
|
|
146
178
|
}
|
|
147
|
-
|
|
148
|
-
|
|
179
|
+
for (let i = 0; i < endpointCfg.transport.length; i += 1) {
|
|
180
|
+
const transportName = endpointCfg.transport[i];
|
|
181
|
+
if (!endpoints[transportName]) {
|
|
182
|
+
endpoints[transportName] = [];
|
|
183
|
+
}
|
|
184
|
+
if (!_.includes(transportNames, transportName)) {
|
|
185
|
+
logger.warn(`transport ${transportName} does not exist`, {
|
|
186
|
+
service: name,
|
|
187
|
+
method: endpointName,
|
|
188
|
+
});
|
|
189
|
+
continue;
|
|
190
|
+
}
|
|
191
|
+
endpoints[transportName].push(endpointName);
|
|
149
192
|
}
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
193
|
+
});
|
|
194
|
+
logger.debug('endpoints', endpoints);
|
|
195
|
+
logger.debug('binding endpoints to transports');
|
|
196
|
+
const middleware = this.middleware;
|
|
197
|
+
const transport = this.transport;
|
|
198
|
+
const cfg = this.config;
|
|
199
|
+
for (let i = 0; i < transportNames.length; i += 1) {
|
|
200
|
+
const transportName = transportNames[i];
|
|
201
|
+
const provider = transport[transportName];
|
|
202
|
+
const methodNames = endpoints[transportName];
|
|
203
|
+
if (!methodNames) {
|
|
204
|
+
logger.verbose(`transport ${transportName} does not have any endpoints configured`);
|
|
205
|
+
continue;
|
|
153
206
|
}
|
|
154
|
-
const
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
if (_.isNil(endpointCfg)) {
|
|
161
|
-
logger.error(`configuration for service
|
|
162
|
-
${name} endpoint ${endpointName} does not exist`);
|
|
163
|
-
return;
|
|
164
|
-
}
|
|
165
|
-
for (let i = 0; i < endpointCfg.transport.length; i += 1) {
|
|
166
|
-
const transportName = endpointCfg.transport[i];
|
|
167
|
-
if (!endpoints[transportName]) {
|
|
168
|
-
endpoints[transportName] = [];
|
|
169
|
-
}
|
|
170
|
-
if (!_.includes(transportNames, transportName)) {
|
|
171
|
-
logger.warn(`transport ${transportName} does not exist`, {
|
|
172
|
-
service: name,
|
|
173
|
-
method: endpointName,
|
|
174
|
-
});
|
|
175
|
-
continue;
|
|
176
|
-
}
|
|
177
|
-
endpoints[transportName].push(endpointName);
|
|
207
|
+
const binding = {};
|
|
208
|
+
for (let j = 0; j < methodNames.length; j += 1) {
|
|
209
|
+
const methodName = methodNames[j];
|
|
210
|
+
if (!_.isFunction(service[methodName])) {
|
|
211
|
+
logger.warn(`endpoint ${methodName} does not have matching service method`);
|
|
212
|
+
continue;
|
|
178
213
|
}
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
const middleware = this.middleware;
|
|
183
|
-
const transport = this.transport;
|
|
184
|
-
const cfg = this.config;
|
|
185
|
-
for (let i = 0; i < transportNames.length; i += 1) {
|
|
186
|
-
const transportName = transportNames[i];
|
|
187
|
-
const provider = transport[transportName];
|
|
188
|
-
const methodNames = endpoints[transportName];
|
|
189
|
-
if (!methodNames) {
|
|
190
|
-
logger.verbose(`transport ${transportName} does not have any endpoints configured`);
|
|
214
|
+
const methodCfg = serviceCfg[methodName];
|
|
215
|
+
if (_.isNil(methodCfg)) {
|
|
216
|
+
logger.error(`endpoint ${name}.${methodName} does not have configuration`);
|
|
191
217
|
continue;
|
|
192
218
|
}
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
const methodName = methodNames[j];
|
|
196
|
-
if (!_.isFunction(service[methodName])) {
|
|
197
|
-
logger.warn(`endpoint ${methodName} does not have matching service method`);
|
|
198
|
-
continue;
|
|
199
|
-
}
|
|
200
|
-
const methodCfg = serviceCfg[methodName];
|
|
201
|
-
if (_.isNil(methodCfg)) {
|
|
202
|
-
logger.error(`endpoint ${name}.${methodName} does not have configuration`);
|
|
203
|
-
continue;
|
|
204
|
-
}
|
|
205
|
-
if (!_.includes(methodCfg.transport, transportName)) {
|
|
206
|
-
logger.error(`endpoint ${name}.${methodName}
|
|
219
|
+
if (!_.includes(methodCfg.transport, transportName)) {
|
|
220
|
+
logger.error(`endpoint ${name}.${methodName}
|
|
207
221
|
is not configured for transport ${transportName}, skipping endpoint binding`);
|
|
208
|
-
continue;
|
|
209
|
-
}
|
|
210
|
-
binding[methodName] = endpoint_1.makeEndpoint(middleware, service, transportName, methodName, logger, cfg);
|
|
211
|
-
logger.debug(`endpoint ${methodName} bound to transport ${transportName}`);
|
|
212
|
-
}
|
|
213
|
-
if (_.size(_.functions(binding)) === 0) {
|
|
214
|
-
logger.verbose(`service ${name} has no endpoints configured
|
|
215
|
-
for transport ${transportName}, skipping service binding`);
|
|
216
222
|
continue;
|
|
217
223
|
}
|
|
218
|
-
|
|
219
|
-
|
|
224
|
+
binding[methodName] = (0, endpoint_1.makeEndpoint)(middleware, service, transportName, methodName, logger, cfg);
|
|
225
|
+
logger.debug(`endpoint ${methodName} bound to transport ${transportName}`);
|
|
220
226
|
}
|
|
221
|
-
|
|
227
|
+
if (_.size(_.functions(binding)) === 0) {
|
|
228
|
+
logger.verbose(`service ${name} has no endpoints configured
|
|
229
|
+
for transport ${transportName}, skipping service binding`);
|
|
230
|
+
continue;
|
|
231
|
+
}
|
|
232
|
+
await provider.bind(name, binding);
|
|
233
|
+
this.emit('bound', name, binding, provider);
|
|
234
|
+
}
|
|
222
235
|
}
|
|
223
236
|
/**
|
|
224
237
|
* start launches the server by starting transports and listening to events.
|
|
225
238
|
*/
|
|
226
|
-
start() {
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
this.emit('serving', this.transport);
|
|
236
|
-
});
|
|
239
|
+
async start() {
|
|
240
|
+
const transportNames = Object.keys(this.transport);
|
|
241
|
+
for (let i = 0; i < transportNames.length; i += 1) {
|
|
242
|
+
const name = transportNames[i];
|
|
243
|
+
const provider = this.transport[name];
|
|
244
|
+
await provider.start();
|
|
245
|
+
this.logger.info(`transport ${name} started`);
|
|
246
|
+
}
|
|
247
|
+
this.emit('serving', this.transport);
|
|
237
248
|
}
|
|
238
249
|
/**
|
|
239
250
|
* Shuts down all transport provider servers.
|
|
240
251
|
*/
|
|
241
|
-
stop() {
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
yield this.transport[name].end();
|
|
248
|
-
}
|
|
252
|
+
async stop() {
|
|
253
|
+
const transportNames = _.keys(this.transport);
|
|
254
|
+
for (let i = 0; i < transportNames.length; i += 1) {
|
|
255
|
+
const name = transportNames[i];
|
|
256
|
+
if (this.transport[name].end) {
|
|
257
|
+
await this.transport[name].end();
|
|
249
258
|
}
|
|
250
|
-
|
|
251
|
-
|
|
259
|
+
}
|
|
260
|
+
this.emit('stopped', this.transport);
|
|
252
261
|
}
|
|
253
262
|
}
|
|
254
263
|
exports.Server = Server;
|