@conduitplatform/module-tools 0.16.0-alpha.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.mdx +18 -0
- package/dist/ManagedModule.d.ts +79 -0
- package/dist/ManagedModule.js +433 -0
- package/dist/ManagedModule.js.map +1 -0
- package/dist/classes/ConduitActiveSchema.d.ts +16 -0
- package/dist/classes/ConduitActiveSchema.js +57 -0
- package/dist/classes/ConduitActiveSchema.js.map +1 -0
- package/dist/classes/ConduitServiceModule.d.ts +26 -0
- package/dist/classes/ConduitServiceModule.js +184 -0
- package/dist/classes/ConduitServiceModule.js.map +1 -0
- package/dist/classes/ConfigController.d.ts +7 -0
- package/dist/classes/ConfigController.js +27 -0
- package/dist/classes/ConfigController.js.map +1 -0
- package/dist/classes/GrpcServer.d.ts +22 -0
- package/dist/classes/GrpcServer.js +207 -0
- package/dist/classes/GrpcServer.js.map +1 -0
- package/dist/classes/index.d.ts +4 -0
- package/dist/classes/index.js +21 -0
- package/dist/classes/index.js.map +1 -0
- package/dist/grpc_health_check.proto +21 -0
- package/dist/helpers/GrpcHelper.d.ts +8 -0
- package/dist/helpers/GrpcHelper.js +43 -0
- package/dist/helpers/GrpcHelper.js.map +1 -0
- package/dist/helpers/TypeHelpers.d.ts +44 -0
- package/dist/helpers/TypeHelpers.js +144 -0
- package/dist/helpers/TypeHelpers.js.map +1 -0
- package/dist/helpers/index.d.ts +3 -0
- package/dist/helpers/index.js +20 -0
- package/dist/helpers/index.js.map +1 -0
- package/dist/helpers/wrapGrpcFunctions.d.ts +5 -0
- package/dist/helpers/wrapGrpcFunctions.js +56 -0
- package/dist/helpers/wrapGrpcFunctions.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.js +23 -0
- package/dist/index.js.map +1 -0
- package/dist/interfaces/ConduitService.d.ts +8 -0
- package/dist/interfaces/ConduitService.js +3 -0
- package/dist/interfaces/ConduitService.js.map +1 -0
- package/dist/interfaces/index.d.ts +1 -0
- package/dist/interfaces/index.js +18 -0
- package/dist/interfaces/index.js.map +1 -0
- package/dist/logging/index.d.ts +16 -0
- package/dist/logging/index.js +255 -0
- package/dist/logging/index.js.map +1 -0
- package/dist/metrics/MetricsServer.d.ts +9 -0
- package/dist/metrics/MetricsServer.js +94 -0
- package/dist/metrics/MetricsServer.js.map +1 -0
- package/dist/metrics/clientMiddleware.d.ts +2 -0
- package/dist/metrics/clientMiddleware.js +265 -0
- package/dist/metrics/clientMiddleware.js.map +1 -0
- package/dist/metrics/config/defaults.d.ts +91 -0
- package/dist/metrics/config/defaults.js +93 -0
- package/dist/metrics/config/defaults.js.map +1 -0
- package/dist/metrics/index.d.ts +22 -0
- package/dist/metrics/index.js +152 -0
- package/dist/metrics/index.js.map +1 -0
- package/dist/module.proto +14 -0
- package/dist/routing/ProxyRouteBuilder.d.ts +21 -0
- package/dist/routing/ProxyRouteBuilder.js +81 -0
- package/dist/routing/ProxyRouteBuilder.js.map +1 -0
- package/dist/routing/RouteBuilder.d.ts +23 -0
- package/dist/routing/RouteBuilder.js +107 -0
- package/dist/routing/RouteBuilder.js.map +1 -0
- package/dist/routing/RoutingManager.d.ts +32 -0
- package/dist/routing/RoutingManager.js +198 -0
- package/dist/routing/RoutingManager.js.map +1 -0
- package/dist/routing/RoutingUtilities.d.ts +7 -0
- package/dist/routing/RoutingUtilities.js +13 -0
- package/dist/routing/RoutingUtilities.js.map +1 -0
- package/dist/routing/index.d.ts +5 -0
- package/dist/routing/index.js +22 -0
- package/dist/routing/index.js.map +1 -0
- package/dist/routing/wrapRouterFunctions.d.ts +7 -0
- package/dist/routing/wrapRouterFunctions.js +136 -0
- package/dist/routing/wrapRouterFunctions.js.map +1 -0
- package/dist/utilities/convictConfigParser.d.ts +2 -0
- package/dist/utilities/convictConfigParser.js +18 -0
- package/dist/utilities/convictConfigParser.js.map +1 -0
- package/dist/utilities/index.d.ts +3 -0
- package/dist/utilities/index.js +20 -0
- package/dist/utilities/index.js.map +1 -0
- package/dist/utilities/initializeSdk.d.ts +2 -0
- package/dist/utilities/initializeSdk.js +64 -0
- package/dist/utilities/initializeSdk.js.map +1 -0
- package/dist/utilities/linearBackoffTimeout.d.ts +9 -0
- package/dist/utilities/linearBackoffTimeout.js +119 -0
- package/dist/utilities/linearBackoffTimeout.js.map +1 -0
- package/dist/utilities/merge.d.ts +1 -0
- package/dist/utilities/merge.js +15 -0
- package/dist/utilities/merge.js.map +1 -0
- package/package.json +57 -0
package/README.mdx
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# Conduit Module Tools
|
|
2
|
+
|
|
3
|
+
This library provides a framework to build micro-services in NodeJS that can be used with the Conduit platform.
|
|
4
|
+
|
|
5
|
+
## Build Steps
|
|
6
|
+
|
|
7
|
+
- run npm build
|
|
8
|
+
|
|
9
|
+
## Features ✔️
|
|
10
|
+
|
|
11
|
+
- Service registration & discovery
|
|
12
|
+
- Application route registration
|
|
13
|
+
- Administrative route registration
|
|
14
|
+
- Provides wrappers for gRPC handlers to support async
|
|
15
|
+
- Parses incoming requests and outgoing responses to JSON
|
|
16
|
+
- Provides health check service out of the box
|
|
17
|
+
- Manages the gRPC server so you don't have to
|
|
18
|
+
- Provides classes to facilitate building your own Conduit modules
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { ConduitServiceModule } from './classes';
|
|
2
|
+
import convict from 'convict';
|
|
3
|
+
import { ConduitService } from './interfaces';
|
|
4
|
+
import { GrpcRequest, GrpcResponse, SetConfigRequest, SetConfigResponse } from '@conduitplatform/grpc-sdk';
|
|
5
|
+
export declare abstract class ManagedModule<T> extends ConduitServiceModule {
|
|
6
|
+
readonly config?: convict.Config<T>;
|
|
7
|
+
configOverride: boolean;
|
|
8
|
+
service?: ConduitService;
|
|
9
|
+
protected abstract readonly configSchema?: object;
|
|
10
|
+
protected abstract readonly metricsSchema?: object;
|
|
11
|
+
private readonly serviceAddress;
|
|
12
|
+
private readonly servicePort;
|
|
13
|
+
protected constructor(moduleName: string);
|
|
14
|
+
get name(): string;
|
|
15
|
+
get address(): string;
|
|
16
|
+
start(): Promise<void>;
|
|
17
|
+
/**
|
|
18
|
+
* This is the first function triggered on module spin up.
|
|
19
|
+
* @param address {string} external address:port of service (LoadBalancer)
|
|
20
|
+
* @param port {string} port to bring up gRPC service
|
|
21
|
+
*/
|
|
22
|
+
initialize(address: string, port: string): void;
|
|
23
|
+
/**
|
|
24
|
+
* This is triggered before spinning up the Grpc Server
|
|
25
|
+
* of the module. On this stage, the redis bus and state have
|
|
26
|
+
* not yet been initialized, and only communications with Conduit core
|
|
27
|
+
* have been established.
|
|
28
|
+
*/
|
|
29
|
+
preServerStart(): Promise<void>;
|
|
30
|
+
/**
|
|
31
|
+
* This is triggered right after Grpc Server start.
|
|
32
|
+
* At this stage the core module will communicate with your service
|
|
33
|
+
* for health checks, and the Bus and State management mechanics
|
|
34
|
+
* are online and available.
|
|
35
|
+
*/
|
|
36
|
+
onServerStart(): Promise<void>;
|
|
37
|
+
/**
|
|
38
|
+
* Triggers right before registering the module with Conduit Core.
|
|
39
|
+
*/
|
|
40
|
+
preRegister(): Promise<void>;
|
|
41
|
+
/**
|
|
42
|
+
* Triggers when module has been registered with Conduit Core
|
|
43
|
+
* This is the step where you should initialize your
|
|
44
|
+
* module's general routing (admin or client) and any other operation,
|
|
45
|
+
* that would require other modules being able to reach you
|
|
46
|
+
*/
|
|
47
|
+
onRegister(): Promise<void>;
|
|
48
|
+
/**
|
|
49
|
+
* This is triggered when the module receives new configuration.
|
|
50
|
+
* At this step the configuration has not been checked yet,
|
|
51
|
+
* and has only been parsed.
|
|
52
|
+
* @param config
|
|
53
|
+
*/
|
|
54
|
+
preConfig(config: T): Promise<T>;
|
|
55
|
+
/**
|
|
56
|
+
* This is triggered when new configuration has been applied.
|
|
57
|
+
* This happens either when changes are being made on the configuration,
|
|
58
|
+
* or on module start up, where the config is recovered from the database.
|
|
59
|
+
* In either case the configuration is now available through the
|
|
60
|
+
* Config Controller of the sdk.
|
|
61
|
+
*/
|
|
62
|
+
onConfig(): Promise<void>;
|
|
63
|
+
/**
|
|
64
|
+
* Registers common and module-specific metric types.
|
|
65
|
+
*/
|
|
66
|
+
registerMetrics(): Promise<void>;
|
|
67
|
+
/**
|
|
68
|
+
* Initializes metric startup values.
|
|
69
|
+
* Implemented by individual modules.
|
|
70
|
+
*/
|
|
71
|
+
initializeMetrics(): Promise<void>;
|
|
72
|
+
createGrpcServer(): Promise<void>;
|
|
73
|
+
startGrpcServer(): Promise<void>;
|
|
74
|
+
setConfig(call: GrpcRequest<SetConfigRequest>, callback: GrpcResponse<SetConfigResponse>): Promise<void>;
|
|
75
|
+
/** Used to update the module's configuration on initial Redis/DB reconciliation. */
|
|
76
|
+
handleConfigSyncUpdate(): Promise<void>;
|
|
77
|
+
private preRegisterLifecycle;
|
|
78
|
+
private postRegisterLifecycle;
|
|
79
|
+
}
|
|
@@ -0,0 +1,433 @@
|
|
|
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
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
54
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
55
|
+
};
|
|
56
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
57
|
+
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;
|
|
70
|
+
var _a;
|
|
71
|
+
_this = _super.call(this, moduleName) || this;
|
|
72
|
+
_this.configOverride = false;
|
|
73
|
+
if (!process.env.CONDUIT_SERVER) {
|
|
74
|
+
throw new Error('CONDUIT_SERVER is undefined, specify Conduit server URL');
|
|
75
|
+
}
|
|
76
|
+
_this.servicePort = (_a = process.env.GRPC_PORT) !== null && _a !== void 0 ? _a : '5000';
|
|
77
|
+
_this.serviceAddress =
|
|
78
|
+
// @compat (v0.15): SERVICE_IP -> SERVICE_URL
|
|
79
|
+
process.env.SERVICE_URL || process.env.SERVICE_IP || '0.0.0.0:' + _this.servicePort;
|
|
80
|
+
try {
|
|
81
|
+
_this.grpcSdk = (0, initializeSdk_1.initializeSdk)(process.env.CONDUIT_SERVER, _this.name, true, function () {
|
|
82
|
+
return _this.healthState;
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
catch (e) {
|
|
86
|
+
throw new Error('Failed to initialize grpcSdk');
|
|
87
|
+
}
|
|
88
|
+
return _this;
|
|
89
|
+
}
|
|
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
|
+
});
|
|
139
|
+
});
|
|
140
|
+
};
|
|
141
|
+
/**
|
|
142
|
+
* This is the first function triggered on module spin up.
|
|
143
|
+
* @param address {string} external address:port of service (LoadBalancer)
|
|
144
|
+
* @param port {string} port to bring up gRPC service
|
|
145
|
+
*/
|
|
146
|
+
ManagedModule.prototype.initialize = function (address, port) {
|
|
147
|
+
this._address = address;
|
|
148
|
+
this._port = port;
|
|
149
|
+
if (this.configSchema) {
|
|
150
|
+
this.config = (0, convict_1.default)(this.configSchema);
|
|
151
|
+
}
|
|
152
|
+
};
|
|
153
|
+
/**
|
|
154
|
+
* This is triggered before spinning up the Grpc Server
|
|
155
|
+
* of the module. On this stage, the redis bus and state have
|
|
156
|
+
* not yet been initialized, and only communications with Conduit core
|
|
157
|
+
* have been established.
|
|
158
|
+
*/
|
|
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
|
+
};
|
|
164
|
+
/**
|
|
165
|
+
* This is triggered right after Grpc Server start.
|
|
166
|
+
* At this stage the core module will communicate with your service
|
|
167
|
+
* for health checks, and the Bus and State management mechanics
|
|
168
|
+
* are online and available.
|
|
169
|
+
*/
|
|
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
|
+
};
|
|
175
|
+
/**
|
|
176
|
+
* Triggers right before registering the module with Conduit Core.
|
|
177
|
+
*/
|
|
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
|
+
};
|
|
183
|
+
/**
|
|
184
|
+
* Triggers when module has been registered with Conduit Core
|
|
185
|
+
* This is the step where you should initialize your
|
|
186
|
+
* module's general routing (admin or client) and any other operation,
|
|
187
|
+
* that would require other modules being able to reach you
|
|
188
|
+
*/
|
|
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
|
+
};
|
|
194
|
+
/**
|
|
195
|
+
* This is triggered when the module receives new configuration.
|
|
196
|
+
* At this step the configuration has not been checked yet,
|
|
197
|
+
* and has only been parsed.
|
|
198
|
+
* @param config
|
|
199
|
+
*/
|
|
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
|
+
};
|
|
207
|
+
/**
|
|
208
|
+
* This is triggered when new configuration has been applied.
|
|
209
|
+
* This happens either when changes are being made on the configuration,
|
|
210
|
+
* or on module start up, where the config is recovered from the database.
|
|
211
|
+
* In either case the configuration is now available through the
|
|
212
|
+
* Config Controller of the sdk.
|
|
213
|
+
*/
|
|
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
|
+
};
|
|
219
|
+
/**
|
|
220
|
+
* Registers common and module-specific metric types.
|
|
221
|
+
*/
|
|
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
|
+
};
|
|
237
|
+
/**
|
|
238
|
+
* Initializes metric startup values.
|
|
239
|
+
* Implemented by individual modules.
|
|
240
|
+
*/
|
|
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) {
|
|
289
|
+
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
|
+
};
|
|
337
|
+
/** 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
|
+
});
|
|
362
|
+
});
|
|
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));
|
|
432
|
+
exports.ManagedModule = ManagedModule;
|
|
433
|
+
//# sourceMappingURL=ManagedModule.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ManagedModule.js","sourceRoot":"","sources":["../src/ManagedModule.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { ConduitModel, ConduitSchema, ConduitSchemaOptions, DatabaseProvider, Query } from '@conduitplatform/grpc-sdk';
|
|
2
|
+
export declare class ConduitActiveSchema<T> extends ConduitSchema {
|
|
3
|
+
private readonly dbInstance;
|
|
4
|
+
constructor(dbInstance: DatabaseProvider, name: string, fields?: ConduitModel, modelOptions?: ConduitSchemaOptions, collectionName?: string);
|
|
5
|
+
findOne(query: Query<T>, select?: string, populate?: string | string[]): Promise<T | null>;
|
|
6
|
+
findMany(query: Query<T>, select?: string, skip?: number, limit?: number, sort?: {
|
|
7
|
+
[field: string]: -1 | 1;
|
|
8
|
+
} | string[] | string, populate?: string | string[]): Promise<T[]>;
|
|
9
|
+
create(query: Query<T>): Promise<T>;
|
|
10
|
+
createMany(query: Query<T>[]): Promise<T[]>;
|
|
11
|
+
findByIdAndUpdate(id: string, document: Query<T>, populate?: string | string[]): Promise<T | null>;
|
|
12
|
+
updateMany(filterQuery: Query<T>, query: Query<T>, populate?: string | string[]): Promise<any>;
|
|
13
|
+
deleteOne(query: Query<T>): Promise<any>;
|
|
14
|
+
deleteMany(query: Query<T>): Promise<any>;
|
|
15
|
+
countDocuments(query: Query<T>): Promise<number>;
|
|
16
|
+
}
|
|
@@ -0,0 +1,57 @@
|
|
|
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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
exports.ConduitActiveSchema = void 0;
|
|
19
|
+
var grpc_sdk_1 = require("@conduitplatform/grpc-sdk");
|
|
20
|
+
var ConduitActiveSchema = /** @class */ (function (_super) {
|
|
21
|
+
__extends(ConduitActiveSchema, _super);
|
|
22
|
+
function ConduitActiveSchema(dbInstance, name, fields, modelOptions, collectionName) {
|
|
23
|
+
var _this = _super.call(this, name, fields !== null && fields !== void 0 ? fields : {}, modelOptions, collectionName) || this;
|
|
24
|
+
_this.dbInstance = dbInstance;
|
|
25
|
+
return _this;
|
|
26
|
+
}
|
|
27
|
+
ConduitActiveSchema.prototype.findOne = function (query, select, populate) {
|
|
28
|
+
return this.dbInstance.findOne(this.name, query, select, populate);
|
|
29
|
+
};
|
|
30
|
+
ConduitActiveSchema.prototype.findMany = function (query, select, skip, limit, sort, populate) {
|
|
31
|
+
return this.dbInstance.findMany(this.name, query, select, skip, limit, sort, populate);
|
|
32
|
+
};
|
|
33
|
+
ConduitActiveSchema.prototype.create = function (query) {
|
|
34
|
+
return this.dbInstance.create(this.name, query);
|
|
35
|
+
};
|
|
36
|
+
ConduitActiveSchema.prototype.createMany = function (query) {
|
|
37
|
+
return this.dbInstance.createMany(this.name, query);
|
|
38
|
+
};
|
|
39
|
+
ConduitActiveSchema.prototype.findByIdAndUpdate = function (id, document, populate) {
|
|
40
|
+
return this.dbInstance.findByIdAndUpdate(this.name, id, document, populate);
|
|
41
|
+
};
|
|
42
|
+
ConduitActiveSchema.prototype.updateMany = function (filterQuery, query, populate) {
|
|
43
|
+
return this.dbInstance.updateMany(this.name, filterQuery, query, populate);
|
|
44
|
+
};
|
|
45
|
+
ConduitActiveSchema.prototype.deleteOne = function (query) {
|
|
46
|
+
return this.dbInstance.deleteOne(this.name, query);
|
|
47
|
+
};
|
|
48
|
+
ConduitActiveSchema.prototype.deleteMany = function (query) {
|
|
49
|
+
return this.dbInstance.deleteMany(this.name, query);
|
|
50
|
+
};
|
|
51
|
+
ConduitActiveSchema.prototype.countDocuments = function (query) {
|
|
52
|
+
return this.dbInstance.countDocuments(this.name, query);
|
|
53
|
+
};
|
|
54
|
+
return ConduitActiveSchema;
|
|
55
|
+
}(grpc_sdk_1.ConduitSchema));
|
|
56
|
+
exports.ConduitActiveSchema = ConduitActiveSchema;
|
|
57
|
+
//# sourceMappingURL=ConduitActiveSchema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConduitActiveSchema.js","sourceRoot":"","sources":["../../src/classes/ConduitActiveSchema.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAAA,sDAMmC;AAEnC;IAA4C,uCAAa;IAGvD,6BACE,UAA4B,EAC5B,IAAY,EACZ,MAAqB,EACrB,YAAmC,EACnC,cAAuB;QALzB,YAOE,kBAAM,IAAI,EAAE,MAAM,aAAN,MAAM,cAAN,MAAM,GAAI,EAAE,EAAE,YAAY,EAAE,cAAc,CAAC,SAExD;QADC,KAAI,CAAC,UAAU,GAAG,UAAU,CAAC;;IAC/B,CAAC;IAED,qCAAO,GAAP,UACE,KAAe,EACf,MAAe,EACf,QAA4B;QAE5B,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,CAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;IACxE,CAAC;IAED,sCAAQ,GAAR,UACE,KAAe,EACf,MAAe,EACf,IAAa,EACb,KAAc,EACd,IAAsD,EACtD,QAA4B;QAE5B,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,CAC7B,IAAI,CAAC,IAAI,EACT,KAAK,EACL,MAAM,EACN,IAAI,EACJ,KAAK,EACL,IAAI,EACJ,QAAQ,CACT,CAAC;IACJ,CAAC;IAED,oCAAM,GAAN,UAAO,KAAe;QACpB,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAI,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACrD,CAAC;IAED,wCAAU,GAAV,UAAW,KAAiB;QAC1B,OAAO,IAAI,CAAC,UAAU,CAAC,UAAU,CAAI,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACzD,CAAC;IAED,+CAAiB,GAAjB,UACE,EAAU,EACV,QAAkB,EAClB,QAA4B;QAE5B,OAAO,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAI,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACjF,CAAC;IAED,wCAAU,GAAV,UAAW,WAAqB,EAAE,KAAe,EAAE,QAA4B;QAC7E,OAAO,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;IAC7E,CAAC;IAED,uCAAS,GAAT,UAAU,KAAe;QACvB,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACrD,CAAC;IAED,wCAAU,GAAV,UAAW,KAAe;QACxB,OAAO,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACtD,CAAC;IAED,4CAAc,GAAd,UAAe,KAAe;QAC5B,OAAO,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC1D,CAAC;IACH,0BAAC;AAAD,CAAC,AAxED,CAA4C,wBAAa,GAwExD;AAxEY,kDAAmB"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { EventEmitter } from 'events';
|
|
3
|
+
import { ServerWritableStream } from '@grpc/grpc-js';
|
|
4
|
+
import { GrpcServer } from './GrpcServer';
|
|
5
|
+
import ConduitGrpcSdk, { GrpcCallback, GrpcRequest, GrpcResponse, HealthCheckRequest, HealthCheckResponse, HealthCheckStatus, SetConfigRequest, SetConfigResponse } from '@conduitplatform/grpc-sdk';
|
|
6
|
+
export declare abstract class ConduitServiceModule {
|
|
7
|
+
protected readonly _moduleName: string;
|
|
8
|
+
protected _serviceName?: string;
|
|
9
|
+
protected _address: string;
|
|
10
|
+
protected grpcServer: GrpcServer;
|
|
11
|
+
protected readonly events: EventEmitter;
|
|
12
|
+
private _serviceHealthState;
|
|
13
|
+
protected constructor(moduleName: string);
|
|
14
|
+
protected _port: string;
|
|
15
|
+
get port(): string;
|
|
16
|
+
private _grpcSdk;
|
|
17
|
+
get grpcSdk(): ConduitGrpcSdk;
|
|
18
|
+
set grpcSdk(grpcSdk: ConduitGrpcSdk);
|
|
19
|
+
get healthState(): HealthCheckStatus;
|
|
20
|
+
updateHealth(state: HealthCheckStatus, init?: boolean): void;
|
|
21
|
+
healthCheck(call: GrpcRequest<HealthCheckRequest>, callback: GrpcCallback<HealthCheckResponse>): void;
|
|
22
|
+
healthWatch(call: ServerWritableStream<HealthCheckRequest, HealthCheckResponse>): void;
|
|
23
|
+
abstract setConfig(call: GrpcRequest<SetConfigRequest>, callback: GrpcResponse<SetConfigResponse>): Promise<void>;
|
|
24
|
+
protected addHealthCheckService(): Promise<void>;
|
|
25
|
+
protected addModuleService(): Promise<void>;
|
|
26
|
+
}
|