@conduitplatform/grpc-sdk 0.16.0-alpha.8 → 0.16.0-rc.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/classes/ConduitAuthorizedResource.js +5 -6
- package/dist/classes/ConduitAuthorizedResource.js.map +1 -1
- package/dist/classes/ConduitModule.js +59 -162
- package/dist/classes/ConduitModule.js.map +1 -1
- package/dist/classes/ConduitSchema.js +3 -4
- package/dist/classes/ConduitSchema.js.map +1 -1
- package/dist/classes/Error.js +17 -40
- package/dist/classes/Error.js.map +1 -1
- package/dist/classes/HealthCheck.js +28 -96
- package/dist/classes/HealthCheck.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.js +300 -462
- package/dist/index.js.map +1 -1
- package/dist/interceptors/grpcSignedToken.d.ts +1 -1
- package/dist/interceptors/grpcSignedToken.js +7 -79
- package/dist/interceptors/grpcSignedToken.js.map +1 -1
- package/dist/interceptors/moduleName.d.ts +1 -1
- package/dist/interceptors/moduleName.js +7 -79
- package/dist/interceptors/moduleName.js.map +1 -1
- package/dist/interfaces/ConduitRouteReturn.d.ts +3 -3
- package/dist/interfaces/ConduitRouteReturn.js +9 -18
- package/dist/interfaces/ConduitRouteReturn.js.map +1 -1
- package/dist/interfaces/GrpcCallback.d.ts +1 -1
- package/dist/interfaces/Indexable.d.ts +7 -7
- package/dist/interfaces/Model.d.ts +66 -13
- package/dist/interfaces/Model.js.map +1 -1
- package/dist/interfaces/Params.d.ts +3 -3
- package/dist/interfaces/RawQuery.d.ts +2 -2
- package/dist/interfaces/Route.d.ts +30 -19
- package/dist/interfaces/Route.js +1 -10
- package/dist/interfaces/Route.js.map +1 -1
- package/dist/interfaces/Socket.d.ts +1 -1
- package/dist/interfaces/UntypedArray.d.ts +1 -1
- package/dist/interfaces/types.d.ts +6 -6
- package/dist/module.proto +58 -0
- package/dist/modules/admin/index.d.ts +3 -3
- package/dist/modules/admin/index.js +18 -37
- package/dist/modules/admin/index.js.map +1 -1
- package/dist/modules/authentication/index.d.ts +6 -2
- package/dist/modules/authentication/index.js +33 -40
- package/dist/modules/authentication/index.js.map +1 -1
- package/dist/modules/authorization/index.d.ts +4 -1
- package/dist/modules/authorization/index.js +38 -47
- package/dist/modules/authorization/index.js.map +1 -1
- package/dist/modules/chat/index.js +16 -34
- package/dist/modules/chat/index.js.map +1 -1
- package/dist/modules/config/index.d.ts +10 -1
- package/dist/modules/config/index.js +82 -177
- package/dist/modules/config/index.js.map +1 -1
- package/dist/modules/core/index.js +8 -26
- package/dist/modules/core/index.js.map +1 -1
- package/dist/modules/database/index.d.ts +19 -10
- package/dist/modules/database/index.js +184 -125
- package/dist/modules/database/index.js.map +1 -1
- package/dist/modules/email/index.js +15 -33
- package/dist/modules/email/index.js.map +1 -1
- package/dist/modules/pushNotifications/index.d.ts +4 -4
- package/dist/modules/pushNotifications/index.js +38 -60
- package/dist/modules/pushNotifications/index.js.map +1 -1
- package/dist/modules/router/index.d.ts +3 -3
- package/dist/modules/router/index.js +20 -39
- package/dist/modules/router/index.js.map +1 -1
- package/dist/modules/sms/index.js +17 -35
- package/dist/modules/sms/index.js.map +1 -1
- package/dist/modules/storage/index.d.ts +7 -7
- package/dist/modules/storage/index.js +64 -55
- package/dist/modules/storage/index.js.map +1 -1
- package/dist/protoUtils/authentication.d.ts +200 -4
- package/dist/protoUtils/authentication.js +789 -194
- package/dist/protoUtils/authentication.js.map +1 -1
- package/dist/protoUtils/authorization.d.ts +155 -5
- package/dist/protoUtils/authorization.js +860 -447
- package/dist/protoUtils/authorization.js.map +1 -1
- package/dist/protoUtils/chat.d.ts +18 -7
- package/dist/protoUtils/chat.js +210 -227
- package/dist/protoUtils/chat.js.map +1 -1
- package/dist/protoUtils/core.d.ts +86 -49
- package/dist/protoUtils/core.js +1057 -852
- package/dist/protoUtils/core.js.map +1 -1
- package/dist/protoUtils/database.d.ts +262 -16
- package/dist/protoUtils/database.js +1489 -832
- package/dist/protoUtils/database.js.map +1 -1
- package/dist/protoUtils/email.d.ts +13 -4
- package/dist/protoUtils/email.js +242 -253
- package/dist/protoUtils/email.js.map +1 -1
- package/dist/protoUtils/google/protobuf/empty.d.ts +6 -3
- package/dist/protoUtils/google/protobuf/empty.js +21 -38
- package/dist/protoUtils/google/protobuf/empty.js.map +1 -1
- package/dist/protoUtils/grpc_health_check.d.ts +10 -4
- package/dist/protoUtils/grpc_health_check.js +72 -83
- package/dist/protoUtils/grpc_health_check.js.map +1 -1
- package/dist/protoUtils/module.d.ts +202 -4
- package/dist/protoUtils/module.js +810 -72
- package/dist/protoUtils/module.js.map +1 -1
- package/dist/protoUtils/push-notifications.d.ts +26 -6
- package/dist/protoUtils/push-notifications.js +381 -317
- package/dist/protoUtils/push-notifications.js.map +1 -1
- package/dist/protoUtils/router.d.ts +50 -48
- package/dist/protoUtils/router.js +529 -498
- package/dist/protoUtils/router.js.map +1 -1
- package/dist/protoUtils/sms.d.ts +16 -4
- package/dist/protoUtils/sms.js +199 -175
- package/dist/protoUtils/sms.js.map +1 -1
- package/dist/protoUtils/storage.d.ts +39 -4
- package/dist/protoUtils/storage.js +641 -345
- package/dist/protoUtils/storage.js.map +1 -1
- package/dist/types/db.d.ts +13 -11
- package/dist/types/index.d.ts +2 -2
- package/dist/types/index.js +6 -24
- package/dist/types/index.js.map +1 -1
- package/dist/utilities/EventBus.d.ts +3 -1
- package/dist/utilities/EventBus.js +38 -17
- package/dist/utilities/EventBus.js.map +1 -1
- package/dist/utilities/RedisManager.js +11 -21
- package/dist/utilities/RedisManager.js.map +1 -1
- package/dist/utilities/StateManager.d.ts +9 -0
- package/dist/utilities/StateManager.js +58 -15
- package/dist/utilities/StateManager.js.map +1 -1
- package/dist/utilities/env.js +4 -4
- package/dist/utilities/env.js.map +1 -1
- package/dist/utilities/sleep.js +1 -1
- package/dist/utilities/sleep.js.map +1 -1
- package/package.json +26 -19
package/dist/index.js
CHANGED
|
@@ -1,15 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __assign = (this && this.__assign) || function () {
|
|
3
|
-
__assign = Object.assign || function(t) {
|
|
4
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
-
s = arguments[i];
|
|
6
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
-
t[p] = s[p];
|
|
8
|
-
}
|
|
9
|
-
return t;
|
|
10
|
-
};
|
|
11
|
-
return __assign.apply(this, arguments);
|
|
12
|
-
};
|
|
13
2
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
14
3
|
if (k2 === undefined) k2 = k;
|
|
15
4
|
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
@@ -24,58 +13,20 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi
|
|
|
24
13
|
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
25
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
26
15
|
};
|
|
27
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
28
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
29
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
30
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
31
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
32
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
33
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
34
|
-
});
|
|
35
|
-
};
|
|
36
|
-
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
37
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
38
|
-
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
39
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
40
|
-
function step(op) {
|
|
41
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
42
|
-
while (_) try {
|
|
43
|
-
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;
|
|
44
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
45
|
-
switch (op[0]) {
|
|
46
|
-
case 0: case 1: t = op; break;
|
|
47
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
48
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
49
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
50
|
-
default:
|
|
51
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
52
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
53
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
54
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
55
|
-
if (t[2]) _.ops.pop();
|
|
56
|
-
_.trys.pop(); continue;
|
|
57
|
-
}
|
|
58
|
-
op = body.call(thisArg, _);
|
|
59
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
60
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
61
|
-
}
|
|
62
|
-
};
|
|
63
16
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
64
17
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
65
18
|
};
|
|
66
19
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
if (watchModules === void 0) { watchModules = true; }
|
|
78
|
-
if (serviceHealthStatusGetter === void 0) { serviceHealthStatusGetter = function () { return types_1.HealthCheckStatus.SERVING; }; }
|
|
20
|
+
const modules_1 = require("./modules");
|
|
21
|
+
const crypto_1 = __importDefault(require("crypto"));
|
|
22
|
+
const utilities_1 = require("./utilities");
|
|
23
|
+
const classes_1 = require("./classes");
|
|
24
|
+
const grpc_js_1 = require("@grpc/grpc-js");
|
|
25
|
+
const protoUtils_1 = require("./protoUtils");
|
|
26
|
+
const types_1 = require("./types");
|
|
27
|
+
const fast_jwt_1 = require("fast-jwt");
|
|
28
|
+
class ConduitGrpcSdk {
|
|
29
|
+
constructor(serverUrl, name, watchModules = true, logger, serviceHealthStatusGetter = () => types_1.HealthCheckStatus.SERVING) {
|
|
79
30
|
this._modules = {};
|
|
80
31
|
this._availableModules = {
|
|
81
32
|
router: modules_1.Router,
|
|
@@ -107,346 +58,240 @@ var ConduitGrpcSdk = /** @class */ (function () {
|
|
|
107
58
|
this.instance = this.name.startsWith('module_')
|
|
108
59
|
? this.name.substring(8)
|
|
109
60
|
: crypto_1.default.randomBytes(16).toString('hex');
|
|
110
|
-
this.urlRemap = (0, utilities_1.getJsonEnv)('URL_REMAP', process.env.URL_REMAP,
|
|
61
|
+
this.urlRemap = (0, utilities_1.getJsonEnv)('URL_REMAP', process.env.URL_REMAP, stringConf => ({
|
|
111
62
|
'*': stringConf,
|
|
112
|
-
})
|
|
63
|
+
}));
|
|
113
64
|
this.serverUrl = serverUrl;
|
|
114
65
|
this._watchModules = watchModules;
|
|
115
66
|
this._serviceHealthStatusGetter = serviceHealthStatusGetter;
|
|
116
67
|
if (process.env.GRPC_KEY) {
|
|
117
|
-
|
|
68
|
+
const sign = (0, fast_jwt_1.createSigner)({ key: process.env.GRPC_KEY });
|
|
118
69
|
this._grpcToken = sign({
|
|
119
70
|
moduleName: this.name,
|
|
120
71
|
});
|
|
121
72
|
}
|
|
122
73
|
}
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
}
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
}
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
return this.
|
|
247
|
-
}
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
}
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
if (this._modules['email']) {
|
|
267
|
-
return this._modules['email'];
|
|
268
|
-
}
|
|
269
|
-
else {
|
|
270
|
-
ConduitGrpcSdk.Logger.warn('Email provider not up yet!');
|
|
271
|
-
return null;
|
|
272
|
-
}
|
|
273
|
-
},
|
|
274
|
-
enumerable: false,
|
|
275
|
-
configurable: true
|
|
276
|
-
});
|
|
277
|
-
Object.defineProperty(ConduitGrpcSdk.prototype, "pushNotifications", {
|
|
278
|
-
get: function () {
|
|
279
|
-
if (this._modules['pushNotifications']) {
|
|
280
|
-
return this._modules['pushNotifications'];
|
|
281
|
-
}
|
|
282
|
-
else {
|
|
283
|
-
ConduitGrpcSdk.Logger.warn('Push notifications module not up yet!');
|
|
284
|
-
return null;
|
|
285
|
-
}
|
|
286
|
-
},
|
|
287
|
-
enumerable: false,
|
|
288
|
-
configurable: true
|
|
289
|
-
});
|
|
290
|
-
Object.defineProperty(ConduitGrpcSdk.prototype, "authentication", {
|
|
291
|
-
get: function () {
|
|
292
|
-
if (this._modules['authentication']) {
|
|
293
|
-
return this._modules['authentication'];
|
|
294
|
-
}
|
|
295
|
-
else {
|
|
296
|
-
ConduitGrpcSdk.Logger.warn('Authentication module not up yet!');
|
|
297
|
-
return null;
|
|
298
|
-
}
|
|
299
|
-
},
|
|
300
|
-
enumerable: false,
|
|
301
|
-
configurable: true
|
|
302
|
-
});
|
|
303
|
-
Object.defineProperty(ConduitGrpcSdk.prototype, "authorization", {
|
|
304
|
-
get: function () {
|
|
305
|
-
if (this._modules['authorization']) {
|
|
306
|
-
return this._modules['authorization'];
|
|
307
|
-
}
|
|
308
|
-
else {
|
|
309
|
-
ConduitGrpcSdk.Logger.warn('Authorization module not up yet!');
|
|
310
|
-
return null;
|
|
311
|
-
}
|
|
312
|
-
},
|
|
313
|
-
enumerable: false,
|
|
314
|
-
configurable: true
|
|
315
|
-
});
|
|
316
|
-
Object.defineProperty(ConduitGrpcSdk.prototype, "sms", {
|
|
317
|
-
get: function () {
|
|
318
|
-
if (this._modules['sms']) {
|
|
319
|
-
return this._modules['sms'];
|
|
320
|
-
}
|
|
321
|
-
else {
|
|
322
|
-
ConduitGrpcSdk.Logger.warn('SMS module not up yet!');
|
|
323
|
-
return null;
|
|
324
|
-
}
|
|
325
|
-
},
|
|
326
|
-
enumerable: false,
|
|
327
|
-
configurable: true
|
|
328
|
-
});
|
|
329
|
-
Object.defineProperty(ConduitGrpcSdk.prototype, "chat", {
|
|
330
|
-
get: function () {
|
|
331
|
-
if (this._modules['chat']) {
|
|
332
|
-
return this._modules['chat'];
|
|
333
|
-
}
|
|
334
|
-
else {
|
|
335
|
-
ConduitGrpcSdk.Logger.warn('Chat module not up yet!');
|
|
336
|
-
return null;
|
|
337
|
-
}
|
|
338
|
-
},
|
|
339
|
-
enumerable: false,
|
|
340
|
-
configurable: true
|
|
341
|
-
});
|
|
342
|
-
Object.defineProperty(ConduitGrpcSdk.prototype, "grpcToken", {
|
|
343
|
-
get: function () {
|
|
344
|
-
return this._grpcToken;
|
|
345
|
-
},
|
|
346
|
-
enumerable: false,
|
|
347
|
-
configurable: true
|
|
348
|
-
});
|
|
349
|
-
ConduitGrpcSdk.prototype.addMiddleware = function (middleware) {
|
|
74
|
+
static get Logger() {
|
|
75
|
+
return ConduitGrpcSdk._Logger;
|
|
76
|
+
}
|
|
77
|
+
static get Metrics() {
|
|
78
|
+
return ConduitGrpcSdk._Metrics;
|
|
79
|
+
}
|
|
80
|
+
static set Metrics(metrics) {
|
|
81
|
+
ConduitGrpcSdk._Metrics = metrics;
|
|
82
|
+
}
|
|
83
|
+
static get interceptors() {
|
|
84
|
+
return ConduitGrpcSdk.middleware;
|
|
85
|
+
}
|
|
86
|
+
get redisManager() {
|
|
87
|
+
if (this._redisManager) {
|
|
88
|
+
return this._redisManager;
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
throw new Error('Redis not available');
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
get redisDetails() {
|
|
95
|
+
if (this._redisDetails) {
|
|
96
|
+
return this._redisDetails;
|
|
97
|
+
}
|
|
98
|
+
else {
|
|
99
|
+
throw new Error('Redis not available');
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
get bus() {
|
|
103
|
+
if (this._eventBus) {
|
|
104
|
+
return this._eventBus;
|
|
105
|
+
}
|
|
106
|
+
else {
|
|
107
|
+
ConduitGrpcSdk.Logger.warn('Event bus not initialized');
|
|
108
|
+
return null;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
get state() {
|
|
112
|
+
if (this._stateManager) {
|
|
113
|
+
return this._stateManager;
|
|
114
|
+
}
|
|
115
|
+
else {
|
|
116
|
+
ConduitGrpcSdk.Logger.warn('State Manager not initialized');
|
|
117
|
+
return null;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
get core() {
|
|
121
|
+
return this._core;
|
|
122
|
+
}
|
|
123
|
+
get config() {
|
|
124
|
+
return this._config;
|
|
125
|
+
}
|
|
126
|
+
get admin() {
|
|
127
|
+
return this._admin;
|
|
128
|
+
}
|
|
129
|
+
get router() {
|
|
130
|
+
if (this._modules['router']) {
|
|
131
|
+
return this._modules['router'];
|
|
132
|
+
}
|
|
133
|
+
else {
|
|
134
|
+
ConduitGrpcSdk.Logger.warn('Router not up yet!');
|
|
135
|
+
return null;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
get database() {
|
|
139
|
+
if (this._modules['database']) {
|
|
140
|
+
return this._modules['database'];
|
|
141
|
+
}
|
|
142
|
+
else {
|
|
143
|
+
ConduitGrpcSdk.Logger.warn('Database provider not up yet!');
|
|
144
|
+
return null;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
get databaseProvider() {
|
|
148
|
+
return this.database;
|
|
149
|
+
}
|
|
150
|
+
get storage() {
|
|
151
|
+
if (this._modules['storage']) {
|
|
152
|
+
return this._modules['storage'];
|
|
153
|
+
}
|
|
154
|
+
else {
|
|
155
|
+
ConduitGrpcSdk.Logger.warn('Storage module not up yet!');
|
|
156
|
+
return null;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
get emailProvider() {
|
|
160
|
+
if (this._modules['email']) {
|
|
161
|
+
return this._modules['email'];
|
|
162
|
+
}
|
|
163
|
+
else {
|
|
164
|
+
ConduitGrpcSdk.Logger.warn('Email provider not up yet!');
|
|
165
|
+
return null;
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
get pushNotifications() {
|
|
169
|
+
if (this._modules['pushNotifications']) {
|
|
170
|
+
return this._modules['pushNotifications'];
|
|
171
|
+
}
|
|
172
|
+
else {
|
|
173
|
+
ConduitGrpcSdk.Logger.warn('Push notifications module not up yet!');
|
|
174
|
+
return null;
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
get authentication() {
|
|
178
|
+
if (this._modules['authentication']) {
|
|
179
|
+
return this._modules['authentication'];
|
|
180
|
+
}
|
|
181
|
+
else {
|
|
182
|
+
ConduitGrpcSdk.Logger.warn('Authentication module not up yet!');
|
|
183
|
+
return null;
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
get authorization() {
|
|
187
|
+
if (this._modules['authorization']) {
|
|
188
|
+
return this._modules['authorization'];
|
|
189
|
+
}
|
|
190
|
+
else {
|
|
191
|
+
ConduitGrpcSdk.Logger.warn('Authorization module not up yet!');
|
|
192
|
+
return null;
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
get sms() {
|
|
196
|
+
if (this._modules['sms']) {
|
|
197
|
+
return this._modules['sms'];
|
|
198
|
+
}
|
|
199
|
+
else {
|
|
200
|
+
ConduitGrpcSdk.Logger.warn('SMS module not up yet!');
|
|
201
|
+
return null;
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
get chat() {
|
|
205
|
+
if (this._modules['chat']) {
|
|
206
|
+
return this._modules['chat'];
|
|
207
|
+
}
|
|
208
|
+
else {
|
|
209
|
+
ConduitGrpcSdk.Logger.warn('Chat module not up yet!');
|
|
210
|
+
return null;
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
get grpcToken() {
|
|
214
|
+
return this._grpcToken;
|
|
215
|
+
}
|
|
216
|
+
addMiddleware(middleware) {
|
|
350
217
|
ConduitGrpcSdk.middleware.push(middleware);
|
|
351
|
-
}
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
if (!true) return [3 /*break*/, 7];
|
|
366
|
-
_a.label = 2;
|
|
367
|
-
case 2:
|
|
368
|
-
_a.trys.push([2, 4, , 6]);
|
|
369
|
-
return [4 /*yield*/, this.core.check()];
|
|
370
|
-
case 3:
|
|
371
|
-
state = _a.sent();
|
|
372
|
-
if (state === types_1.HealthCheckStatus.SERVING) {
|
|
373
|
-
ConduitGrpcSdk.Logger.log('Core connection established');
|
|
374
|
-
this._initialize();
|
|
375
|
-
return [3 /*break*/, 7];
|
|
376
|
-
}
|
|
377
|
-
return [3 /*break*/, 6];
|
|
378
|
-
case 4:
|
|
379
|
-
err_1 = _a.sent();
|
|
380
|
-
if (err_1.code === grpc_js_1.status.PERMISSION_DENIED) {
|
|
381
|
-
ConduitGrpcSdk.Logger.error(err_1);
|
|
382
|
-
process.exit(-1);
|
|
383
|
-
}
|
|
384
|
-
return [4 /*yield*/, (0, utilities_1.sleep)(1000)];
|
|
385
|
-
case 5:
|
|
386
|
-
_a.sent();
|
|
387
|
-
return [3 /*break*/, 6];
|
|
388
|
-
case 6: return [3 /*break*/, 1];
|
|
389
|
-
case 7: return [2 /*return*/];
|
|
218
|
+
}
|
|
219
|
+
async initialize() {
|
|
220
|
+
if (this.name === 'core') {
|
|
221
|
+
return this._initialize();
|
|
222
|
+
}
|
|
223
|
+
this._core = new modules_1.Core(this.name, this.serverUrl, this._grpcToken);
|
|
224
|
+
ConduitGrpcSdk.Logger.log('Waiting for Core...');
|
|
225
|
+
while (true) {
|
|
226
|
+
try {
|
|
227
|
+
const state = await this.core.check();
|
|
228
|
+
if (state === types_1.HealthCheckStatus.SERVING) {
|
|
229
|
+
ConduitGrpcSdk.Logger.log('Core connection established');
|
|
230
|
+
this._initialize();
|
|
231
|
+
break;
|
|
390
232
|
}
|
|
391
|
-
}
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
233
|
+
}
|
|
234
|
+
catch (err) {
|
|
235
|
+
if (err.code === grpc_js_1.status.PERMISSION_DENIED) {
|
|
236
|
+
ConduitGrpcSdk.Logger.error(err);
|
|
237
|
+
process.exit(-1);
|
|
238
|
+
}
|
|
239
|
+
await (0, utilities_1.sleep)(1000);
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
watchModules() {
|
|
244
|
+
const emitter = this.config.getModuleWatcher();
|
|
397
245
|
this.config.watchModules().then();
|
|
398
|
-
emitter.on('serving-modules-update',
|
|
399
|
-
Object.keys(
|
|
246
|
+
emitter.on('serving-modules-update', modules => {
|
|
247
|
+
Object.keys(this._modules).forEach(r => {
|
|
400
248
|
var _a;
|
|
401
|
-
if (r
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
}
|
|
249
|
+
if (r === this.name)
|
|
250
|
+
return;
|
|
251
|
+
const found = modules.filter((m) => m.moduleName === r && m.serving);
|
|
252
|
+
if ((!found || found.length === 0) && this._modules[r]) {
|
|
253
|
+
(_a = this._modules[r]) === null || _a === void 0 ? void 0 : _a.closeConnection();
|
|
254
|
+
emitter.emit(`module-connection-update:${r}`, false);
|
|
407
255
|
}
|
|
408
256
|
});
|
|
409
|
-
modules.forEach(
|
|
257
|
+
modules.forEach((m) => {
|
|
410
258
|
var _a;
|
|
411
|
-
if (m.moduleName
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
}
|
|
259
|
+
if (m.moduleName === this.name || !m.serving)
|
|
260
|
+
return;
|
|
261
|
+
const alreadyActive = (_a = this._modules[m.moduleName]) === null || _a === void 0 ? void 0 : _a.active;
|
|
262
|
+
if (alreadyActive)
|
|
263
|
+
return;
|
|
264
|
+
if (this._availableModules[m.moduleName] && this._modules[m.moduleName]) {
|
|
265
|
+
this._modules[m.moduleName].openConnection();
|
|
266
|
+
}
|
|
267
|
+
else {
|
|
268
|
+
this.createModuleClient(m.moduleName, m.url);
|
|
422
269
|
}
|
|
270
|
+
emitter.emit(`module-connection-update:${m.moduleName}`, true);
|
|
423
271
|
});
|
|
424
272
|
});
|
|
425
|
-
}
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
if (wait === void 0) { wait = true; }
|
|
429
|
-
var waitPromise = wait ? this.waitForExistence(moduleName) : Promise.resolve();
|
|
273
|
+
}
|
|
274
|
+
monitorModule(moduleName, callback, wait = true) {
|
|
275
|
+
const waitPromise = wait ? this.waitForExistence(moduleName) : Promise.resolve();
|
|
430
276
|
waitPromise
|
|
431
|
-
.then(
|
|
432
|
-
.then(
|
|
277
|
+
.then(() => { var _a, _b; return (_b = (_a = this._modules[moduleName]) === null || _a === void 0 ? void 0 : _a.healthClient) === null || _b === void 0 ? void 0 : _b.check({}); })
|
|
278
|
+
.then(res => {
|
|
433
279
|
callback((res === null || res === void 0 ? void 0 : res.status) === protoUtils_1.HealthCheckResponse_ServingStatus.SERVING);
|
|
434
280
|
})
|
|
435
|
-
.catch(
|
|
281
|
+
.catch(() => {
|
|
436
282
|
callback(false);
|
|
437
283
|
})
|
|
438
|
-
.then(
|
|
439
|
-
|
|
440
|
-
emitter.on(
|
|
284
|
+
.then(() => {
|
|
285
|
+
const emitter = this.config.getModuleWatcher();
|
|
286
|
+
emitter.on(`module-connection-update:${moduleName}`, callback);
|
|
441
287
|
});
|
|
442
|
-
}
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
emitter.removeAllListeners(
|
|
446
|
-
}
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
var promise = Promise.resolve();
|
|
288
|
+
}
|
|
289
|
+
unmonitorModule(moduleName) {
|
|
290
|
+
const emitter = this.config.getModuleWatcher();
|
|
291
|
+
emitter.removeAllListeners(`module-connection-update:${moduleName}`);
|
|
292
|
+
}
|
|
293
|
+
initializeEventBus() {
|
|
294
|
+
let promise = Promise.resolve();
|
|
450
295
|
if (process.env.REDIS_CONFIG) {
|
|
451
296
|
this._redisDetails = (0, utilities_1.getJsonEnv)('REDIS_CONFIG');
|
|
452
297
|
}
|
|
@@ -454,72 +299,76 @@ var ConduitGrpcSdk = /** @class */ (function () {
|
|
|
454
299
|
this._redisDetails = {
|
|
455
300
|
host: process.env.REDIS_HOST,
|
|
456
301
|
port: parseInt(process.env.REDIS_PORT, 10),
|
|
457
|
-
|
|
458
|
-
|
|
302
|
+
db: parseInt(process.env.REDIS_DB, 10) || 0,
|
|
303
|
+
...(process.env.REDIS_USERNAME ? { username: process.env.REDIS_USERNAME } : {}),
|
|
304
|
+
...(process.env.REDIS_PASSWORD ? { password: process.env.REDIS_PASSWORD } : {}),
|
|
459
305
|
};
|
|
460
306
|
}
|
|
461
307
|
else {
|
|
462
308
|
promise = promise
|
|
463
|
-
.then(
|
|
464
|
-
.then(
|
|
465
|
-
if (r.
|
|
466
|
-
|
|
309
|
+
.then(() => this.config.getRedisDetails())
|
|
310
|
+
.then(r => {
|
|
311
|
+
if (r.standalone) {
|
|
312
|
+
this._redisDetails = r.standalone;
|
|
467
313
|
}
|
|
468
314
|
else {
|
|
469
|
-
|
|
470
|
-
host: r.redisHost,
|
|
471
|
-
port: r.redisPort,
|
|
472
|
-
username: r.redisUsername,
|
|
473
|
-
password: r.redisPassword,
|
|
474
|
-
};
|
|
315
|
+
this._redisDetails = r.cluster;
|
|
475
316
|
}
|
|
476
317
|
});
|
|
477
318
|
}
|
|
478
319
|
return promise
|
|
479
|
-
.then(
|
|
480
|
-
if (
|
|
481
|
-
|
|
320
|
+
.then(() => {
|
|
321
|
+
if (this._redisDetails.hasOwnProperty('nodes')) {
|
|
322
|
+
this._redisManager = new utilities_1.RedisManager(this._redisDetails);
|
|
482
323
|
}
|
|
483
324
|
else {
|
|
484
|
-
|
|
485
|
-
|
|
325
|
+
const redisHost = this._redisDetails.host;
|
|
326
|
+
this._redisManager = new utilities_1.RedisManager({
|
|
327
|
+
...this._redisDetails,
|
|
328
|
+
host: redisHost,
|
|
329
|
+
});
|
|
486
330
|
}
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
return
|
|
331
|
+
this._eventBus = new utilities_1.EventBus(this._redisManager);
|
|
332
|
+
this._stateManager = new utilities_1.StateManager(this._redisManager, this.name);
|
|
333
|
+
return this._eventBus;
|
|
490
334
|
})
|
|
491
|
-
.catch(
|
|
335
|
+
.catch((err) => {
|
|
492
336
|
ConduitGrpcSdk.Logger.error('Failed to initialize event bus');
|
|
493
337
|
throw err;
|
|
494
338
|
});
|
|
495
|
-
}
|
|
339
|
+
}
|
|
496
340
|
/**
|
|
497
341
|
* Gets all the registered modules from the config and creates clients for them.
|
|
498
342
|
* This will only work on known modules, since the primary usage for the sdk is internal
|
|
499
343
|
*/
|
|
500
|
-
|
|
501
|
-
var _this = this;
|
|
344
|
+
initializeModules() {
|
|
502
345
|
return this._config.moduleList()
|
|
503
|
-
.then(
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
346
|
+
.then(r => {
|
|
347
|
+
const emitter = this.config.getModuleWatcher();
|
|
348
|
+
this.lastSearch = Date.now();
|
|
349
|
+
r.forEach(m => {
|
|
350
|
+
this.createModuleClient(m.moduleName, m.url);
|
|
351
|
+
emitter.emit(`module-connection-update:${m.moduleName}`, m.serving);
|
|
507
352
|
});
|
|
508
353
|
return 'ok';
|
|
509
354
|
})
|
|
510
|
-
.catch(
|
|
355
|
+
.catch(err => {
|
|
511
356
|
if (err.code !== 5) {
|
|
512
357
|
ConduitGrpcSdk.Logger.error(err);
|
|
513
358
|
}
|
|
514
359
|
});
|
|
515
|
-
}
|
|
516
|
-
|
|
360
|
+
}
|
|
361
|
+
updateModuleHealth(moduleName, serving) {
|
|
362
|
+
const emitter = this.config.getModuleWatcher();
|
|
363
|
+
emitter.emit(`module-connection-update:${moduleName}`, serving);
|
|
364
|
+
}
|
|
365
|
+
createModuleClient(moduleName, moduleUrl) {
|
|
517
366
|
var _a, _b, _c;
|
|
518
367
|
if (this._modules[moduleName])
|
|
519
368
|
return;
|
|
520
369
|
moduleUrl =
|
|
521
370
|
(_b = (_a = this.urlRemap) === null || _a === void 0 ? void 0 : _a[moduleUrl]) !== null && _b !== void 0 ? _b : (((_c = this.urlRemap) === null || _c === void 0 ? void 0 : _c['*'])
|
|
522
|
-
?
|
|
371
|
+
? `${this.urlRemap['*']}:${moduleUrl.split(':')[1]}`
|
|
523
372
|
: moduleUrl);
|
|
524
373
|
if (this._availableModules[moduleName]) {
|
|
525
374
|
// ConduitGrpcSdk.Logger.log(`Creating gRPC client for ${moduleName}`);
|
|
@@ -536,77 +385,67 @@ var ConduitGrpcSdk = /** @class */ (function () {
|
|
|
536
385
|
this._modules[moduleName] = new classes_1.ConduitModule(this.name, moduleName, moduleUrl, this._grpcToken);
|
|
537
386
|
this._modules[moduleName].initializeClient(protoUtils_1.ConduitModuleDefinition);
|
|
538
387
|
}
|
|
539
|
-
}
|
|
540
|
-
|
|
541
|
-
if (service === void 0) { service = ''; }
|
|
388
|
+
}
|
|
389
|
+
isModuleUp(moduleName, moduleUrl, service = '') {
|
|
542
390
|
return (0, classes_1.checkModuleHealth)(moduleName, moduleUrl, service, this._grpcToken);
|
|
543
|
-
}
|
|
544
|
-
|
|
391
|
+
}
|
|
392
|
+
moduleClient(name, type) {
|
|
545
393
|
this._dynamicModules[name] = type;
|
|
546
|
-
}
|
|
547
|
-
|
|
394
|
+
}
|
|
395
|
+
getModule(name) {
|
|
548
396
|
return this._modules[name];
|
|
549
|
-
}
|
|
550
|
-
|
|
397
|
+
}
|
|
398
|
+
getServiceClient(name) {
|
|
551
399
|
var _a;
|
|
552
400
|
return (_a = this._modules[name]) === null || _a === void 0 ? void 0 : _a.client;
|
|
553
|
-
}
|
|
554
|
-
|
|
401
|
+
}
|
|
402
|
+
getModuleClient(name) {
|
|
555
403
|
var _a;
|
|
556
404
|
return (_a = this._modules[name]) === null || _a === void 0 ? void 0 : _a.moduleClient;
|
|
557
|
-
}
|
|
558
|
-
|
|
405
|
+
}
|
|
406
|
+
getHealthClient(name) {
|
|
559
407
|
var _a;
|
|
560
408
|
return (_a = this._modules[name]) === null || _a === void 0 ? void 0 : _a.healthClient;
|
|
561
|
-
}
|
|
562
|
-
|
|
409
|
+
}
|
|
410
|
+
isAvailable(moduleName) {
|
|
563
411
|
var _a;
|
|
564
412
|
return !!((_a = this._modules[moduleName]) === null || _a === void 0 ? void 0 : _a.active);
|
|
565
|
-
}
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
return
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
return [3 /*break*/, 0];
|
|
576
|
-
case 2: return [2 /*return*/, true];
|
|
413
|
+
}
|
|
414
|
+
async waitForExistence(moduleName, onlyIfServing = true) {
|
|
415
|
+
if (this.isAvailable(moduleName))
|
|
416
|
+
return true;
|
|
417
|
+
const emitter = this.config.getModuleWatcher();
|
|
418
|
+
return new Promise(resolve => {
|
|
419
|
+
const listener = (serving) => {
|
|
420
|
+
if (!onlyIfServing || (onlyIfServing && serving)) {
|
|
421
|
+
emitter.removeListener(`module-connection-update:${moduleName}`, listener);
|
|
422
|
+
return resolve(true);
|
|
577
423
|
}
|
|
578
|
-
}
|
|
424
|
+
};
|
|
425
|
+
emitter.on(`module-connection-update:${moduleName}`, listener);
|
|
579
426
|
});
|
|
580
|
-
}
|
|
581
|
-
|
|
427
|
+
}
|
|
428
|
+
onceModuleUp(moduleName, callback) {
|
|
582
429
|
if (this.isAvailable(moduleName))
|
|
583
430
|
callback();
|
|
584
|
-
|
|
585
|
-
emitter.once(
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
emitter.once("module-connection-update:".concat(moduleName), function (serving) {
|
|
592
|
-
return serving ? null : callback();
|
|
593
|
-
});
|
|
594
|
-
};
|
|
431
|
+
const emitter = this.config.getModuleWatcher();
|
|
432
|
+
emitter.once(`module-connection-update:${moduleName}`, (serving) => serving ? callback() : null);
|
|
433
|
+
}
|
|
434
|
+
onceModuleDown(moduleName, callback) {
|
|
435
|
+
const emitter = this.config.getModuleWatcher();
|
|
436
|
+
emitter.once(`module-connection-update:${moduleName}`, (serving) => serving ? null : callback());
|
|
437
|
+
}
|
|
595
438
|
/**
|
|
596
439
|
* Used to refresh all modules to check for new registrations
|
|
597
440
|
* @param force If true will check for new modules no matter the interval
|
|
598
441
|
*/
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
return
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
});
|
|
607
|
-
});
|
|
608
|
-
};
|
|
609
|
-
ConduitGrpcSdk.prototype._initialize = function () {
|
|
442
|
+
async refreshModules(force) {
|
|
443
|
+
if (this.lastSearch < Date.now() - 3000 || force) {
|
|
444
|
+
return this.initializeModules();
|
|
445
|
+
}
|
|
446
|
+
return 'ok';
|
|
447
|
+
}
|
|
448
|
+
_initialize() {
|
|
610
449
|
if (this._initialized)
|
|
611
450
|
throw new Error("Module's grpc-sdk has already been initialized");
|
|
612
451
|
this._config = new modules_1.Config(this.name, this.serverUrl, this._serviceHealthStatusGetter, this._grpcToken);
|
|
@@ -618,11 +457,10 @@ var ConduitGrpcSdk = /** @class */ (function () {
|
|
|
618
457
|
this.watchModules();
|
|
619
458
|
}
|
|
620
459
|
this._initialized = true;
|
|
621
|
-
}
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
}());
|
|
460
|
+
}
|
|
461
|
+
}
|
|
462
|
+
ConduitGrpcSdk.middleware = [];
|
|
463
|
+
ConduitGrpcSdk._Metrics = undefined;
|
|
626
464
|
exports.default = ConduitGrpcSdk;
|
|
627
465
|
__exportStar(require("./interfaces"), exports);
|
|
628
466
|
__exportStar(require("./classes"), exports);
|