@conduitplatform/module-tools 0.16.0-alpha.9 → 0.16.0-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. package/dist/ManagedModule.d.ts +1 -0
  2. package/dist/ManagedModule.js +153 -358
  3. package/dist/ManagedModule.js.map +1 -1
  4. package/dist/classes/ConduitActiveSchema.d.ts +12 -9
  5. package/dist/classes/ConduitActiveSchema.js +43 -52
  6. package/dist/classes/ConduitActiveSchema.js.map +1 -1
  7. package/dist/classes/ConduitServiceModule.d.ts +2 -0
  8. package/dist/classes/ConduitServiceModule.js +65 -112
  9. package/dist/classes/ConduitServiceModule.js.map +1 -1
  10. package/dist/classes/ConfigController.js +10 -17
  11. package/dist/classes/ConfigController.js.map +1 -1
  12. package/dist/classes/GrpcServer.d.ts +1 -0
  13. package/dist/classes/GrpcServer.js +93 -172
  14. package/dist/classes/GrpcServer.js.map +1 -1
  15. package/dist/helpers/GrpcHelper.js +11 -11
  16. package/dist/helpers/GrpcHelper.js.map +1 -1
  17. package/dist/helpers/GrpcToParsedRouterRequest.d.ts +2 -0
  18. package/dist/helpers/GrpcToParsedRouterRequest.js +19 -0
  19. package/dist/helpers/GrpcToParsedRouterRequest.js.map +1 -0
  20. package/dist/helpers/TypeHelpers.js +57 -119
  21. package/dist/helpers/TypeHelpers.js.map +1 -1
  22. package/dist/helpers/index.d.ts +1 -0
  23. package/dist/helpers/index.js +1 -0
  24. package/dist/helpers/index.js.map +1 -1
  25. package/dist/helpers/wrapGrpcFunctions.js +14 -15
  26. package/dist/helpers/wrapGrpcFunctions.js.map +1 -1
  27. package/dist/interfaces/ModuleLifecycleStage.d.ts +7 -0
  28. package/dist/interfaces/ModuleLifecycleStage.js +12 -0
  29. package/dist/interfaces/ModuleLifecycleStage.js.map +1 -0
  30. package/dist/logging/index.js +80 -180
  31. package/dist/logging/index.js.map +1 -1
  32. package/dist/metrics/MetricsServer.d.ts +2 -1
  33. package/dist/metrics/MetricsServer.js +25 -70
  34. package/dist/metrics/MetricsServer.js.map +1 -1
  35. package/dist/metrics/clientMiddleware.js +76 -217
  36. package/dist/metrics/clientMiddleware.js.map +1 -1
  37. package/dist/metrics/config/defaults.js +1 -1
  38. package/dist/metrics/config/defaults.js.map +1 -1
  39. package/dist/metrics/index.js +53 -89
  40. package/dist/metrics/index.js.map +1 -1
  41. package/dist/module.proto +58 -0
  42. package/dist/routing/ProxyRouteBuilder.js +21 -24
  43. package/dist/routing/ProxyRouteBuilder.js.map +1 -1
  44. package/dist/routing/RouteBuilder.js +31 -34
  45. package/dist/routing/RouteBuilder.js.map +1 -1
  46. package/dist/routing/RoutingController.d.ts +8 -0
  47. package/dist/routing/RoutingController.js +25 -0
  48. package/dist/routing/RoutingController.js.map +1 -0
  49. package/dist/routing/RoutingManager.d.ts +5 -2
  50. package/dist/routing/RoutingManager.js +61 -115
  51. package/dist/routing/RoutingManager.js.map +1 -1
  52. package/dist/routing/RoutingUtilities.js +3 -3
  53. package/dist/routing/RoutingUtilities.js.map +1 -1
  54. package/dist/routing/wrapRouterFunctions.d.ts +5 -5
  55. package/dist/routing/wrapRouterFunctions.js +30 -39
  56. package/dist/routing/wrapRouterFunctions.js.map +1 -1
  57. package/dist/utilities/convictConfigParser.js +2 -2
  58. package/dist/utilities/convictConfigParser.js.map +1 -1
  59. package/dist/utilities/initializeSdk.js +9 -11
  60. package/dist/utilities/initializeSdk.js.map +1 -1
  61. package/dist/utilities/linearBackoffTimeout.d.ts +1 -1
  62. package/dist/utilities/linearBackoffTimeout.js +35 -92
  63. package/dist/utilities/linearBackoffTimeout.js.map +1 -1
  64. package/dist/utilities/merge.js +2 -2
  65. package/dist/utilities/merge.js.map +1 -1
  66. package/package.json +19 -20
