@restorecommerce/chassis-srv 0.3.12 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/CHANGELOG.md +5 -0
  2. package/lib/command-interface/index.d.ts +14 -13
  3. package/lib/command-interface/index.js +43 -65
  4. package/lib/command-interface/index.js.map +1 -1
  5. package/lib/database/index.d.ts +2 -1
  6. package/lib/database/index.js.map +1 -1
  7. package/lib/database/provider/arango/base.d.ts +1 -1
  8. package/lib/database/provider/arango/base.js.map +1 -1
  9. package/lib/database/provider/arango/graph.d.ts +3 -2
  10. package/lib/database/provider/arango/graph.js +4 -4
  11. package/lib/database/provider/arango/graph.js.map +1 -1
  12. package/lib/database/provider/arango/interface.d.ts +0 -65
  13. package/lib/database/provider/arango/interface.js +0 -43
  14. package/lib/database/provider/arango/interface.js.map +1 -1
  15. package/lib/database/provider/arango/utils.d.ts +1 -1
  16. package/lib/database/provider/arango/utils.js +7 -6
  17. package/lib/database/provider/arango/utils.js.map +1 -1
  18. package/lib/health/index.d.ts +5 -4
  19. package/lib/health/index.js +21 -38
  20. package/lib/health/index.js.map +1 -1
  21. package/lib/index.d.ts +6 -8
  22. package/lib/index.js +3 -6
  23. package/lib/index.js.map +1 -1
  24. package/lib/microservice/endpoint.d.ts +1 -16
  25. package/lib/microservice/endpoint.js +2 -214
  26. package/lib/microservice/endpoint.js.map +1 -1
  27. package/lib/microservice/server.d.ts +4 -3
  28. package/lib/microservice/server.js +8 -101
  29. package/lib/microservice/server.js.map +1 -1
  30. package/lib/microservice/transport/provider/grpc/index.d.ts +16 -11
  31. package/lib/microservice/transport/provider/grpc/index.js +20 -288
  32. package/lib/microservice/transport/provider/grpc/index.js.map +1 -1
  33. package/lib/microservice/transport/provider/grpc/middlewares.d.ts +7 -0
  34. package/lib/microservice/transport/provider/grpc/middlewares.js +55 -0
  35. package/lib/microservice/transport/provider/grpc/middlewares.js.map +1 -0
  36. package/lib/microservice/transport/provider/grpc/reflection.d.ts +7 -41
  37. package/lib/microservice/transport/provider/grpc/reflection.js +13 -519
  38. package/lib/microservice/transport/provider/grpc/reflection.js.map +1 -1
  39. package/package.json +22 -20
@@ -1,83 +1,7 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
2
  Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.makeEndpoint = exports.chainMiddleware = void 0;
