@conduitplatform/module-tools 0.16.5 → 0.16.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/dist/classes/ConduitServiceModule.d.ts +2 -2
- package/dist/index.cjs +1776 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.esm.js +1749 -0
- package/dist/index.esm.js.map +1 -0
- package/dist/utilities/initializeSdk.d.ts +1 -1
- package/package.json +27 -5
- package/dist/ManagedModule.js +0 -221
- package/dist/ManagedModule.js.map +0 -1
- package/dist/classes/ConduitActiveSchema.js +0 -44
- package/dist/classes/ConduitActiveSchema.js.map +0 -1
- package/dist/classes/ConduitServiceModule.js +0 -110
- package/dist/classes/ConduitServiceModule.js.map +0 -1
- package/dist/classes/ConfigController.js +0 -16
- package/dist/classes/ConfigController.js.map +0 -1
- package/dist/classes/GrpcServer.js +0 -121
- package/dist/classes/GrpcServer.js.map +0 -1
- package/dist/classes/index.js +0 -5
- package/dist/classes/index.js.map +0 -1
- package/dist/helpers/GrpcHelper.js +0 -38
- package/dist/helpers/GrpcHelper.js.map +0 -1
- package/dist/helpers/GrpcToParsedRouterRequest.js +0 -15
- package/dist/helpers/GrpcToParsedRouterRequest.js.map +0 -1
- package/dist/helpers/TypeHelpers.js +0 -79
- package/dist/helpers/TypeHelpers.js.map +0 -1
- package/dist/helpers/index.js +0 -5
- package/dist/helpers/index.js.map +0 -1
- package/dist/helpers/wrapGrpcFunctions.js +0 -48
- package/dist/helpers/wrapGrpcFunctions.js.map +0 -1
- package/dist/index.js +0 -7
- package/dist/index.js.map +0 -1
- package/dist/interfaces/ConduitService.js +0 -2
- package/dist/interfaces/ConduitService.js.map +0 -1
- package/dist/interfaces/ModuleLifecycleStage.js +0 -9
- package/dist/interfaces/ModuleLifecycleStage.js.map +0 -1
- package/dist/interfaces/index.js +0 -3
- package/dist/interfaces/index.js.map +0 -1
- package/dist/logging/index.js +0 -124
- package/dist/logging/index.js.map +0 -1
- package/dist/metrics/MetricsServer.js +0 -42
- package/dist/metrics/MetricsServer.js.map +0 -1
- package/dist/metrics/clientMiddleware.js +0 -120
- package/dist/metrics/clientMiddleware.js.map +0 -1
- package/dist/metrics/config/defaults.js +0 -91
- package/dist/metrics/config/defaults.js.map +0 -1
- package/dist/metrics/index.js +0 -109
- package/dist/metrics/index.js.map +0 -1
- package/dist/routing/ProxyRouteBuilder.js +0 -74
- package/dist/routing/ProxyRouteBuilder.js.map +0 -1
- package/dist/routing/RouteBuilder.js +0 -100
- package/dist/routing/RouteBuilder.js.map +0 -1
- package/dist/routing/RoutingController.js +0 -21
- package/dist/routing/RoutingController.js.map +0 -1
- package/dist/routing/RoutingManager.js +0 -140
- package/dist/routing/RoutingManager.js.map +0 -1
- package/dist/routing/RoutingUtilities.js +0 -9
- package/dist/routing/RoutingUtilities.js.map +0 -1
- package/dist/routing/index.js +0 -6
- package/dist/routing/index.js.map +0 -1
- package/dist/routing/wrapRouterFunctions.js +0 -120
- package/dist/routing/wrapRouterFunctions.js.map +0 -1
- package/dist/utilities/convictConfigParser.js +0 -14
- package/dist/utilities/convictConfigParser.js.map +0 -1
- package/dist/utilities/index.js +0 -4
- package/dist/utilities/index.js.map +0 -1
- package/dist/utilities/initializeSdk.js +0 -35
- package/dist/utilities/initializeSdk.js.map +0 -1
- package/dist/utilities/linearBackoffTimeout.js +0 -57
- package/dist/utilities/linearBackoffTimeout.js.map +0 -1
- package/dist/utilities/merge.js +0 -11
- package/dist/utilities/merge.js.map +0 -1
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import { loadPackageDefinition, Server, ServerCredentials, } from '@grpc/grpc-js';
|
|
2
|
-
import protoLoader from '@grpc/proto-loader';
|
|
3
|
-
export function createServer(port) {
|
|
4
|
-
const grpcServer = new Server({
|
|
5
|
-
'grpc.max_receive_message_length': 1024 * 1024 * 100,
|
|
6
|
-
'grpc.max_send_message_length': 1024 * 1024 * 100,
|
|
7
|
-
});
|
|
8
|
-
return new Promise((resolve, reject) => {
|
|
9
|
-
grpcServer.bindAsync(port, ServerCredentials.createInsecure(), (err, port) => {
|
|
10
|
-
if (err) {
|
|
11
|
-
reject(err);
|
|
12
|
-
}
|
|
13
|
-
else {
|
|
14
|
-
resolve({
|
|
15
|
-
server: grpcServer,
|
|
16
|
-
port,
|
|
17
|
-
});
|
|
18
|
-
}
|
|
19
|
-
});
|
|
20
|
-
});
|
|
21
|
-
}
|
|
22
|
-
export function addServiceToServer(server, protoPath, descriptorObject, functions) {
|
|
23
|
-
const packageDefinition = protoLoader.loadSync(protoPath, {
|
|
24
|
-
keepCase: true,
|
|
25
|
-
longs: String,
|
|
26
|
-
enums: String,
|
|
27
|
-
defaults: true,
|
|
28
|
-
oneofs: true,
|
|
29
|
-
});
|
|
30
|
-
const protoDescriptor = loadPackageDefinition(packageDefinition);
|
|
31
|
-
const objs = descriptorObject.split('.');
|
|
32
|
-
let descObj = protoDescriptor;
|
|
33
|
-
objs.forEach((r) => {
|
|
34
|
-
descObj = descObj[r];
|
|
35
|
-
});
|
|
36
|
-
server.addService(descObj.service, functions);
|
|
37
|
-
}
|
|
38
|
-
//# sourceMappingURL=GrpcHelper.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"GrpcHelper.js","sourceRoot":"","sources":["../../src/helpers/GrpcHelper.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,MAAM,EACN,iBAAiB,GAElB,MAAM,eAAe,CAAC;AAEvB,OAAO,WAAW,MAAM,oBAAoB,CAAC;AAE7C,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,MAAM,UAAU,GAAW,IAAI,MAAM,CAAC;QACpC,iCAAiC,EAAE,IAAI,GAAG,IAAI,GAAG,GAAG;QACpD,8BAA8B,EAAE,IAAI,GAAG,IAAI,GAAG,GAAG;KAClD,CAAC,CAAC;IACH,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,UAAU,CAAC,SAAS,CAAC,IAAI,EAAE,iBAAiB,CAAC,cAAc,EAAE,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;YAC3E,IAAI,GAAG,EAAE,CAAC;gBACR,MAAM,CAAC,GAAG,CAAC,CAAC;YACd,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC;oBACN,MAAM,EAAE,UAAU;oBAClB,IAAI;iBACL,CAAC,CAAC;YACL,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,MAAc,EACd,SAAiB,EACjB,gBAAwB,EACxB,SAAuC;IAEvC,MAAM,iBAAiB,GAAG,WAAW,CAAC,QAAQ,CAAC,SAAS,EAAE;QACxD,QAAQ,EAAE,IAAI;QACd,KAAK,EAAE,MAAM;QACb,KAAK,EAAE,MAAM;QACb,QAAQ,EAAE,IAAI;QACd,MAAM,EAAE,IAAI;KACb,CAAC,CAAC;IACH,MAAM,eAAe,GAAG,qBAAqB,CAAC,iBAAiB,CAAC,CAAC;IACjE,MAAM,IAAI,GAAG,gBAAgB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACzC,IAAI,OAAO,GAAQ,eAAe,CAAC;IACnC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAS,EAAE,EAAE;QACzB,OAAO,GAAG,OAAO,CAAC,CAAC,CAAQ,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,EAAE,SAAyC,CAAC,CAAC;AAChF,CAAC"}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
export function createParsedRouterRequest(params, urlParams, queryParams, bodyParams, path, headers, context, cookies) {
|
|
2
|
-
return {
|
|
3
|
-
request: {
|
|
4
|
-
params,
|
|
5
|
-
urlParams: urlParams !== null && urlParams !== void 0 ? urlParams : {},
|
|
6
|
-
queryParams: queryParams !== null && queryParams !== void 0 ? queryParams : {},
|
|
7
|
-
bodyParams: bodyParams !== null && bodyParams !== void 0 ? bodyParams : {},
|
|
8
|
-
path: path !== null && path !== void 0 ? path : '',
|
|
9
|
-
headers: headers,
|
|
10
|
-
context: context !== null && context !== void 0 ? context : {},
|
|
11
|
-
cookies: cookies !== null && cookies !== void 0 ? cookies : {},
|
|
12
|
-
},
|
|
13
|
-
};
|
|
14
|
-
}
|
|
15
|
-
//# sourceMappingURL=GrpcToParsedRouterRequest.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"GrpcToParsedRouterRequest.js","sourceRoot":"","sources":["../../src/helpers/GrpcToParsedRouterRequest.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,yBAAyB,CACvC,MAAc,EACd,SAAkB,EAClB,WAAoB,EACpB,UAAmB,EACnB,IAAa,EACb,OAAiB,EACjB,OAAiB,EACjB,OAAiB;IAEjB,OAA4B;QAC1B,OAAO,EAAE;YACP,MAAM;YACN,SAAS,EAAE,SAAS,aAAT,SAAS,cAAT,SAAS,GAAI,EAAE;YAC1B,WAAW,EAAE,WAAW,aAAX,WAAW,cAAX,WAAW,GAAI,EAAE;YAC9B,UAAU,EAAE,UAAU,aAAV,UAAU,cAAV,UAAU,GAAI,EAAE;YAC5B,IAAI,EAAE,IAAI,aAAJ,IAAI,cAAJ,IAAI,GAAI,EAAE;YAChB,OAAO,EAAE,OAAO;YAChB,OAAO,EAAE,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,EAAE;YACtB,OAAO,EAAE,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,EAAE;SACvB;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
import { TYPE } from '@conduitplatform/grpc-sdk';
|
|
2
|
-
class ConduitStringConstructor {
|
|
3
|
-
// private to disallow creating other instances of this type
|
|
4
|
-
constructor() { }
|
|
5
|
-
static get Optional() {
|
|
6
|
-
return TYPE.String;
|
|
7
|
-
}
|
|
8
|
-
static get Required() {
|
|
9
|
-
return { type: TYPE.String, required: true };
|
|
10
|
-
}
|
|
11
|
-
}
|
|
12
|
-
export const ConduitString = ConduitStringConstructor;
|
|
13
|
-
class ConduitNumberConstructor {
|
|
14
|
-
// private to disallow creating other instances of this type
|
|
15
|
-
constructor() { }
|
|
16
|
-
static get Optional() {
|
|
17
|
-
return TYPE.Number;
|
|
18
|
-
}
|
|
19
|
-
static get Required() {
|
|
20
|
-
return { type: TYPE.Number, required: true };
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
export const ConduitNumber = ConduitNumberConstructor;
|
|
24
|
-
class ConduitBooleanConstructor {
|
|
25
|
-
// private to disallow creating other instances of this type
|
|
26
|
-
constructor() { }
|
|
27
|
-
static get Optional() {
|
|
28
|
-
return TYPE.Boolean;
|
|
29
|
-
}
|
|
30
|
-
static get Required() {
|
|
31
|
-
return { type: TYPE.Boolean, required: true };
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
export const ConduitBoolean = ConduitBooleanConstructor;
|
|
35
|
-
class ConduitDateConstructor {
|
|
36
|
-
// private to disallow creating other instances of this type
|
|
37
|
-
constructor() { }
|
|
38
|
-
static get Optional() {
|
|
39
|
-
return TYPE.Date;
|
|
40
|
-
}
|
|
41
|
-
static get Required() {
|
|
42
|
-
return { type: TYPE.Date, required: true };
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
export const ConduitDate = ConduitDateConstructor;
|
|
46
|
-
class ConduitObjectIdConstructor {
|
|
47
|
-
// private to disallow creating other instances of this type
|
|
48
|
-
constructor() { }
|
|
49
|
-
static get Optional() {
|
|
50
|
-
return TYPE.ObjectId;
|
|
51
|
-
}
|
|
52
|
-
static get Required() {
|
|
53
|
-
return { type: TYPE.ObjectId, required: true };
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
export const ConduitObjectId = ConduitObjectIdConstructor;
|
|
57
|
-
class ConduitJSONConstructor {
|
|
58
|
-
// private to disallow creating other instances of this type
|
|
59
|
-
constructor() { }
|
|
60
|
-
static get Optional() {
|
|
61
|
-
return TYPE.JSON;
|
|
62
|
-
}
|
|
63
|
-
static get Required() {
|
|
64
|
-
return { type: TYPE.JSON, required: true };
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
export const ConduitJson = ConduitJSONConstructor;
|
|
68
|
-
class ConduitRelationConstructor {
|
|
69
|
-
// private to disallow creating other instances of this type
|
|
70
|
-
constructor() { }
|
|
71
|
-
static Optional(model) {
|
|
72
|
-
return { type: TYPE.Relation, model, required: false };
|
|
73
|
-
}
|
|
74
|
-
static Required(model) {
|
|
75
|
-
return { type: TYPE.Relation, model, required: true };
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
export const ConduitRelation = ConduitRelationConstructor;
|
|
79
|
-
//# sourceMappingURL=TypeHelpers.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TypeHelpers.js","sourceRoot":"","sources":["../../src/helpers/TypeHelpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,2BAA2B,CAAC;AAEjD,MAAM,wBAAwB;IAC5B,4DAA4D;IAC5D,gBAAuB,CAAC;IAExB,MAAM,KAAK,QAAQ;QACjB,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,MAAM,KAAK,QAAQ;QACjB,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC/C,CAAC;CACF;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,wBAAwB,CAAC;AAEtD,MAAM,wBAAwB;IAC5B,4DAA4D;IAC5D,gBAAuB,CAAC;IAExB,MAAM,KAAK,QAAQ;QACjB,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,MAAM,KAAK,QAAQ;QACjB,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC/C,CAAC;CACF;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,wBAAwB,CAAC;AAEtD,MAAM,yBAAyB;IAC7B,4DAA4D;IAC5D,gBAAuB,CAAC;IAExB,MAAM,KAAK,QAAQ;QACjB,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,MAAM,KAAK,QAAQ;QACjB,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAChD,CAAC;CACF;AAED,MAAM,CAAC,MAAM,cAAc,GAAG,yBAAyB,CAAC;AAExD,MAAM,sBAAsB;IAC1B,4DAA4D;IAC5D,gBAAuB,CAAC;IAExB,MAAM,KAAK,QAAQ;QACjB,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED,MAAM,KAAK,QAAQ;QACjB,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC7C,CAAC;CACF;AAED,MAAM,CAAC,MAAM,WAAW,GAAG,sBAAsB,CAAC;AAElD,MAAM,0BAA0B;IAC9B,4DAA4D;IAC5D,gBAAuB,CAAC;IAExB,MAAM,KAAK,QAAQ;QACjB,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED,MAAM,KAAK,QAAQ;QACjB,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IACjD,CAAC;CACF;AAED,MAAM,CAAC,MAAM,eAAe,GAAG,0BAA0B,CAAC;AAE1D,MAAM,sBAAsB;IAC1B,4DAA4D;IAC5D,gBAAuB,CAAC;IAExB,MAAM,KAAK,QAAQ;QACjB,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED,MAAM,KAAK,QAAQ;QACjB,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC7C,CAAC;CACF;AAED,MAAM,CAAC,MAAM,WAAW,GAAG,sBAAsB,CAAC;AAElD,MAAM,0BAA0B;IAC9B,4DAA4D;IAC5D,gBAAuB,CAAC;IAExB,MAAM,CAAC,QAAQ,CAAC,KAAa;QAK3B,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;IACzD,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,KAAa;QAC3B,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IACxD,CAAC;CACF;AAED,MAAM,CAAC,MAAM,eAAe,GAAG,0BAA0B,CAAC"}
|
package/dist/helpers/index.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/helpers/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,wBAAwB,CAAC;AACvC,cAAc,gCAAgC,CAAC"}
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
import { createVerifier } from 'fast-jwt';
|
|
2
|
-
import { status } from '@grpc/grpc-js';
|
|
3
|
-
import ConduitGrpcSdk from '@conduitplatform/grpc-sdk';
|
|
4
|
-
export function wrapGrpcFunctions(functions, postponeRestart) {
|
|
5
|
-
const grpcKey = process.env.GRPC_KEY;
|
|
6
|
-
const wrappedFunctions = {};
|
|
7
|
-
Object.keys(functions).forEach(name => {
|
|
8
|
-
wrappedFunctions[name] = (call, callback) => {
|
|
9
|
-
var _a;
|
|
10
|
-
(_a = ConduitGrpcSdk.Metrics) === null || _a === void 0 ? void 0 : _a.increment('internal_grpc_requests_total');
|
|
11
|
-
postponeRestart();
|
|
12
|
-
if (grpcKey) {
|
|
13
|
-
const verify = createVerifier({ key: grpcKey });
|
|
14
|
-
const grpcToken = call.metadata.get('grpc-token')[0];
|
|
15
|
-
if (!grpcToken) {
|
|
16
|
-
return throwError(callback, 'No gRPC protection token provided', status.PERMISSION_DENIED);
|
|
17
|
-
}
|
|
18
|
-
try {
|
|
19
|
-
const jwt = verify(grpcToken);
|
|
20
|
-
call.metadata.set('module-name', jwt.moduleName);
|
|
21
|
-
}
|
|
22
|
-
catch (_b) {
|
|
23
|
-
return throwError(callback, 'Failed to verify gRPC protection token. GRPC_KEY value differs', status.PERMISSION_DENIED);
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
let invoked;
|
|
27
|
-
try {
|
|
28
|
-
invoked = functions[name](call, callback);
|
|
29
|
-
}
|
|
30
|
-
catch (error) {
|
|
31
|
-
return throwError(callback, error.message);
|
|
32
|
-
}
|
|
33
|
-
if (typeof (invoked === null || invoked === void 0 ? void 0 : invoked.then) === 'function') {
|
|
34
|
-
invoked.then().catch((error) => {
|
|
35
|
-
return throwError(callback, error.message);
|
|
36
|
-
});
|
|
37
|
-
}
|
|
38
|
-
};
|
|
39
|
-
});
|
|
40
|
-
return wrappedFunctions;
|
|
41
|
-
}
|
|
42
|
-
function throwError(callback, message, code = status.INTERNAL) {
|
|
43
|
-
// Aborting server streams is not yet implemented!
|
|
44
|
-
if (callback) {
|
|
45
|
-
callback({ code, message });
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
//# sourceMappingURL=wrapGrpcFunctions.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"wrapGrpcFunctions.js","sourceRoot":"","sources":["../../src/helpers/wrapGrpcFunctions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,cAAgC,MAAM,2BAA2B,CAAC;AAOzE,MAAM,UAAU,iBAAiB,CAC/B,SAAuC,EACvC,eAA2B;IAE3B,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;IACrC,MAAM,gBAAgB,GAAiC,EAAE,CAAC;IAC1D,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;QACpC,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,IAAS,EAAE,QAAa,EAAE,EAAE;;YACpD,MAAA,cAAc,CAAC,OAAO,0CAAE,SAAS,CAAC,8BAA8B,CAAC,CAAC;YAClE,eAAe,EAAE,CAAC;YAClB,IAAI,OAAO,EAAE,CAAC;gBACZ,MAAM,MAAM,GAAG,cAAc,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC;gBAChD,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;gBACrD,IAAI,CAAC,SAAS,EAAE,CAAC;oBACf,OAAO,UAAU,CACf,QAAQ,EACR,mCAAmC,EACnC,MAAM,CAAC,iBAAiB,CACzB,CAAC;gBACJ,CAAC;gBACD,IAAI,CAAC;oBACH,MAAM,GAAG,GAAQ,MAAM,CAAC,SAAS,CAAC,CAAC;oBACnC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,aAAa,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC;gBACnD,CAAC;gBAAC,WAAM,CAAC;oBACP,OAAO,UAAU,CACf,QAAQ,EACR,gEAAgE,EAChE,MAAM,CAAC,iBAAiB,CACzB,CAAC;gBACJ,CAAC;YACH,CAAC;YACD,IAAI,OAA2B,CAAC;YAChC,IAAI,CAAC;gBACH,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YAC5C,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,UAAU,CAAC,QAAQ,EAAG,KAAe,CAAC,OAAO,CAAC,CAAC;YACxD,CAAC;YACD,IAAI,OAAO,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,IAAI,CAAA,KAAK,UAAU,EAAE,CAAC;gBACxC,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAY,EAAE,EAAE;oBACpC,OAAO,UAAU,CAAC,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;gBAC7C,CAAC,CAAC,CAAC;YACL,CAAC;QACH,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IACH,OAAO,gBAAgB,CAAC;AAC1B,CAAC;AAED,SAAS,UAAU,CACjB,QAAuC,EACvC,OAAe,EACf,OAAe,MAAM,CAAC,QAAQ;IAE9B,kDAAkD;IAClD,IAAI,QAAQ,EAAE,CAAC;QACb,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;IAC9B,CAAC;AACH,CAAC"}
|
package/dist/index.js
DELETED
package/dist/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ConduitService.js","sourceRoot":"","sources":["../../src/interfaces/ConduitService.ts"],"names":[],"mappings":""}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
export var ModuleLifecycleStage;
|
|
2
|
-
(function (ModuleLifecycleStage) {
|
|
3
|
-
ModuleLifecycleStage["CREATE_GRPC"] = "creat-grpc-server";
|
|
4
|
-
ModuleLifecycleStage["PRE_SERVER_START"] = "pre-grpc-start";
|
|
5
|
-
ModuleLifecycleStage["SERVER_STARTED"] = "grpc-server-started";
|
|
6
|
-
ModuleLifecycleStage["PRE_REGISTER"] = "pre-register";
|
|
7
|
-
ModuleLifecycleStage["POST_REGISTER"] = "post-register";
|
|
8
|
-
})(ModuleLifecycleStage || (ModuleLifecycleStage = {}));
|
|
9
|
-
//# sourceMappingURL=ModuleLifecycleStage.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ModuleLifecycleStage.js","sourceRoot":"","sources":["../../src/interfaces/ModuleLifecycleStage.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,oBAMX;AAND,WAAY,oBAAoB;IAC9B,yDAAiC,CAAA;IACjC,2DAAmC,CAAA;IACnC,8DAAsC,CAAA;IACtC,qDAA6B,CAAA;IAC7B,uDAA+B,CAAA;AACjC,CAAC,EANW,oBAAoB,KAApB,oBAAoB,QAM/B"}
|
package/dist/interfaces/index.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/interfaces/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC"}
|
package/dist/logging/index.js
DELETED
|
@@ -1,124 +0,0 @@
|
|
|
1
|
-
import ConduitGrpcSdk from '@conduitplatform/grpc-sdk';
|
|
2
|
-
import winston, { format } from 'winston';
|
|
3
|
-
import { isEmpty } from 'lodash-es';
|
|
4
|
-
import { get } from 'http';
|
|
5
|
-
import LokiTransport from 'winston-loki';
|
|
6
|
-
import { linearBackoffTimeoutAsync } from '../utilities/index.js';
|
|
7
|
-
const processMeta = (meta) => {
|
|
8
|
-
if (Array.isArray(meta)) {
|
|
9
|
-
return meta.reduce((message, meta) => `${message} \n ${JSON.stringify(meta, null, 2)}`, '');
|
|
10
|
-
}
|
|
11
|
-
else {
|
|
12
|
-
return JSON.stringify(meta, null, 2);
|
|
13
|
-
}
|
|
14
|
-
};
|
|
15
|
-
const createFormat = (logMeta = true) => {
|
|
16
|
-
return format.combine(format.printf(info => {
|
|
17
|
-
// This will customize the Error Message
|
|
18
|
-
if (info.stack) {
|
|
19
|
-
return `[${info.timestamp}] [${info.level.toUpperCase()}]: ${info.message} ${info.stack}`;
|
|
20
|
-
}
|
|
21
|
-
if (logMeta) {
|
|
22
|
-
return `[${info.timestamp}] [${info.level.toUpperCase()}]: ${info.message} ${!isEmpty(info.meta) ? processMeta(info.meta) : ''}`;
|
|
23
|
-
}
|
|
24
|
-
else {
|
|
25
|
-
return `[${info.timestamp}] [${info.level.toUpperCase()}]: ${info.message}`;
|
|
26
|
-
}
|
|
27
|
-
}));
|
|
28
|
-
};
|
|
29
|
-
const defaultTransport = new winston.transports.Console({
|
|
30
|
-
level: 'debug',
|
|
31
|
-
format: format.combine(format.prettyPrint(), format.errors({ stack: true }), format.timestamp({
|
|
32
|
-
format: 'YYYY-MM-DD HH:mm:ss',
|
|
33
|
-
}), createFormat(false), format.colorize({
|
|
34
|
-
all: true,
|
|
35
|
-
})),
|
|
36
|
-
});
|
|
37
|
-
export class ConduitLogger {
|
|
38
|
-
constructor(transports) {
|
|
39
|
-
this._winston = winston.createLogger({
|
|
40
|
-
format: format.combine(format.prettyPrint(), format.errors({ stack: true }), format.timestamp({
|
|
41
|
-
format: 'YYYY-MM-DD HH:mm:ss',
|
|
42
|
-
}), createFormat()),
|
|
43
|
-
transports: transports ? [...transports, defaultTransport] : [defaultTransport],
|
|
44
|
-
});
|
|
45
|
-
}
|
|
46
|
-
get winston() {
|
|
47
|
-
return this._winston;
|
|
48
|
-
}
|
|
49
|
-
addTransport(transport) {
|
|
50
|
-
this._winston.add(transport);
|
|
51
|
-
}
|
|
52
|
-
log(message, level = 'info', cb) {
|
|
53
|
-
return this._winston.log(level, message, cb);
|
|
54
|
-
}
|
|
55
|
-
logObject(object, message = '', level = 'info', cb) {
|
|
56
|
-
return this._winston.log(level, message, object, cb);
|
|
57
|
-
}
|
|
58
|
-
info(message, cb) {
|
|
59
|
-
return this._winston.info(message, cb);
|
|
60
|
-
}
|
|
61
|
-
warn(message, cb) {
|
|
62
|
-
return this._winston.warn(message, cb);
|
|
63
|
-
}
|
|
64
|
-
error(message, cb) {
|
|
65
|
-
if (typeof message === 'object') {
|
|
66
|
-
return this._winston.error(message);
|
|
67
|
-
}
|
|
68
|
-
return this._winston.error(message, cb);
|
|
69
|
-
}
|
|
70
|
-
http(message, cb) {
|
|
71
|
-
return this._winston.http(message, cb);
|
|
72
|
-
}
|
|
73
|
-
verbose(message, cb) {
|
|
74
|
-
return this._winston.verbose(message, cb);
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
async function lokiReadyCheck(lokiUrl) {
|
|
78
|
-
return new Promise((resolve, reject) => {
|
|
79
|
-
const data = [];
|
|
80
|
-
get(`${lokiUrl}/ready`, r => {
|
|
81
|
-
r.on('data', chunk => data.push(chunk));
|
|
82
|
-
r.on('end', () => {
|
|
83
|
-
if (Buffer.concat(data).toString() === 'ready\n')
|
|
84
|
-
resolve();
|
|
85
|
-
else
|
|
86
|
-
reject(false);
|
|
87
|
-
});
|
|
88
|
-
}).on('error', err => {
|
|
89
|
-
reject(err.message);
|
|
90
|
-
});
|
|
91
|
-
});
|
|
92
|
-
}
|
|
93
|
-
export async function setupLoki(module, instance) {
|
|
94
|
-
let lokiUrl = process.env.LOKI_URL;
|
|
95
|
-
if (lokiUrl && lokiUrl !== '') {
|
|
96
|
-
if (lokiUrl.endsWith('/'))
|
|
97
|
-
lokiUrl = lokiUrl.slice(0, -1);
|
|
98
|
-
const onTry = async () => {
|
|
99
|
-
return await lokiReadyCheck(lokiUrl)
|
|
100
|
-
.then(() => {
|
|
101
|
-
ConduitGrpcSdk.Logger.addTransport(new LokiTransport({
|
|
102
|
-
level: 'debug',
|
|
103
|
-
host: lokiUrl,
|
|
104
|
-
batching: false,
|
|
105
|
-
replaceTimestamp: true,
|
|
106
|
-
labels: {
|
|
107
|
-
module,
|
|
108
|
-
instance,
|
|
109
|
-
...(process.env.CONDUIT_NAMESPACE && {
|
|
110
|
-
namespace: process.env.CONDUIT_NAMESPACE,
|
|
111
|
-
}),
|
|
112
|
-
},
|
|
113
|
-
}));
|
|
114
|
-
return false;
|
|
115
|
-
})
|
|
116
|
-
.catch(() => true); // retry
|
|
117
|
-
};
|
|
118
|
-
const onFailure = () => {
|
|
119
|
-
ConduitGrpcSdk.Logger.error(`Failed to connect to Loki on '${lokiUrl}'`);
|
|
120
|
-
};
|
|
121
|
-
await linearBackoffTimeoutAsync(onTry, 250, 15, onFailure, true);
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/logging/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import express from 'express';
|
|
2
|
-
import { isNaN } from 'lodash-es';
|
|
3
|
-
import ConduitGrpcSdk from '@conduitplatform/grpc-sdk';
|
|
4
|
-
export class MetricsServer {
|
|
5
|
-
constructor(moduleName, instance, registry) {
|
|
6
|
-
this.moduleName = moduleName;
|
|
7
|
-
this.instance = instance;
|
|
8
|
-
this.Registry = registry;
|
|
9
|
-
}
|
|
10
|
-
initialize() {
|
|
11
|
-
const server = express();
|
|
12
|
-
const port = this.getHttpPort();
|
|
13
|
-
const url = '0.0.0.0:' + port.toString();
|
|
14
|
-
server.listen(port, () => {
|
|
15
|
-
ConduitGrpcSdk.Logger.info(`Metrics server listening on: ${url}`);
|
|
16
|
-
});
|
|
17
|
-
server.get('/', (req, res) => {
|
|
18
|
-
return res
|
|
19
|
-
.status(200)
|
|
20
|
-
.send(`Conduit Metrics for module: ${this.moduleName}, instance: ${this.instance}`);
|
|
21
|
-
});
|
|
22
|
-
server.get('/metrics', async (req, res) => {
|
|
23
|
-
const metrics = await this.Registry.metrics();
|
|
24
|
-
return res.status(200).send(metrics);
|
|
25
|
-
});
|
|
26
|
-
return server;
|
|
27
|
-
}
|
|
28
|
-
getHttpPort() {
|
|
29
|
-
const value = process.env['METRICS_PORT'];
|
|
30
|
-
if (!value) {
|
|
31
|
-
ConduitGrpcSdk.Logger.error(`Metrics HTTP port not set`);
|
|
32
|
-
process.exit(-1);
|
|
33
|
-
}
|
|
34
|
-
const port = parseInt(value, 10);
|
|
35
|
-
if (isNaN(port) || port < 1 || port > 65535) {
|
|
36
|
-
ConduitGrpcSdk.Logger.error(`Invalid HTTP port value: ${port}`);
|
|
37
|
-
process.exit(-1);
|
|
38
|
-
}
|
|
39
|
-
return port;
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
//# sourceMappingURL=MetricsServer.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"MetricsServer.js","sourceRoot":"","sources":["../../src/metrics/MetricsServer.ts"],"names":[],"mappings":"AAAA,OAAO,OAAoB,MAAM,SAAS,CAAC;AAE3C,OAAO,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAClC,OAAO,cAAc,MAAM,2BAA2B,CAAC;AAEvD,MAAM,OAAO,aAAa;IAKxB,YAAY,UAAkB,EAAE,QAAgB,EAAE,QAAkB;QAClE,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAED,UAAU;QACR,MAAM,MAAM,GAAG,OAAO,EAAE,CAAC;QACzB,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAChC,MAAM,GAAG,GAAG,UAAU,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QACzC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE;YACvB,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,gCAAgC,GAAG,EAAE,CAAC,CAAC;QACpE,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAoB,EAAE,GAAqB,EAAE,EAAE;YAC9D,OAAO,GAAG;iBACP,MAAM,CAAC,GAAG,CAAC;iBACX,IAAI,CACH,+BAA+B,IAAI,CAAC,UAAU,eAAe,IAAI,CAAC,QAAQ,EAAE,CAC7E,CAAC;QACN,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,KAAK,EAAE,GAAoB,EAAE,GAAqB,EAAE,EAAE;YAC3E,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;YAC9C,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;QACH,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,WAAW;QACT,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QAC1C,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;YACzD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACnB,CAAC;QACD,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACjC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,KAAK,EAAE,CAAC;YAC5C,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,4BAA4B,IAAI,EAAE,CAAC,CAAC;YAChE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACnB,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}
|
|
@@ -1,120 +0,0 @@
|
|
|
1
|
-
// Forked from nice-grpc-prometheus
|
|
2
|
-
import { isAbortError } from 'abort-controller-x';
|
|
3
|
-
import { ClientError, Status, } from 'nice-grpc-common';
|
|
4
|
-
import { Counter, exponentialBuckets, Histogram, Registry } from 'prom-client';
|
|
5
|
-
const registry = new Registry();
|
|
6
|
-
const typeLabel = 'grpc_type';
|
|
7
|
-
const serviceLabel = 'grpc_service';
|
|
8
|
-
const methodLabel = 'grpc_method';
|
|
9
|
-
const pathLabel = 'grpc_path';
|
|
10
|
-
const codeLabel = 'grpc_code';
|
|
11
|
-
/**
|
|
12
|
-
* 1ms, 4ms, 16ms, ..., ~1 hour in seconds
|
|
13
|
-
*/
|
|
14
|
-
const latencySecondsBuckets = exponentialBuckets(0.001, 4, 12);
|
|
15
|
-
function getLabels(method) {
|
|
16
|
-
const callType = method.requestStream
|
|
17
|
-
? method.responseStream
|
|
18
|
-
? 'bidi_stream'
|
|
19
|
-
: 'client_stream'
|
|
20
|
-
: method.responseStream
|
|
21
|
-
? 'server_stream'
|
|
22
|
-
: 'unary';
|
|
23
|
-
const { path } = method;
|
|
24
|
-
const [serviceName, methodName] = path.split('/').slice(1);
|
|
25
|
-
return {
|
|
26
|
-
[typeLabel]: callType,
|
|
27
|
-
[serviceLabel]: serviceName,
|
|
28
|
-
[methodLabel]: methodName,
|
|
29
|
-
[pathLabel]: path,
|
|
30
|
-
};
|
|
31
|
-
}
|
|
32
|
-
async function* incrementStreamMessagesCounter(iterable, counter) {
|
|
33
|
-
for await (const item of iterable) {
|
|
34
|
-
counter.inc();
|
|
35
|
-
yield item;
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
const clientStartedMetric = new Counter({
|
|
39
|
-
registers: [registry],
|
|
40
|
-
name: 'conduit_grpc_client_started_total',
|
|
41
|
-
help: 'Total number of RPCs started on the client.',
|
|
42
|
-
labelNames: [typeLabel, serviceLabel, methodLabel, pathLabel],
|
|
43
|
-
});
|
|
44
|
-
const clientHandledMetric = new Counter({
|
|
45
|
-
registers: [registry],
|
|
46
|
-
name: 'conduit_grpc_client_handled_total',
|
|
47
|
-
help: 'Total number of RPCs completed on the client, regardless of success or failure.',
|
|
48
|
-
labelNames: [typeLabel, serviceLabel, methodLabel, pathLabel, codeLabel],
|
|
49
|
-
});
|
|
50
|
-
const clientStreamMsgReceivedMetric = new Counter({
|
|
51
|
-
registers: [registry],
|
|
52
|
-
name: 'conduit_grpc_client_msg_received_total',
|
|
53
|
-
help: 'Total number of RPC stream messages received by the client.',
|
|
54
|
-
labelNames: [typeLabel, serviceLabel, methodLabel, pathLabel],
|
|
55
|
-
});
|
|
56
|
-
const clientStreamMsgSentMetric = new Counter({
|
|
57
|
-
registers: [registry],
|
|
58
|
-
name: 'conduit_grpc_client_msg_sent_total',
|
|
59
|
-
help: 'Total number of gRPC stream messages sent by the client.',
|
|
60
|
-
labelNames: [typeLabel, serviceLabel, methodLabel, pathLabel],
|
|
61
|
-
});
|
|
62
|
-
const clientHandlingSecondsMetric = new Histogram({
|
|
63
|
-
registers: [registry],
|
|
64
|
-
name: 'grpc_client_handling_seconds',
|
|
65
|
-
help: 'Histogram of response latency (seconds) of the gRPC until it is finished by the application.',
|
|
66
|
-
labelNames: [typeLabel, serviceLabel, methodLabel, pathLabel, codeLabel],
|
|
67
|
-
buckets: latencySecondsBuckets,
|
|
68
|
-
});
|
|
69
|
-
export function clientMiddleware() {
|
|
70
|
-
return async function* prometheusClientMiddlewareGenerator(call, options) {
|
|
71
|
-
const labels = getLabels(call.method);
|
|
72
|
-
clientStartedMetric.inc(labels);
|
|
73
|
-
const stopTimer = clientHandlingSecondsMetric.startTimer(labels);
|
|
74
|
-
let settled = false;
|
|
75
|
-
let status = Status.OK;
|
|
76
|
-
try {
|
|
77
|
-
let request;
|
|
78
|
-
if (!call.requestStream) {
|
|
79
|
-
request = call.request;
|
|
80
|
-
}
|
|
81
|
-
else {
|
|
82
|
-
request = incrementStreamMessagesCounter(call.request, clientStreamMsgSentMetric.labels(labels));
|
|
83
|
-
}
|
|
84
|
-
if (!call.responseStream) {
|
|
85
|
-
const response = yield* call.next(request, options);
|
|
86
|
-
settled = true;
|
|
87
|
-
return response;
|
|
88
|
-
}
|
|
89
|
-
else {
|
|
90
|
-
yield* incrementStreamMessagesCounter(call.next(request, options), clientStreamMsgReceivedMetric.labels(labels));
|
|
91
|
-
settled = true;
|
|
92
|
-
return;
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
catch (err) {
|
|
96
|
-
settled = true;
|
|
97
|
-
if (err instanceof ClientError) {
|
|
98
|
-
status = err.code;
|
|
99
|
-
}
|
|
100
|
-
else if (isAbortError(err)) {
|
|
101
|
-
status = Status.ABORTED;
|
|
102
|
-
}
|
|
103
|
-
else {
|
|
104
|
-
status = Status.UNKNOWN;
|
|
105
|
-
}
|
|
106
|
-
throw err;
|
|
107
|
-
}
|
|
108
|
-
finally {
|
|
109
|
-
if (!settled) {
|
|
110
|
-
status = Status.CANCELLED;
|
|
111
|
-
}
|
|
112
|
-
stopTimer({ [codeLabel]: Status[status] });
|
|
113
|
-
clientHandledMetric.inc({
|
|
114
|
-
...labels,
|
|
115
|
-
[codeLabel]: Status[status],
|
|
116
|
-
});
|
|
117
|
-
}
|
|
118
|
-
};
|
|
119
|
-
}
|
|
120
|
-
//# sourceMappingURL=clientMiddleware.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"clientMiddleware.js","sourceRoot":"","sources":["../../src/metrics/clientMiddleware.ts"],"names":[],"mappings":"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"}
|