@@ -10,6 +10,7 @@ export declare abstract class ManagedModule<T> extends ConduitServiceModule {
10
10
  protected abstract readonly metricsSchema?: object;
11
11
  private readonly serviceAddress;
12
12
  private readonly servicePort;
13
+ private _moduleState;
13
14
  protected constructor(moduleName: string);
14
15
  get name(): string;
15
16
  get address(): string;
@@ -1,209 +1,111 @@
1
1
  "use strict";
2
- var __extends = (this && this.__extends) || (function () {
3
- var extendStatics = function (d, b) {
4
- extendStatics = Object.setPrototypeOf ||
5
- ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
- function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
7
- return extendStatics(d, b);
8
- };
9
- return function (d, b) {
10
- if (typeof b !== "function" && b !== null)
11
- throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
12
- extendStatics(d, b);
13
- function __() { this.constructor = d; }
14
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15
- };
16
- })();
17
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
18
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
19
- return new (P || (P = Promise))(function (resolve, reject) {
20
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
21
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
22
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
23
- step((generator = generator.apply(thisArg, _arguments || [])).next());
24
- });
25
- };
26
- var __generator = (this && this.__generator) || function (thisArg, body) {
27
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
28
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
29
- function verb(n) { return function (v) { return step([n, v]); }; }
30
- function step(op) {
31
- if (f) throw new TypeError("Generator is already executing.");
32
- while (_) try {
33
- 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;
34
- if (y = 0, t) op = [op[0] & 2, t.value];
35
- switch (op[0]) {
36
- case 0: case 1: t = op; break;
37
- case 4: _.label++; return { value: op[1], done: false };
38
- case 5: _.label++; y = op[1]; op = [0]; continue;
39
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
40
- default:
41
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
42
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
43
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
44
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
45
- if (t[2]) _.ops.pop();
46
- _.trys.pop(); continue;
47
- }
48
- op = body.call(thisArg, _);
49
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
50
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
51
- }
52
- };
53
2
  var __importDefault = (this && this.__importDefault) || function (mod) {
54
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
55
4
  };
56
5
  Object.defineProperty(exports, "__esModule", { value: true });
57
6
  exports.ManagedModule = void 0;
58
- var classes_1 = require("./classes");
59
- var lodash_1 = require("lodash");
60
- var grpc_js_1 = require("@grpc/grpc-js");
61
- var convict_1 = __importDefault(require("convict"));
62
- var grpc_sdk_1 = __importDefault(require("@conduitplatform/grpc-sdk"));
63
- var utilities_1 = require("./utilities");
64
- var convictConfigParser_1 = require("./utilities/convictConfigParser");
65
- var initializeSdk_1 = require("./utilities/initializeSdk");
66
- var ManagedModule = /** @class */ (function (_super) {
67
- __extends(ManagedModule, _super);
68
- function ManagedModule(moduleName) {
69
- var _this = this;
7
+ const classes_1 = require("./classes");
8
+ const lodash_1 = require("lodash");
9
+ const grpc_js_1 = require("@grpc/grpc-js");
10
+ const convict_1 = __importDefault(require("convict"));
11
+ const grpc_sdk_1 = __importDefault(require("@conduitplatform/grpc-sdk"));
12
+ const utilities_1 = require("./utilities");
13
+ const convictConfigParser_1 = require("./utilities/convictConfigParser");
14
+ const routing_1 = require("./routing");
15
+ const RoutingController_1 = require("./routing/RoutingController");
16
+ const ModuleLifecycleStage_1 = require("./interfaces/ModuleLifecycleStage");
17
+ class ManagedModule extends classes_1.ConduitServiceModule {
18
+ constructor(moduleName) {
70
19
  var _a;
71
- _this = _super.call(this, moduleName) || this;
72
- _this.configOverride = false;
20
+ super(moduleName);
21
+ this.configOverride = false;
22
+ this._moduleState = ModuleLifecycleStage_1.ModuleLifecycleStage.CREATE_GRPC;
73
23
  if (!process.env.CONDUIT_SERVER) {
74
24
  throw new Error('CONDUIT_SERVER is undefined, specify Conduit server URL');
75
25
  }
76
- _this.servicePort = (_a = process.env.GRPC_PORT) !== null && _a !== void 0 ? _a : '5000';
77
- _this.serviceAddress =
26
+ this.servicePort = (_a = process.env.GRPC_PORT) !== null && _a !== void 0 ? _a : '5000';
27
+ this.serviceAddress =
78
28
  // @compat (v0.15): SERVICE_IP -> SERVICE_URL
79
- process.env.SERVICE_URL || process.env.SERVICE_IP || '0.0.0.0:' + _this.servicePort;
29
+ process.env.SERVICE_URL || process.env.SERVICE_IP || '0.0.0.0:' + this.servicePort;
80
30
  try {
81
- _this.grpcSdk = (0, initializeSdk_1.initializeSdk)(process.env.CONDUIT_SERVER, _this.name, true, function () {
82
- return _this.healthState;
31
+ this.grpcSdk = (0, utilities_1.initializeSdk)(process.env.CONDUIT_SERVER, this.name, true, () => {
32
+ return this.healthState;
83
33
  });
84
34
  }
85
35
  catch (e) {
86
36
  throw new Error('Failed to initialize grpcSdk');
87
37
  }
88
- return _this;
89
38
  }
90
- Object.defineProperty(ManagedModule.prototype, "name", {
91
- get: function () {
92
- return this._moduleName;
93
- },
94
- enumerable: false,
95
- configurable: true
96
- });
97
- Object.defineProperty(ManagedModule.prototype, "address", {
98
- get: function () {
99
- return this._address;
100
- },
101
- enumerable: false,
102
- configurable: true
103
- });
104
- ManagedModule.prototype.start = function () {
105
- return __awaiter(this, void 0, void 0, function () {
106
- var err_1;
107
- return __generator(this, function (_a) {
108
- switch (_a.label) {
109
- case 0: return [4 /*yield*/, this.grpcSdk.initialize()];
110
- case 1:
111
- _a.sent();
112
- this.initialize(this.serviceAddress, this.servicePort);
113
- _a.label = 2;
114
- case 2:
115
- _a.trys.push([2, 5, , 6]);
116
- return [4 /*yield*/, this.preRegisterLifecycle()];
117
- case 3:
118
- _a.sent();
119
- return [4 /*yield*/, this.grpcSdk.config.registerModule(this.name, this.address, this.healthState)];
120
- case 4:
121
- _a.sent();
122
- return [3 /*break*/, 6];
123
- case 5:
124
- err_1 = _a.sent();
125
- grpc_sdk_1.default.Logger.error('Failed to initialize server');
126
- grpc_sdk_1.default.Logger.error(err_1);
127
- process.exit(-1);
128
- return [3 /*break*/, 6];
129
- case 6: return [4 /*yield*/, this.postRegisterLifecycle().catch(function (err) {
130
- grpc_sdk_1.default.Logger.error('Failed to activate module');
131
- grpc_sdk_1.default.Logger.error(err);
132
- process.exit(-1);
133
- })];
134
- case 7:
135
- _a.sent();
136
- return [2 /*return*/];
137
- }
138
- });
39
+ get name() {
40
+ return this._moduleName;
41
+ }
42
+ get address() {
43
+ return this._address;
44
+ }
45
+ async start() {
46
+ await this.grpcSdk.initialize();
47
+ this.initialize(this.serviceAddress, this.servicePort);
48
+ try {
49
+ await this.preRegisterLifecycle();
50
+ await this.grpcSdk.config.registerModule(this.name, this.address, this.healthState);
51
+ }
52
+ catch (err) {
53
+ grpc_sdk_1.default.Logger.error('Failed to initialize server');
54
+ grpc_sdk_1.default.Logger.error(err);
55
+ process.exit(-1);
56
+ }
57
+ await this.postRegisterLifecycle().catch((err) => {
58
+ grpc_sdk_1.default.Logger.error('Failed to activate module');
59
+ grpc_sdk_1.default.Logger.error(err);
60
+ process.exit(-1);
139
61
  });
140
- };
62
+ }
141
63
  /**
142
64
  * This is the first function triggered on module spin up.
143
65
  * @param address {string} external address:port of service (LoadBalancer)
144
66
  * @param port {string} port to bring up gRPC service
145
67
  */
146
- ManagedModule.prototype.initialize = function (address, port) {
68
+ initialize(address, port) {
147
69
  this._address = address;
148
70
  this._port = port;
149
71
  if (this.configSchema) {
150
72
  this.config = (0, convict_1.default)(this.configSchema);
151
73
  }
152
- };
74
+ }
153
75
  /**
154
76
  * This is triggered before spinning up the Grpc Server
155
77
  * of the module. On this stage, the redis bus and state have
156
78
  * not yet been initialized, and only communications with Conduit core
157
79
  * have been established.
158
80
  */
159
- ManagedModule.prototype.preServerStart = function () {
160
- return __awaiter(this, void 0, void 0, function () { return __generator(this, function (_a) {
161
- return [2 /*return*/];
162
- }); });
163
- };
81
+ async preServerStart() { }
164
82
  /**
165
83
  * This is triggered right after Grpc Server start.
166
84
  * At this stage the core module will communicate with your service
167
85
  * for health checks, and the Bus and State management mechanics
168
86
  * are online and available.
169
87
  */
170
- ManagedModule.prototype.onServerStart = function () {
171
- return __awaiter(this, void 0, void 0, function () { return __generator(this, function (_a) {
172
- return [2 /*return*/];
173
- }); });
174
- };
88
+ async onServerStart() { }
175
89
  /**
176
90
  * Triggers right before registering the module with Conduit Core.
177
91
  */
178
- ManagedModule.prototype.preRegister = function () {
179
- return __awaiter(this, void 0, void 0, function () { return __generator(this, function (_a) {
180
- return [2 /*return*/];
181
- }); });
182
- };
92
+ async preRegister() { }
183
93
  /**
184
94
  * Triggers when module has been registered with Conduit Core
185
95
  * This is the step where you should initialize your
186
96
  * module's general routing (admin or client) and any other operation,
187
97
  * that would require other modules being able to reach you
188
98
  */
189
- ManagedModule.prototype.onRegister = function () {
190
- return __awaiter(this, void 0, void 0, function () { return __generator(this, function (_a) {
191
- return [2 /*return*/];
192
- }); });
193
- };
99
+ async onRegister() { }
194
100
  /**
195
101
  * This is triggered when the module receives new configuration.
196
102
  * At this step the configuration has not been checked yet,
197
103
  * and has only been parsed.
198
104
  * @param config
199
105
  */
200
- ManagedModule.prototype.preConfig = function (config) {
201
- return __awaiter(this, void 0, void 0, function () {
202
- return __generator(this, function (_a) {
203
- return [2 /*return*/, config];
204
- });
205
- });
206
- };
106
+ async preConfig(config) {
107
+ return config;
108
+ }
207
109
  /**
208
110
  * This is triggered when new configuration has been applied.
209
111
  * This happens either when changes are being made on the configuration,
@@ -211,223 +113,116 @@ var ManagedModule = /** @class */ (function (_super) {
211
113
  * In either case the configuration is now available through the
212
114
  * Config Controller of the sdk.
213
115
  */
214
- ManagedModule.prototype.onConfig = function () {
215
- return __awaiter(this, void 0, void 0, function () { return __generator(this, function (_a) {
216
- return [2 /*return*/];
217
- }); });
218
- };
116
+ async onConfig() { }
219
117
  /**
220
118
  * Registers common and module-specific metric types.
221
119
  */
222
- ManagedModule.prototype.registerMetrics = function () {
223
- return __awaiter(this, void 0, void 0, function () {
224
- return __generator(this, function (_a) {
225
- if (grpc_sdk_1.default.Metrics) {
226
- grpc_sdk_1.default.Metrics.initializeDefaultMetrics();
227
- if (this.metricsSchema) {
228
- Object.values(this.metricsSchema).forEach(function (metric) {
229
- grpc_sdk_1.default.Metrics.registerMetric(metric.type, metric.config);
230
- });
231
- }
232
- }
233
- return [2 /*return*/];
234
- });
235
- });
236
- };
120
+ async registerMetrics() {
121
+ if (grpc_sdk_1.default.Metrics) {
122
+ grpc_sdk_1.default.Metrics.initializeDefaultMetrics();
123
+ if (this.metricsSchema) {
124
+ Object.values(this.metricsSchema).forEach(metric => {
125
+ grpc_sdk_1.default.Metrics.registerMetric(metric.type, metric.config);
126
+ });
127
+ }
128
+ }
129
+ }
237
130
  /**
238
131
  * Initializes metric startup values.
239
132
  * Implemented by individual modules.
240
133
  */
241
- ManagedModule.prototype.initializeMetrics = function () {
242
- return __awaiter(this, void 0, void 0, function () { return __generator(this, function (_a) {
243
- return [2 /*return*/];
244
- }); });
245
- };
246
- ManagedModule.prototype.createGrpcServer = function () {
247
- return __awaiter(this, void 0, void 0, function () {
248
- var _a;
249
- return __generator(this, function (_b) {
250
- switch (_b.label) {
251
- case 0:
252
- this.grpcServer = new classes_1.GrpcServer(this._port);
253
- _a = this;
254
- return [4 /*yield*/, this.grpcServer.createNewServer()];
255
- case 1:
256
- _a._port = (_b.sent()).toString();
257
- return [2 /*return*/];
258
- }
259
- });
260
- });
261
- };
262
- ManagedModule.prototype.startGrpcServer = function () {
263
- return __awaiter(this, void 0, void 0, function () {
264
- return __generator(this, function (_a) {
265
- switch (_a.label) {
266
- case 0:
267
- if (!this.service) return [3 /*break*/, 2];
268
- this._serviceName = this.service.protoDescription.substring(this.service.protoDescription.indexOf('.') + 1);
269
- return [4 /*yield*/, this.grpcServer.addService(this.service.protoPath, this.service.protoDescription, this.service.functions)];
270
- case 1:
271
- _a.sent();
272
- _a.label = 2;
273
- case 2: return [4 /*yield*/, this.addHealthCheckService()];
274
- case 3:
275
- _a.sent();
276
- return [4 /*yield*/, this.addModuleService()];
277
- case 4:
278
- _a.sent();
279
- return [4 /*yield*/, this.grpcServer.start()];
280
- case 5:
281
- _a.sent();
282
- grpc_sdk_1.default.Logger.log('gRPC server listening on ' + this._port);
283
- return [2 /*return*/];
284
- }
285
- });
286
- });
287
- };
288
- ManagedModule.prototype.setConfig = function (call, callback) {
134
+ async initializeMetrics() { }
135
+ async createGrpcServer() {
136
+ this.grpcServer = new classes_1.GrpcServer(this._port);
137
+ this._port = (await this.grpcServer.createNewServer()).toString();
138
+ }
139
+ async startGrpcServer() {
140
+ if (this.service) {
141
+ this._serviceName = this.service.protoDescription.substring(this.service.protoDescription.indexOf('.') + 1);
142
+ await this.grpcServer.addService(this.service.protoPath, this.service.protoDescription, this.service.functions);
143
+ }
144
+ routing_1.RoutingManager.ClientController = new RoutingController_1.RoutingController();
145
+ routing_1.RoutingManager.AdminController = new RoutingController_1.RoutingController();
146
+ await this.addHealthCheckService();
147
+ await this.addModuleService();
148
+ await this.grpcServer.start();
149
+ grpc_sdk_1.default.Logger.log('gRPC server listening on ' + this._port);
150
+ }
151
+ async setConfig(call, callback) {
289
152
  var _a;
290
- return __awaiter(this, void 0, void 0, function () {
291
- var config, previousConfig, e_1;
292
- return __generator(this, function (_b) {
293
- switch (_b.label) {
294
- case 0:
295
- _b.trys.push([0, 3, , 4]);
296
- if (!this.config) {
297
- return [2 /*return*/, callback({
298
- code: grpc_js_1.status.INVALID_ARGUMENT,
299
- message: 'Module is not configurable',
300
- })];
301
- }
302
- config = JSON.parse(call.request.newConfig);
303
- config = (0, utilities_1.merge)(this.config.getProperties(), config);
304
- return [4 /*yield*/, this.preConfig(config)];
305
- case 1:
306
- config = _b.sent();
307
- previousConfig = this.config.getProperties();
308
- try {
309
- this.config.load(config).validate({
310
- allowed: 'warn',
311
- });
312
- config = this.config.getProperties();
313
- callback(null, { updatedConfig: JSON.stringify(config) });
314
- }
315
- catch (e) {
316
- this.config = (0, convict_1.default)(this.configSchema);
317
- this.config.load(previousConfig);
318
- return [2 /*return*/, callback({
319
- code: grpc_js_1.status.INVALID_ARGUMENT,
320
- message: 'Invalid configuration values: ' + e.message,
321
- })];
322
- }
323
- classes_1.ConfigController.getInstance().config = config;
324
- return [4 /*yield*/, this.onConfig()];
325
- case 2:
326
- _b.sent();
327
- (_a = this.grpcSdk.bus) === null || _a === void 0 ? void 0 : _a.publish((0, lodash_1.kebabCase)(this.name) + ':config:update', JSON.stringify(config));
328
- return [3 /*break*/, 4];
329
- case 3:
330
- e_1 = _b.sent();
331
- return [2 /*return*/, callback({ code: grpc_js_1.status.INTERNAL, message: e_1.message })];
332
- case 4: return [2 /*return*/];
333
- }
334
- });
335
- });
336
- };
153
+ try {
154
+ if (!this.config) {
155
+ return callback({
156
+ code: grpc_js_1.status.INVALID_ARGUMENT,
157
+ message: 'Module is not configurable',
158
+ });
159
+ }
160
+ let config = JSON.parse(call.request.newConfig);
161
+ config = (0, utilities_1.merge)(this.config.getProperties(), config);
162
+ config = await this.preConfig(config);
163
+ const previousConfig = this.config.getProperties();
164
+ try {
165
+ this.config.load(config).validate({
166
+ allowed: 'warn',
167
+ });
168
+ config = this.config.getProperties();
169
+ callback(null, { updatedConfig: JSON.stringify(config) });
170
+ }
171
+ catch (e) {
172
+ this.config = (0, convict_1.default)(this.configSchema);
173
+ this.config.load(previousConfig);
174
+ return callback({
175
+ code: grpc_js_1.status.INVALID_ARGUMENT,
176
+ message: 'Invalid configuration values: ' + e.message,
177
+ });
178
+ }
179
+ classes_1.ConfigController.getInstance().config = config;
180
+ await this.onConfig();
181
+ (_a = this.grpcSdk.bus) === null || _a === void 0 ? void 0 : _a.publish((0, lodash_1.kebabCase)(this.name) + ':config:update', JSON.stringify(config));
182
+ }
183
+ catch (e) {
184
+ return callback({ code: grpc_js_1.status.INTERNAL, message: e.message });
185
+ }
186
+ }
337
187
  /** Used to update the module's configuration on initial Redis/DB reconciliation. */
338
- ManagedModule.prototype.handleConfigSyncUpdate = function () {
339
- return __awaiter(this, void 0, void 0, function () {
340
- var _this = this;
341
- return __generator(this, function (_a) {
342
- if (!this.config)
343
- return [2 /*return*/];
344
- this.grpcSdk.bus.subscribe("".concat(this.name, ":config:update"), function (message) { return __awaiter(_this, void 0, void 0, function () {
345
- var _a;
346
- return __generator(this, function (_b) {
347
- switch (_b.label) {
348
- case 0:
349
- _a = classes_1.ConfigController.getInstance();
350
- return [4 /*yield*/, this.preConfig(JSON.parse(message))];
351
- case 1:
352
- _a.config = _b.sent();
353
- return [4 /*yield*/, this.onConfig()];
354
- case 2:
355
- _b.sent();
356
- return [2 /*return*/];
357
- }
358
- });
359
- }); });
360
- return [2 /*return*/];
361
- });
188
+ async handleConfigSyncUpdate() {
189
+ if (!this.config)
190
+ return;
191
+ this.grpcSdk.bus.subscribe(`${(0, lodash_1.kebabCase)(this.name)}:config:update`, async (message) => {
192
+ classes_1.ConfigController.getInstance().config = await this.preConfig(JSON.parse(message));
193
+ await this.onConfig();
362
194
  });
363
- };
364
- ManagedModule.prototype.preRegisterLifecycle = function () {
365
- return __awaiter(this, void 0, void 0, function () {
366
- return __generator(this, function (_a) {
367
- switch (_a.label) {
368
- case 0: return [4 /*yield*/, this.createGrpcServer()];
369
- case 1:
370
- _a.sent();
371
- return [4 /*yield*/, this.preServerStart()];
372
- case 2:
373
- _a.sent();
374
- return [4 /*yield*/, this.grpcSdk.initializeEventBus()];
375
- case 3:
376
- _a.sent();
377
- return [4 /*yield*/, this.handleConfigSyncUpdate()];
378
- case 4:
379
- _a.sent();
380
- return [4 /*yield*/, this.registerMetrics()];
381
- case 5:
382
- _a.sent();
383
- return [4 /*yield*/, this.startGrpcServer()];
384
- case 6:
385
- _a.sent();
386
- return [4 /*yield*/, this.onServerStart()];
387
- case 7:
388
- _a.sent();
389
- return [4 /*yield*/, this.initializeMetrics()];
390
- case 8:
391
- _a.sent();
392
- return [4 /*yield*/, this.preRegister()];
393
- case 9:
394
- _a.sent();
395
- return [2 /*return*/];
396
- }
397
- });
398
- });
399
- };
400
- ManagedModule.prototype.postRegisterLifecycle = function () {
401
- return __awaiter(this, void 0, void 0, function () {
402
- var configSchema, config;
403
- return __generator(this, function (_a) {
404
- switch (_a.label) {
405
- case 0: return [4 /*yield*/, this.onRegister()];
406
- case 1:
407
- _a.sent();
408
- if (!this.config) return [3 /*break*/, 5];
409
- configSchema = this.config.getSchema();
410
- config = this.config.getProperties();
411
- return [4 /*yield*/, this.preConfig(config)];
412
- case 2:
413
- config = _a.sent();
414
- return [4 /*yield*/, this.grpcSdk.config.configure(config, (0, convictConfigParser_1.convictConfigParser)(configSchema), this.configOverride)];
415
- case 3:
416
- config = _a.sent();
417
- classes_1.ConfigController.getInstance();
418
- if (config)
419
- classes_1.ConfigController.getInstance().config = config;
420
- if (!(!config || config.active || !config.hasOwnProperty('active'))) return [3 /*break*/, 5];
421
- return [4 /*yield*/, this.onConfig()];
422
- case 4:
423
- _a.sent();
424
- _a.label = 5;
425
- case 5: return [2 /*return*/];
426
- }
427
- });
428
- });
429
- };
430
- return ManagedModule;
431
- }(classes_1.ConduitServiceModule));
195
+ }
196
+ async preRegisterLifecycle() {
197
+ await this.createGrpcServer();
198
+ this._moduleState = ModuleLifecycleStage_1.ModuleLifecycleStage.PRE_SERVER_START;
199
+ await this.preServerStart();
200
+ await this.grpcSdk.initializeEventBus();
201
+ await this.handleConfigSyncUpdate();
202
+ await this.registerMetrics();
203
+ await this.startGrpcServer();
204
+ this._moduleState = ModuleLifecycleStage_1.ModuleLifecycleStage.SERVER_STARTED;
205
+ await this.onServerStart();
206
+ await this.initializeMetrics();
207
+ this._moduleState = ModuleLifecycleStage_1.ModuleLifecycleStage.PRE_REGISTER;
208
+ await this.preRegister();
209
+ }
210
+ async postRegisterLifecycle() {
211
+ this._moduleState = ModuleLifecycleStage_1.ModuleLifecycleStage.POST_REGISTER;
212
+ this.registered = true;
213
+ await this.onRegister();
214
+ if (this.config) {
215
+ const configSchema = this.config.getSchema();
216
+ let config = this.config.getProperties();
217
+ config = await this.preConfig(config);
218
+ config = await this.grpcSdk.config.configure(config, (0, convictConfigParser_1.convictConfigParser)(configSchema), this.configOverride);
219
+ classes_1.ConfigController.getInstance();
220
+ if (config)
221
+ classes_1.ConfigController.getInstance().config = config;
222
+ if (!config || config.active || !config.hasOwnProperty('active'))
223
+ await this.onConfig();
224
+ }
225
+ }
226
+ }
432
227
  exports.ManagedModule = ManagedModule;
433
228
  //# sourceMappingURL=ManagedModule.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ManagedModule.js","sourceRoot":"","sources":["../src/ManagedModule.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ManagedModule.js","sourceRoot":"","sources":["../src/ManagedModule.ts"],"names":[],"mappings":"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"}