@restorecommerce/chassis-srv 0.3.4 → 0.3.8
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 +21 -2
- 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 +5 -14
- package/lib/config/index.js.map +1 -1
- package/lib/database/index.d.ts +2 -4
- package/lib/database/index.js +2 -11
- 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 +31 -18
- 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 +31 -21
- package/lib/microservice/endpoint.js.map +1 -1
- package/lib/microservice/server.js +107 -103
- 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 +25 -25
- 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,17 +1,27 @@
|
|
|
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,
|
|
@@ -24,17 +34,17 @@ const oneOfFieldsConfig = cfg.get('oneOfFields');
|
|
|
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;
|
|
@@ -214,7 +224,7 @@ const makeEndpoint = (middleware, service, transportName, methodName, logger, cf
|
|
|
214
224
|
if (middlewareChain.length > 0) {
|
|
215
225
|
logger.verbose(`[rid: ${rid}] received request to method ${ctx.method} over transport ${ctx.transport}`, Request);
|
|
216
226
|
const chain = (0, exports.chainMiddleware)(middlewareChain);
|
|
217
|
-
const result =
|
|
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
|
/**
|
|
@@ -141,119 +151,113 @@ class Server extends events_1.EventEmitter {
|
|
|
141
151
|
* @param {string} name Service name.
|
|
142
152
|
* @param {object} service A business logic service.
|
|
143
153
|
*/
|
|
144
|
-
bind(name, service) {
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
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;
|
|
151
178
|
}
|
|
152
|
-
|
|
153
|
-
|
|
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);
|
|
154
192
|
}
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
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;
|
|
158
206
|
}
|
|
159
|
-
const
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
if (_.isNil(endpointCfg)) {
|
|
166
|
-
logger.error(`configuration for service
|
|
167
|
-
${name} endpoint ${endpointName} does not exist`);
|
|
168
|
-
return;
|
|
169
|
-
}
|
|
170
|
-
for (let i = 0; i < endpointCfg.transport.length; i += 1) {
|
|
171
|
-
const transportName = endpointCfg.transport[i];
|
|
172
|
-
if (!endpoints[transportName]) {
|
|
173
|
-
endpoints[transportName] = [];
|
|
174
|
-
}
|
|
175
|
-
if (!_.includes(transportNames, transportName)) {
|
|
176
|
-
logger.warn(`transport ${transportName} does not exist`, {
|
|
177
|
-
service: name,
|
|
178
|
-
method: endpointName,
|
|
179
|
-
});
|
|
180
|
-
continue;
|
|
181
|
-
}
|
|
182
|
-
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;
|
|
183
213
|
}
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
const middleware = this.middleware;
|
|
188
|
-
const transport = this.transport;
|
|
189
|
-
const cfg = this.config;
|
|
190
|
-
for (let i = 0; i < transportNames.length; i += 1) {
|
|
191
|
-
const transportName = transportNames[i];
|
|
192
|
-
const provider = transport[transportName];
|
|
193
|
-
const methodNames = endpoints[transportName];
|
|
194
|
-
if (!methodNames) {
|
|
195
|
-
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`);
|
|
196
217
|
continue;
|
|
197
218
|
}
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
const methodName = methodNames[j];
|
|
201
|
-
if (!_.isFunction(service[methodName])) {
|
|
202
|
-
logger.warn(`endpoint ${methodName} does not have matching service method`);
|
|
203
|
-
continue;
|
|
204
|
-
}
|
|
205
|
-
const methodCfg = serviceCfg[methodName];
|
|
206
|
-
if (_.isNil(methodCfg)) {
|
|
207
|
-
logger.error(`endpoint ${name}.${methodName} does not have configuration`);
|
|
208
|
-
continue;
|
|
209
|
-
}
|
|
210
|
-
if (!_.includes(methodCfg.transport, transportName)) {
|
|
211
|
-
logger.error(`endpoint ${name}.${methodName}
|
|
219
|
+
if (!_.includes(methodCfg.transport, transportName)) {
|
|
220
|
+
logger.error(`endpoint ${name}.${methodName}
|
|
212
221
|
is not configured for transport ${transportName}, skipping endpoint binding`);
|
|
213
|
-
continue;
|
|
214
|
-
}
|
|
215
|
-
binding[methodName] = (0, endpoint_1.makeEndpoint)(middleware, service, transportName, methodName, logger, cfg);
|
|
216
|
-
logger.debug(`endpoint ${methodName} bound to transport ${transportName}`);
|
|
217
|
-
}
|
|
218
|
-
if (_.size(_.functions(binding)) === 0) {
|
|
219
|
-
logger.verbose(`service ${name} has no endpoints configured
|
|
220
|
-
for transport ${transportName}, skipping service binding`);
|
|
221
222
|
continue;
|
|
222
223
|
}
|
|
223
|
-
|
|
224
|
-
|
|
224
|
+
binding[methodName] = (0, endpoint_1.makeEndpoint)(middleware, service, transportName, methodName, logger, cfg);
|
|
225
|
+
logger.debug(`endpoint ${methodName} bound to transport ${transportName}`);
|
|
225
226
|
}
|
|
226
|
-
|
|
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
|
+
}
|
|
227
235
|
}
|
|
228
236
|
/**
|
|
229
237
|
* start launches the server by starting transports and listening to events.
|
|
230
238
|
*/
|
|
231
|
-
start() {
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
this.emit('serving', this.transport);
|
|
241
|
-
});
|
|
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);
|
|
242
248
|
}
|
|
243
249
|
/**
|
|
244
250
|
* Shuts down all transport provider servers.
|
|
245
251
|
*/
|
|
246
|
-
stop() {
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
yield this.transport[name].end();
|
|
253
|
-
}
|
|
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();
|
|
254
258
|
}
|
|
255
|
-
|
|
256
|
-
|
|
259
|
+
}
|
|
260
|
+
this.emit('stopped', this.transport);
|
|
257
261
|
}
|
|
258
262
|
}
|
|
259
263
|
exports.Server = Server;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/microservice/server.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/microservice/server.ts"],"names":[],"mappings":"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"}
|