27
- const _ = __importStar(require("lodash"));
28
- const rTracer = __importStar(require("cls-rtracer"));
29
- const service_config_1 = require("@restorecommerce/service-config");
30
- const middlewareClsTracer = rTracer.koaMiddleware({
31
- useHeader: true,
32
- headerName: 'x-request-id'
33
- });
34
- const cfg = (0, service_config_1.createServiceConfig)(process.cwd());
35
- const oneOfFieldsConfig = cfg.get('oneOfFields');
36
- /**
37
- * calls each middleware
38
- * @param middleware
39
- */
40
- const chainMiddleware = (middleware) => {
41
- return async (request, next) => {
42
- let n = next;
43
- if (next) {
44
- for (let i = middleware.length - 1; i >= 0; i -= 1) {
45
- const reqClone = _.clone(request);
46
- Object.assign(request, { req: reqClone }, { res: reqClone });
47
- const result = await middleware[i](request, async () => {
48
- const grpcRequest = { request: request.request };
49
- delete grpcRequest.request.headers;
50
- return await next(grpcRequest);
51
- });
52
- if (i == 0) {
53
- return result;
54
- }
55
- }
56
- }
57
- else {
58
- n = request;
59
- for (let i = middleware.length - 1; i >= 1; i -= 1) {
60
- n = await middleware[i](n);
61
- }
62
- }
63
- return await middleware[0](n);
64
- };
65
- };
66
- exports.chainMiddleware = chainMiddleware;
67
- // iterate iterates an object recursively
68
- // and deletes an object's property if
69
- // it matches the oneOfNotUsed field
70
- const iterate = (obj, oneOfNotUsed) => {
71
- Object.keys(obj).forEach(key => {
72
- if (key === oneOfNotUsed) {
73
- delete (obj[key]);
74
- }
75
- if (typeof obj[key] === 'object' && !_.isNil(obj[key])) {
76
- iterate(obj[key], oneOfNotUsed);
77
- }
78
- });
79
- };
80
- const removeBufferFileds = (object, ctx) => {
3
+ // TODO Re-implement
4
+ const removeBufferFields = (object, ctx) => {
81
5
  // Check if the cfg file contains any bufferFields and remove them
82
6
  if (!object) {
83
7
  object = {};
@@ -124,140 +48,4 @@ const removeBufferFileds = (object, ctx) => {
124
48
  }
125
49
  return object;
126
50
  };
127
- /**
128
- * Calls middleware and business logic.
129
- * @param middleware
130
- * @param service
131
- * @param transportName
132
- * @param methodName
133
- * @param logger
134
- * @param cfg
135
- */
136
- const makeEndpoint = (middleware, service, transportName, methodName, logger, cfg) => {
137
- return async (request, context) => {
138
- const ctx = context || {};
139
- ctx.transport = transportName;
140
- ctx.method = methodName;
141
- ctx.logger = logger;
142
- ctx.config = cfg;
143
- let e;
144
- let rid = '';
145
- let middlewareChain = [];
146
- if (middleware && middleware.length > 0) {
147
- middlewareChain.push(middleware);
148
- }
149
- // Check configuration if oneOf fields are configured for a resource
150
- // and then remove unnecessary oneOf fields from the request items to
151
- // avoid gRPC protobuf error.
152
- // To avoid accidental removal it is important
153
- // not to have fields which are named as one of the oneOf fields
154
- if (oneOfFieldsConfig && !_.isEmpty(oneOfFieldsConfig)) {
155
- if (ctx.method) {
156
- if (ctx.method === 'create' ||
157
- ctx.method === 'update' ||
158
- ctx.method === 'upsert') {
159
- // Read configuration for requested resource and make typeToFieldsMap
160
- // oneOfType => oneOfFields[]
161
- let oneOfFields = [];
162
- let typeToFieldsMap = new Map();
163
- if (service && service.name) {
164
- let name = service.name;
165
- if (name in oneOfFieldsConfig) {
166
- oneOfFields = oneOfFieldsConfig[name];
167
- let oneOfFieldsKeys = Object.keys(oneOfFields);
168
- for (let oneOfFieldsKey of oneOfFieldsKeys) {
169
- typeToFieldsMap.set(oneOfFieldsKey, oneOfFields[oneOfFieldsKey]);
170
- }
171
- }
172
- }
173
- // Iterate through all the items and for each item check which of the
174
- // oneOf fields is set (can be multiple oneOf fields).
175
- // Then push the ones not being used in a list.
176
- // Finally based on this list remove fields which are not used
177
- // (recursively) from each item.
178
- if (!_.isEmpty(typeToFieldsMap)) {
179
- if (request && request.request && request.request.items) {
180
- for (let item of request.request.items) {
181
- let oneOfNotUsedList = [];
182
- let itemKeys = Object.keys(item);
183
- for (let itemKey of itemKeys) {
184
- if (typeToFieldsMap.has(itemKey)) {
185
- let oneOfUsed = item[itemKey];
186
- let fieldsArr = typeToFieldsMap.get(itemKey);
187
- for (let field of fieldsArr) {
188
- if (field !== oneOfUsed) {
189
- oneOfNotUsedList.push(field);
190
- }
191
- }
192
- }
193
- }
194
- for (let oneOfNotUsed of oneOfNotUsedList) {
195
- iterate(item, oneOfNotUsed);
196
- }
197
- }
198
- }
199
- }
200
- }
201
- }
202
- }
203
- /*
204
- bufferFields are defined in the config under each service's method as:
205
- "bufferFields": {
206
- "Request": "context"
207
- }
208
-
209
- As described in the proto file of each service,
210
- Request is the type of message and context is the type of data being sent.
211
- */
212
- // deep clone the request
213
- const deepClone = _.cloneDeep(request);
214
- let Request = deepClone.request;
215
- try {
216
- if (Request && Request.request) {
217
- Request = Request.request;
218
- }
219
- Request = removeBufferFileds(Request, ctx);
220
- logger.debug('invoking endpoint with request:', Request);
221
- if (request && request.request && request.request.headers
222
- && request.request.headers['x-request-id']) {
223
- rid = request.request.headers['x-request-id'];
224
- }
225
- if (rid) {
226
- middlewareChain.push(middlewareClsTracer);
227
- }
228
- if (middlewareChain.length > 0) {
229
- logger.verbose(`[rid: ${rid}] received request to method ${ctx.method} over transport ${ctx.transport}`, Request);
230
- const chain = (0, exports.chainMiddleware)(middlewareChain);
231
- const result = await chain(request, service[methodName].bind(service));
232
- let response = _.cloneDeep(result);
233
- response = removeBufferFileds(response, ctx);
234
- logger.verbose(`[rid: ${rid}] request to method ${ctx.method} over transport ${ctx.transport} response`, { Request, response });
235
- return result;
236
- }
237
- else {
238
- e = service[methodName].bind(service);
239
- }
240
- logger.verbose(`received request to method ${ctx.method} over transport ${ctx.transport}`, Request);
241
- const result = await e(request, ctx);
242
- let response = _.cloneDeep(result);
243
- response = removeBufferFileds(response, ctx);
244
- logger.verbose(`request to method ${ctx.method} over transport ${ctx.transport} response`, { Request, response });
245
- return result;
246
- }
247
- catch (err) {
248
- if (rid) {
249
- rid = `[rid: ${rid}]`;
250
- }
251
- if (err instanceof SyntaxError || err instanceof RangeError ||
252
- err instanceof ReferenceError || err instanceof TypeError) {
253
- logger.error(`${rid} request to method ${ctx.method} over transport ${ctx.transport} error`, { message: err.message, stack: err.stack });
254
- }
255
- else {
256
- logger.info(`${rid} request to method ${ctx.method} over transport ${ctx.transport} error`, { message: err.message, stack: err.stack });
257
- }
258
- throw err;
259
- }
260
- };
261
- };
262
- exports.makeEndpoint = makeEndpoint;
263
51
  //# sourceMappingURL=endpoint.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"endpoint.js","sourceRoot":"","sources":["../../src/microservice/endpoint.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,0CAA4B;AAC5B,qDAAuC;AAEvC,oEAAsE;AAEtE,MAAM,mBAAmB,GAAG,OAAO,CAAC,aAAa,CAAC;IAChD,SAAS,EAAE,IAAI;IACf,UAAU,EAAE,cAAc;CAC3B,CAAC,CAAC;AAEH,MAAM,GAAG,GAAG,IAAA,oCAAmB,EAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;AAC/C,MAAM,iBAAiB,GAAG,GAAG,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;AAEjD;;;GAGG;AACI,MAAM,eAAe,GAAG,CAAC,UAAe,EAAO,EAAE;IACtD,OAAO,KAAK,EAAE,OAAO,EAAE,IAAS,EAAgB,EAAE;QAChD,IAAI,CAAC,GAAG,IAAI,CAAC;QACb,IAAI,IAAI,EAAE;YACR,KAAK,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;gBAClD,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBAClC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC;gBAC7D,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE;oBACrD,MAAM,WAAW,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC;oBACjD,OAAO,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC;oBACnC,OAAO,MAAM,IAAI,CAAC,WAAW,CAAC,CAAC;gBACjC,CAAC,CAAC,CAAC;gBACH,IAAI,CAAC,IAAI,CAAC,EAAE;oBACV,OAAO,MAAM,CAAC;iBACf;aACF;SACF;aAAM;YACL,CAAC,GAAG,OAAO,CAAC;YACZ,KAAK,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;gBAClD,CAAC,GAAG,MAAM,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;aAC5B;SACF;QACD,OAAO,MAAM,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAChC,CAAC,CAAC;AACJ,CAAC,CAAC;AAxBW,QAAA,eAAe,mBAwB1B;AAEF,yCAAyC;AACzC,sCAAsC;AACtC,oCAAoC;AACpC,MAAM,OAAO,GAAG,CAAC,GAAG,EAAE,YAAY,EAAE,EAAE;IACpC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;QAC7B,IAAI,GAAG,KAAK,YAAY,EAAE;YACxB,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;SACnB;QACD,IAAI,OAAO,GAAG,CAAC,GAAG,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE;YACtD,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,YAAY,CAAC,CAAC;SACjC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,kBAAkB,GAAG,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE;IACzC,kEAAkE;IAClE,IAAI,CAAC,MAAM,EAAE;QACX,MAAM,GAAG,EAAE,CAAC;KACb;IACD,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE;QACrC,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC;QACpC,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACtD,KAAK,IAAI,GAAG,IAAI,YAAY,EAAE;YAC5B,eAAe;YACf,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,YAAY,EAAE;gBACrF,IAAI,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC;gBACzD,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBAC7C,KAAK,IAAI,GAAG,IAAI,UAAU,EAAE;oBAC1B,MAAM,WAAW,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;oBACtC,8BAA8B;oBAC9B,mCAAmC;oBACnC,IAAI,MAAM,CAAC,WAAW,CAAC,EAAE;wBACvB,OAAO,MAAM,CAAC,WAAW,CAAC,CAAC;qBAC5B;oBACD,+BAA+B;oBAC/B,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;2BAC9B,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;wBACzB,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;qBAC7B;iBACF;aACF;YACD,aAAa;YACb,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE;gBACnF,IAAI,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC;gBACrD,KAAK,IAAI,SAAS,IAAI,UAAU,EAAE;oBAChC,0CAA0C;oBAC1C,IAAI,MAAM,CAAC,SAAS,CAAC,EAAE;wBACrB,MAAM,UAAU,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC;wBAC5C,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;qBAC5C;oBACD,+BAA+B;oBAC/B,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;2BAC9B,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;wBACzB,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;qBAC7B;iBACF;aACF;SACF;KACF;IACD,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF;;;;;;;;GAQG;AACI,MAAM,YAAY,GAAG,CAAC,UAAiB,EAAE,OAAY,EAAE,aAAqB,EACjF,UAAkB,EAAE,MAAc,EAAE,GAAS,EAAO,EAAE;IACtD,OAAO,KAAK,EAAE,OAAY,EAAE,OAAY,EAAgB,EAAE;QACxD,MAAM,GAAG,GAAG,OAAO,IAAI,EAAE,CAAC;QAC1B,GAAG,CAAC,SAAS,GAAG,aAAa,CAAC;QAC9B,GAAG,CAAC,MAAM,GAAG,UAAU,CAAC;QACxB,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC;QACpB,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC;QACjB,IAAI,CAAC,CAAC;QACN,IAAI,GAAG,GAAG,EAAE,CAAC;QACb,IAAI,eAAe,GAAG,EAAE,CAAC;QACzB,IAAI,UAAU,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;YACvC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;SAClC;QAED,oEAAoE;QACpE,qEAAqE;QACrE,6BAA6B;QAC7B,8CAA8C;QAC9C,gEAAgE;QAEhE,IAAI,iBAAiB,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE;YACtD,IAAI,GAAG,CAAC,MAAM,EAAE;gBACd,IACE,GAAG,CAAC,MAAM,KAAK,QAAQ;oBACvB,GAAG,CAAC,MAAM,KAAK,QAAQ;oBACvB,GAAG,CAAC,MAAM,KAAK,QAAQ,EACvB;oBACA,qEAAqE;oBACrE,6BAA6B;oBAC7B,IAAI,WAAW,GAAG,EAAE,CAAC;oBACrB,IAAI,eAAe,GAAG,IAAI,GAAG,EAAoB,CAAC;oBAClD,IAAI,OAAO,IAAI,OAAO,CAAC,IAAI,EAAE;wBAC3B,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;wBACxB,IAAI,IAAI,IAAI,iBAAiB,EAAE;4BAC7B,WAAW,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;4BACtC,IAAI,eAAe,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;4BAC/C,KAAK,IAAI,cAAc,IAAI,eAAe,EAAE;gCAC1C,eAAe,CAAC,GAAG,CAAC,cAAc,EAAE,WAAW,CAAC,cAAc,CAAC,CAAC,CAAC;6BAClE;yBACF;qBACF;oBAED,qEAAqE;oBACrE,sDAAsD;oBACtD,+CAA+C;oBAC/C,8DAA8D;oBAC9D,gCAAgC;oBAChC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE;wBAC/B,IAAI,OAAO,IAAI,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE;4BACvD,KAAK,IAAI,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE;gCACtC,IAAI,gBAAgB,GAAG,EAAE,CAAC;gCAC1B,IAAI,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gCACjC,KAAK,IAAI,OAAO,IAAI,QAAQ,EAAE;oCAC5B,IAAI,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;wCAChC,IAAI,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;wCAC9B,IAAI,SAAS,GAAG,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;wCAC7C,KAAK,IAAI,KAAK,IAAI,SAAS,EAAE;4CAC3B,IAAI,KAAK,KAAK,SAAS,EAAE;gDACvB,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;6CAC9B;yCACF;qCACF;iCACF;gCACD,KAAK,IAAI,YAAY,IAAI,gBAAgB,EAAE;oCACzC,OAAO,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;iCAC7B;6BACF;yBACF;qBACF;iBACF;aACF;SACF;QAED;;;;;;;;WAQG;QAEH,yBAAyB;QACzB,MAAM,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QACvC,IAAI,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC;QAChC,IAAI;YACF,IAAI,OAAO,IAAI,OAAO,CAAC,OAAO,EAAE;gBAC9B,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;aAC3B;YACD,OAAO,GAAG,kBAAkB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;YAC3C,MAAM,CAAC,KAAK,CAAC,iCAAiC,EAAE,OAAO,CAAC,CAAC;YACzD,IAAI,OAAO,IAAI,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,OAAO;mBACpD,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE;gBAC5C,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;aAC/C;YACD,IAAI,GAAG,EAAE;gBACP,eAAe,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;aAC3C;YAED,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC9B,MAAM,CAAC,OAAO,CAAC,SAAS,GAAG,gCAAgC,GAAG,CAAC,MAAM,mBAAmB,GAAG,CAAC,SAAS,EAAE,EAAE,OAAO,CAAC,CAAC;gBAClH,MAAM,KAAK,GAAG,IAAA,uBAAe,EAAC,eAAe,CAAC,CAAC;gBAC/C,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;gBACvE,IAAI,QAAQ,GAAG,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;gBACnC,QAAQ,GAAG,kBAAkB,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;gBAC7C,MAAM,CAAC,OAAO,CAAC,SAAS,GAAG,uBAAuB,GAAG,CAAC,MAAM,mBAAmB,GAAG,CAAC,SAAS,WAAW,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;gBAChI,OAAO,MAAM,CAAC;aACf;iBAAM;gBACL,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;aACvC;YAED,MAAM,CAAC,OAAO,CAAC,8BAA8B,GAAG,CAAC,MAAM,mBAAmB,GAAG,CAAC,SAAS,EAAE,EACvF,OAAO,CAAC,CAAC;YACX,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;YACrC,IAAI,QAAQ,GAAG,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YACnC,QAAQ,GAAG,kBAAkB,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;YAC7C,MAAM,CAAC,OAAO,CAAC,qBAAqB,GAAG,CAAC,MAAM,mBAAmB,GAAG,CAAC,SAAS,WAAW,EACvF,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;YACzB,OAAO,MAAM,CAAC;SACf;QAAC,OAAO,GAAG,EAAE;YACZ,IAAI,GAAG,EAAE;gBACP,GAAG,GAAG,SAAS,GAAG,GAAG,CAAC;aACvB;YACD,IAAI,GAAG,YAAY,WAAW,IAAI,GAAG,YAAY,UAAU;gBACzD,GAAG,YAAY,cAAc,IAAI,GAAG,YAAY,SAAS,EAAE;gBAC3D,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,sBAAsB,GAAG,CAAC,MAAM,mBAAmB,GAAG,CAAC,SAAS,QAAQ,EAAE,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;aAC1I;iBAAM;gBACL,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,sBAAsB,GAAG,CAAC,MAAM,mBAAmB,GAAG,CAAC,SAAS,QAAQ,EAAE,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;aACzI;YACD,MAAM,GAAG,CAAC;SACX;IACH,CAAC,CAAC;AACJ,CAAC,CAAC;AAtIW,QAAA,YAAY,gBAsIvB"}
1
+ {"version":3,"file":"endpoint.js","sourceRoot":"","sources":["../../src/microservice/endpoint.ts"],"names":[],"mappings":";;AAAA,oBAAoB;AACpB,MAAM,kBAAkB,GAAG,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE;IACzC,kEAAkE;IAClE,IAAI,CAAC,MAAM,EAAE;QACX,MAAM,GAAG,EAAE,CAAC;KACb;IACD,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE;QACrC,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC;QACpC,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACtD,KAAK,IAAI,GAAG,IAAI,YAAY,EAAE;YAC5B,eAAe;YACf,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,YAAY,EAAE;gBACrF,IAAI,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC;gBACzD,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBAC7C,KAAK,IAAI,GAAG,IAAI,UAAU,EAAE;oBAC1B,MAAM,WAAW,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;oBACtC,8BAA8B;oBAC9B,mCAAmC;oBACnC,IAAI,MAAM,CAAC,WAAW,CAAC,EAAE;wBACvB,OAAO,MAAM,CAAC,WAAW,CAAC,CAAC;qBAC5B;oBACD,+BAA+B;oBAC/B,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;2BAC9B,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;wBACzB,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;qBAC7B;iBACF;aACF;YACD,aAAa;YACb,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE;gBACnF,IAAI,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC;gBACrD,KAAK,IAAI,SAAS,IAAI,UAAU,EAAE;oBAChC,0CAA0C;oBAC1C,IAAI,MAAM,CAAC,SAAS,CAAC,EAAE;wBACrB,MAAM,UAAU,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC;wBAC5C,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;qBAC5C;oBACD,+BAA+B;oBAC/B,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;2BAC9B,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;wBACzB,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;qBAC7B;iBACF;aACF;SACF;KACF;IACD,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC"}
@@ -1,6 +1,7 @@
1
1
  /// <reference types="node" />
2
2
  import { Logger } from 'winston';
3
3
  import { EventEmitter } from 'events';
4
+ import { BindConfig } from './transport/provider/grpc';
4
5
  /**
5
6
  * register transport provider
6
7
  *
@@ -25,14 +26,14 @@ export declare class Server extends EventEmitter {
25
26
  * @param {object} config Server config.
26
27
  * @param {Logger} logger
27
28
  */
28
- constructor(config?: any, logger?: Logger, middleware?: any);
29
+ constructor(config?: any, logger?: Logger);
29
30
  /**
30
31
  * bind connects the service to configured transports.
31
32
  *
32
33
  * @param {string} name Service name.
33
- * @param {object} service A business logic service.
34
+ * @param {BindConfig} bindConfig A business logic service.
34
35
  */
35
- bind(name: string, service: any): Promise<any>;
36
+ bind(name: string, bindConfig: BindConfig<any>): Promise<void>;
36
37
  /**
37
38
  * start launches the server by starting transports and listening to events.
38
39
  */
@@ -24,7 +24,6 @@ var __importStar = (this && this.__importStar) || function (mod) {
24
24
  };
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
26
  exports.Server = exports.registerTransport = void 0;
27
- const endpoint_1 = require("./endpoint");
28
27
  const logger_1 = require("@restorecommerce/logger");
29
28
  const _ = __importStar(require("lodash"));
30
29
  const events_1 = require("events");
@@ -84,7 +83,7 @@ class Server extends events_1.EventEmitter {
84
83
  * @param {object} config Server config.
85
84
  * @param {Logger} logger
86
85
  */
87
- constructor(config, logger, middleware) {
86
+ constructor(config, logger) {
88
87
  super();
89
88
  if (_.isNil(config)) {
90
89
  throw new Error('mising argument config');
@@ -109,24 +108,6 @@ class Server extends events_1.EventEmitter {
109
108
  }
110
109
  // services
111
110
  this.logger.debug('setting up service endpoints');
112
- if (!this.config.services || !this.config.transports) {
113
- if (this.config.events) {
114
- if (this.config.transports) {
115
- this.logger.warn('missing endpoints configuration');
116
- }
117
- if (this.config.services) {
118
- this.logger.warn('missing services configuration');
119
- }
120
- return;
121
- }
122
- if (this.config.transports && this.config.transports.length > 0) {
123
- throw new Error('missing services configuration');
124
- }
125
- if (this.config.services) {
126
- throw new Error('missing transports configuration');
127
- }
128
- throw new Error('missing server configuration');
129
- }
130
111
  // transports
131
112
  this.logger.debug('setting up transports');
132
113
  try {
@@ -136,105 +117,31 @@ class Server extends events_1.EventEmitter {
136
117
  this.logger.error('setupTransports', { code: error.code, message: error.message, stack: error.stack });
137
118
  throw error;
138
119
  }
139
- /**
140
- * Requests will traverse the middlewares in the order they're declared.
141
- * That is, the first middleware is called first.
142
- *
143
- * @type {Array.<generator>}
144
- */
145
- if (!middleware) {
146
- this.middleware = [];
147
- }
148
- else {
149
- this.middleware = middleware;
150
- }
151
120
  }
152
121
  /**
153
122
  * bind connects the service to configured transports.
154
123
  *
155
124
  * @param {string} name Service name.
156
- * @param {object} service A business logic service.
125
+ * @param {BindConfig} bindConfig A business logic service.
157
126
  */
158
- async bind(name, service) {
127
+ async bind(name, bindConfig) {
159
128
  if (_.isNil(name)) {
160
129
  throw new Error('missing argument name');
161
130
  }
162
131
  if (!_.isString(name)) {
163
132
  throw new Error('argument name is not of type string');
164
133
  }
165
- if (_.isNil(service)) {
166
- throw new Error('missing argument service');
167
- }
168
- const serviceCfg = this.config.services[name];
169
- if (!serviceCfg) {
170
- throw new Error(`configuration for ${name} does not exist`);
134
+ if (_.isNil(bindConfig)) {
135
+ throw new Error('missing argument bindConfig');
171
136
  }
137
+ this.logger.debug('binding endpoints to transports');
172
138
  const transportNames = Object.keys(this.transport);
173
- // endpoints
174
- const logger = this.logger;
175
- const endpoints = {};
176
- Object.keys(serviceCfg).forEach((endpointName) => {
177
- const endpointCfg = serviceCfg[endpointName];
178
- if (_.isNil(endpointCfg)) {
179
- logger.error(`configuration for service
180
- ${name} endpoint ${endpointName} does not exist`);
181
- return;
182
- }
183
- for (let i = 0; i < endpointCfg.transport.length; i += 1) {
184
- const transportName = endpointCfg.transport[i];
185
- if (!endpoints[transportName]) {
186
- endpoints[transportName] = [];
187
- }
188
- if (!_.includes(transportNames, transportName)) {
189
- logger.warn(`transport ${transportName} does not exist`, {
190
- service: name,
191
- method: endpointName,
192
- });
193
- continue;
194
- }
195
- endpoints[transportName].push(endpointName);
196
- }
197
- });
198
- logger.debug('endpoints', endpoints);
199
- logger.debug('binding endpoints to transports');
200
- const middleware = this.middleware;
201
139
  const transport = this.transport;
202
- const cfg = this.config;
203
140
  for (let i = 0; i < transportNames.length; i += 1) {
204
141
  const transportName = transportNames[i];
205
142
  const provider = transport[transportName];
206
- const methodNames = endpoints[transportName];
207
- if (!methodNames) {
208
- logger.verbose(`transport ${transportName} does not have any endpoints configured`);
209
- continue;
210
- }
211
- const binding = {};
212
- for (let j = 0; j < methodNames.length; j += 1) {
213
- const methodName = methodNames[j];
214
- if (!_.isFunction(service[methodName])) {
215
- logger.warn(`endpoint ${methodName} does not have matching service method`);
216
- continue;
217
- }
218
- const methodCfg = serviceCfg[methodName];
219
- if (_.isNil(methodCfg)) {
220
- logger.error(`endpoint ${name}.${methodName} does not have configuration`);
221
- continue;
222
- }
223
- if (!_.includes(methodCfg.transport, transportName)) {
224
- logger.error(`endpoint ${name}.${methodName}
225
- is not configured for transport ${transportName}, skipping endpoint binding`);
226
- continue;
227
- }
228
- binding[methodName] = (0, endpoint_1.makeEndpoint)(middleware, service, transportName, methodName, logger, cfg);
229
- logger.debug(`endpoint ${methodName} bound to transport ${transportName}`);
230
- }
231
- if (_.size(_.functions(binding)) === 0) {
232
- logger.verbose(`service ${name} has no endpoints configured
233
- for transport ${transportName}, skipping service binding`);
234
- continue;
235
- }
236
- await provider.bind(name, binding);
237
- this.emit('bound', name, binding, provider);
143
+ await provider.bind(bindConfig);
144
+ this.emit('bound', name, bindConfig, provider);
238
145
  }
239
146
  }
240
147
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/microservice/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/microservice/server.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,15 @@
1
- import * as grpc from '@grpc/grpc-js';
2
1
  import { Logger } from 'winston';
2
+ import type { Server as GRPCServer, ServiceImplementation } from 'nice-grpc';
3
+ import type { CompatServiceDefinition } from 'nice-grpc/lib/service-definitions';
4
+ import { WithRequestID } from './middlewares';
5
+ /**
6
+ * Name of the transport
7
+ */
8
+ export declare const NAME = "grpc";
9
+ export interface BindConfig<Service extends CompatServiceDefinition> {
10
+ service: Service;
11
+ implementation: ServiceImplementation<Service>;
12
+ }
3
13
  /**
4
14
  * Server transport provider.
5
15
  * @class
@@ -7,27 +17,24 @@ import { Logger } from 'winston';
7
17
  export declare class Server {
8
18
  config: any;
9
19
  logger: Logger;
10
- server: grpc.Server;
11
- builder: any;
12
- proto: any;
13
- service: any;
20
+ server: GRPCServer<WithRequestID>;
14
21
  name: string;
15
22
  isBound: boolean;
16
23
  /**
17
24
  * Server is a gRPC transport provider for serving.
18
25
  *
19
26
  * @param {Object} config Configuration object.
20
- * Requires properties:addr,package,proto,service
27
+ * Requires properties: addr
21
28
  * Optional properties: credentials.ssl.certs
29
+ * @param {Logger} logger Logger.
22
30
  */
23
31
  constructor(config: any, logger: Logger);
24
32
  /**
25
33
  * bind maps the service to gRPC methods and binds the address.
26
34
  *
27
- * @param {string} name Service name.
28
- * @param {Object} service Business logic
35
+ * @param {BindConfig} config Service bind config.
29
36
  */
30
- bind(name: string, service: Object): void;
37
+ bind(config: BindConfig<any>): void;
31
38
  /**
32
39
  * start launches the gRPC server and provides the service endpoints.
33
40
  */
@@ -37,5 +44,3 @@ export declare class Server {
37
44
  */
38
45
  end(): Promise<any>;
39
46
  }
40
- import { ServerReflection } from './reflection';
41
- export { ServerReflection };