@rsdk/grpc.server 3.6.1-next.0 → 3.7.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/CHANGELOG.md +10 -0
- package/dist/grpc-logger.interceptor.d.ts +8 -0
- package/dist/grpc-logger.interceptor.js +59 -0
- package/dist/grpc-logger.interceptor.js.map +1 -0
- package/dist/grpc.transport.d.ts +2 -1
- package/dist/grpc.transport.js +17 -2
- package/dist/grpc.transport.js.map +1 -1
- package/package.json +5 -4
- package/src/grpc-logger.interceptor.ts +57 -0
- package/src/grpc.transport.ts +17 -0
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,16 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## [3.7.0](https://github.com/R-Vision/rsdk/compare/v3.6.1...v3.7.0) (2023-11-15)
|
|
7
|
+
|
|
8
|
+
### Features
|
|
9
|
+
|
|
10
|
+
* added logging to rpc and http transports ([#156](https://github.com/R-Vision/rsdk/issues/156)) ([7ebddb9](https://github.com/R-Vision/rsdk/commit/7ebddb97d2c30811eba9868b6d3ff9778708c957))
|
|
11
|
+
|
|
12
|
+
## [3.6.1](https://github.com/R-Vision/rsdk/compare/v3.6.1-next.1...v3.6.1) (2023-10-24)
|
|
13
|
+
|
|
14
|
+
**Note:** Version bump only for package @rsdk/grpc.server
|
|
15
|
+
|
|
6
16
|
## [3.6.1-next.0](https://github.com/R-Vision/rsdk/compare/v3.6.0...v3.6.1-next.0) (2023-10-20)
|
|
7
17
|
|
|
8
18
|
**Note:** Version bump only for package @rsdk/grpc.server
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { CallHandler, ExecutionContext, NestInterceptor } from '@nestjs/common/interfaces';
|
|
2
|
+
import { ILogger } from '@rsdk/logging';
|
|
3
|
+
import type { Observable } from 'rxjs';
|
|
4
|
+
export declare class GrpcLoggerInterceptor implements NestInterceptor {
|
|
5
|
+
private logger;
|
|
6
|
+
constructor(logger: ILogger);
|
|
7
|
+
intercept(context: ExecutionContext, next: CallHandler<any>): Observable<any> | Promise<Observable<any>>;
|
|
8
|
+
}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.GrpcLoggerInterceptor = void 0;
|
|
16
|
+
const core_1 = require("@rsdk/core");
|
|
17
|
+
const rxjs_1 = require("rxjs");
|
|
18
|
+
let GrpcLoggerInterceptor = exports.GrpcLoggerInterceptor = class GrpcLoggerInterceptor {
|
|
19
|
+
logger;
|
|
20
|
+
constructor(logger) {
|
|
21
|
+
this.logger = logger;
|
|
22
|
+
}
|
|
23
|
+
intercept(context, next) {
|
|
24
|
+
const isRpc = context.getType() === 'rpc';
|
|
25
|
+
if (!isRpc) {
|
|
26
|
+
return next.handle();
|
|
27
|
+
}
|
|
28
|
+
const rpc = context.switchToRpc();
|
|
29
|
+
const now = Date.now();
|
|
30
|
+
const rpcContext = rpc.getContext();
|
|
31
|
+
const serializedCtx = rpcContext?.toJSON?.() ?? rpcContext;
|
|
32
|
+
const requestForLog = {
|
|
33
|
+
data: rpc.getData(),
|
|
34
|
+
ctx: serializedCtx,
|
|
35
|
+
};
|
|
36
|
+
this.logger.debug('received rpc request', {
|
|
37
|
+
request: requestForLog,
|
|
38
|
+
timestamp: now,
|
|
39
|
+
});
|
|
40
|
+
return next.handle().pipe((0, rxjs_1.catchError)((err) => {
|
|
41
|
+
this.logger.debug('handled rpc request with error', {
|
|
42
|
+
request: requestForLog,
|
|
43
|
+
start: now,
|
|
44
|
+
end: Date.now() - now,
|
|
45
|
+
err,
|
|
46
|
+
});
|
|
47
|
+
return (0, rxjs_1.throwError)(() => err);
|
|
48
|
+
}), (0, rxjs_1.tap)(() => this.logger.debug('handled rpc request', {
|
|
49
|
+
request: requestForLog,
|
|
50
|
+
start: now,
|
|
51
|
+
end: Date.now() - now,
|
|
52
|
+
})));
|
|
53
|
+
}
|
|
54
|
+
};
|
|
55
|
+
exports.GrpcLoggerInterceptor = GrpcLoggerInterceptor = __decorate([
|
|
56
|
+
__param(0, (0, core_1.InjectLogger)(GrpcLoggerInterceptor)),
|
|
57
|
+
__metadata("design:paramtypes", [Object])
|
|
58
|
+
], GrpcLoggerInterceptor);
|
|
59
|
+
//# sourceMappingURL=grpc-logger.interceptor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"grpc-logger.interceptor.js","sourceRoot":"","sources":["../src/grpc-logger.interceptor.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAKA,qCAA0C;AAG1C,+BAAmD;AAEnD,IAAa,qBAAqB,mCAAlC,MAAa,qBAAqB;IACyB;IAAzD,YAAyD,MAAe;QAAf,WAAM,GAAN,MAAM,CAAS;IAAG,CAAC;IAE5E,SAAS,CACP,OAAyB,EACzB,IAAsB;QAEtB,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,EAAE,KAAK,KAAK,CAAC;QAC1C,IAAI,CAAC,KAAK,EAAE;YACV,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;SACtB;QAED,MAAM,GAAG,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;QAElC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,UAAU,GAAG,GAAG,CAAC,UAAU,EAAE,CAAC;QACpC,MAAM,aAAa,GAAG,UAAU,EAAE,MAAM,EAAE,EAAE,IAAI,UAAU,CAAC;QAC3D,MAAM,aAAa,GAAG;YACpB,IAAI,EAAE,GAAG,CAAC,OAAO,EAAE;YACnB,GAAG,EAAE,aAAa;SACnB,CAAC;QAEF,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,sBAAsB,EAAE;YACxC,OAAO,EAAE,aAAa;YACtB,SAAS,EAAE,GAAG;SACf,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CACvB,IAAA,iBAAU,EAAC,CAAC,GAAG,EAAE,EAAE;YACjB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,gCAAgC,EAAE;gBAClD,OAAO,EAAE,aAAa;gBACtB,KAAK,EAAE,GAAG;gBACV,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG;gBACrB,GAAG;aACJ,CAAC,CAAC;YACH,OAAO,IAAA,iBAAU,EAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;QAC/B,CAAC,CAAC,EACF,IAAA,UAAG,EAAC,GAAG,EAAE,CACP,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,qBAAqB,EAAE;YACvC,OAAO,EAAE,aAAa;YACtB,KAAK,EAAE,GAAG;YACV,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG;SACtB,CAAC,CACH,CACF,CAAC;IACJ,CAAC;CACF,CAAA;gCA9CY,qBAAqB;IACnB,WAAA,IAAA,mBAAY,EAAC,qBAAqB,CAAC,CAAA;;GADrC,qBAAqB,CA8CjC"}
|
package/dist/grpc.transport.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { Controller } from '@nestjs/common/interfaces';
|
|
2
2
|
import type { MicroserviceOptions } from '@nestjs/microservices';
|
|
3
3
|
import type { Constructor } from '@rsdk/common';
|
|
4
|
-
import type { ConfigContext, IErrorsFormatter, IErrorsSender, IErrorsTransformer, IMicroserviceTransport } from '@rsdk/core';
|
|
4
|
+
import type { ConfigContext, IErrorsFormatter, IErrorsSender, IErrorsTransformer, IMicroserviceTransport, NestModuleDefinitions } from '@rsdk/core';
|
|
5
5
|
import type { Package } from '@rsdk/grpc.loader';
|
|
6
6
|
export declare class GrpcTransport implements IMicroserviceTransport {
|
|
7
7
|
private readonly logger;
|
|
@@ -17,6 +17,7 @@ export declare class GrpcTransport implements IMicroserviceTransport {
|
|
|
17
17
|
getErrorTransformers(): IErrorsTransformer[];
|
|
18
18
|
getMetricsController(): Constructor<Controller>;
|
|
19
19
|
getHealthController(): Constructor<Controller>;
|
|
20
|
+
modules(): NestModuleDefinitions;
|
|
20
21
|
/**
|
|
21
22
|
* Unfortunally we can't access GRPCConfig in constructor because
|
|
22
23
|
* PlatformConfigModule is not initilalized yet
|
package/dist/grpc.transport.js
CHANGED
|
@@ -4,15 +4,17 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.GrpcTransport = void 0;
|
|
7
|
+
const core_1 = require("@nestjs/core");
|
|
7
8
|
const grpc_health_v1_1 = __importDefault(require("@rsdk/builtin-contract/dist/grpc.health.v1"));
|
|
8
9
|
const grpc_metrics_v1_1 = __importDefault(require("@rsdk/builtin-contract/dist/grpc.metrics.v1"));
|
|
9
|
-
const
|
|
10
|
+
const core_2 = require("@rsdk/core");
|
|
10
11
|
const grpc_loader_1 = require("@rsdk/grpc.loader");
|
|
11
12
|
const logging_1 = require("@rsdk/logging");
|
|
12
13
|
const controllers_1 = require("./controllers");
|
|
13
14
|
const grpc_config_1 = require("./grpc.config");
|
|
14
15
|
const grpc_errors_formatter_1 = require("./grpc-errors.formatter");
|
|
15
16
|
const grpc_errors_sender_1 = require("./grpc-errors.sender");
|
|
17
|
+
const grpc_logger_interceptor_1 = require("./grpc-logger.interceptor");
|
|
16
18
|
class GrpcTransport {
|
|
17
19
|
logger = logging_1.LoggerFactory.create(GrpcTransport);
|
|
18
20
|
packages;
|
|
@@ -41,6 +43,19 @@ class GrpcTransport {
|
|
|
41
43
|
getHealthController() {
|
|
42
44
|
return controllers_1.HealthController;
|
|
43
45
|
}
|
|
46
|
+
modules() {
|
|
47
|
+
return [
|
|
48
|
+
{
|
|
49
|
+
module: GrpcTransport,
|
|
50
|
+
providers: [
|
|
51
|
+
{
|
|
52
|
+
provide: core_1.APP_INTERCEPTOR,
|
|
53
|
+
useClass: grpc_logger_interceptor_1.GrpcLoggerInterceptor,
|
|
54
|
+
},
|
|
55
|
+
],
|
|
56
|
+
},
|
|
57
|
+
];
|
|
58
|
+
}
|
|
44
59
|
/**
|
|
45
60
|
* Unfortunally we can't access GRPCConfig in constructor because
|
|
46
61
|
* PlatformConfigModule is not initilalized yet
|
|
@@ -79,7 +94,7 @@ class GrpcTransport {
|
|
|
79
94
|
}
|
|
80
95
|
checkIsInitialized() {
|
|
81
96
|
if (!this.isInitialized) {
|
|
82
|
-
throw new
|
|
97
|
+
throw new core_2.SequenceException('You should call init() method first!');
|
|
83
98
|
}
|
|
84
99
|
}
|
|
85
100
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"grpc.transport.js","sourceRoot":"","sources":["../src/grpc.transport.ts"],"names":[],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"grpc.transport.js","sourceRoot":"","sources":["../src/grpc.transport.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rsdk/grpc.server",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.7.0",
|
|
4
4
|
"description": "Grpc transport for platform, clients and common grpc stuff",
|
|
5
5
|
"license": "Apache License 2.0",
|
|
6
6
|
"publishConfig": {
|
|
@@ -16,16 +16,17 @@
|
|
|
16
16
|
"peerDependencies": {
|
|
17
17
|
"@grpc/grpc-js": "^1.8.8",
|
|
18
18
|
"@nestjs/common": "^10.1.3",
|
|
19
|
+
"@nestjs/core": "^10.1.3",
|
|
19
20
|
"@nestjs/microservices": "^10.1.3",
|
|
20
21
|
"@rsdk/builtin-contract": "^3.5.0",
|
|
21
22
|
"@rsdk/common": "^3.5.0",
|
|
22
|
-
"@rsdk/core": "^3.6.1
|
|
23
|
-
"@rsdk/grpc.common": "^3.6.1
|
|
23
|
+
"@rsdk/core": "^3.6.1",
|
|
24
|
+
"@rsdk/grpc.common": "^3.6.1",
|
|
24
25
|
"@rsdk/grpc.loader": "^3.5.0",
|
|
25
26
|
"@rsdk/logging": "^3.6.0",
|
|
26
27
|
"nice-grpc": "^2.1.4",
|
|
27
28
|
"nice-grpc-opentelemetry": "^0.1.3",
|
|
28
29
|
"rxjs": "^7.0.0"
|
|
29
30
|
},
|
|
30
|
-
"gitHead": "
|
|
31
|
+
"gitHead": "32a88f5cc5a2c606bbad44d3ff8d22a4334acccc"
|
|
31
32
|
}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import type {
|
|
2
|
+
CallHandler,
|
|
3
|
+
ExecutionContext,
|
|
4
|
+
NestInterceptor,
|
|
5
|
+
} from '@nestjs/common/interfaces';
|
|
6
|
+
import { InjectLogger } from '@rsdk/core';
|
|
7
|
+
import { ILogger } from '@rsdk/logging';
|
|
8
|
+
import type { Observable } from 'rxjs';
|
|
9
|
+
import { catchError, tap, throwError } from 'rxjs';
|
|
10
|
+
|
|
11
|
+
export class GrpcLoggerInterceptor implements NestInterceptor {
|
|
12
|
+
constructor(@InjectLogger(GrpcLoggerInterceptor) private logger: ILogger) {}
|
|
13
|
+
|
|
14
|
+
intercept(
|
|
15
|
+
context: ExecutionContext,
|
|
16
|
+
next: CallHandler<any>,
|
|
17
|
+
): Observable<any> | Promise<Observable<any>> {
|
|
18
|
+
const isRpc = context.getType() === 'rpc';
|
|
19
|
+
if (!isRpc) {
|
|
20
|
+
return next.handle();
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
const rpc = context.switchToRpc();
|
|
24
|
+
|
|
25
|
+
const now = Date.now();
|
|
26
|
+
const rpcContext = rpc.getContext();
|
|
27
|
+
const serializedCtx = rpcContext?.toJSON?.() ?? rpcContext;
|
|
28
|
+
const requestForLog = {
|
|
29
|
+
data: rpc.getData(),
|
|
30
|
+
ctx: serializedCtx,
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
this.logger.debug('received rpc request', {
|
|
34
|
+
request: requestForLog,
|
|
35
|
+
timestamp: now,
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
return next.handle().pipe(
|
|
39
|
+
catchError((err) => {
|
|
40
|
+
this.logger.debug('handled rpc request with error', {
|
|
41
|
+
request: requestForLog,
|
|
42
|
+
start: now,
|
|
43
|
+
end: Date.now() - now,
|
|
44
|
+
err,
|
|
45
|
+
});
|
|
46
|
+
return throwError(() => err);
|
|
47
|
+
}),
|
|
48
|
+
tap(() =>
|
|
49
|
+
this.logger.debug('handled rpc request', {
|
|
50
|
+
request: requestForLog,
|
|
51
|
+
start: now,
|
|
52
|
+
end: Date.now() - now,
|
|
53
|
+
}),
|
|
54
|
+
),
|
|
55
|
+
);
|
|
56
|
+
}
|
|
57
|
+
}
|
package/src/grpc.transport.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { Controller } from '@nestjs/common/interfaces';
|
|
2
|
+
import { APP_INTERCEPTOR } from '@nestjs/core';
|
|
2
3
|
import type { MicroserviceOptions } from '@nestjs/microservices';
|
|
3
4
|
import HealthGrpcPackage from '@rsdk/builtin-contract/dist/grpc.health.v1';
|
|
4
5
|
import MetricsGrpcPackage from '@rsdk/builtin-contract/dist/grpc.metrics.v1';
|
|
@@ -9,6 +10,7 @@ import type {
|
|
|
9
10
|
IErrorsSender,
|
|
10
11
|
IErrorsTransformer,
|
|
11
12
|
IMicroserviceTransport,
|
|
13
|
+
NestModuleDefinitions,
|
|
12
14
|
} from '@rsdk/core';
|
|
13
15
|
import { SequenceException } from '@rsdk/core';
|
|
14
16
|
import type { Package } from '@rsdk/grpc.loader';
|
|
@@ -19,6 +21,7 @@ import { HealthController, MetricsController } from './controllers';
|
|
|
19
21
|
import { GRPCConfig } from './grpc.config';
|
|
20
22
|
import { GrpcErrorsFormatter } from './grpc-errors.formatter';
|
|
21
23
|
import { GrpcErrorsSender } from './grpc-errors.sender';
|
|
24
|
+
import { GrpcLoggerInterceptor } from './grpc-logger.interceptor';
|
|
22
25
|
|
|
23
26
|
export class GrpcTransport implements IMicroserviceTransport {
|
|
24
27
|
private readonly logger = LoggerFactory.create(GrpcTransport);
|
|
@@ -58,6 +61,20 @@ export class GrpcTransport implements IMicroserviceTransport {
|
|
|
58
61
|
return HealthController;
|
|
59
62
|
}
|
|
60
63
|
|
|
64
|
+
modules(): NestModuleDefinitions {
|
|
65
|
+
return [
|
|
66
|
+
{
|
|
67
|
+
module: GrpcTransport,
|
|
68
|
+
providers: [
|
|
69
|
+
{
|
|
70
|
+
provide: APP_INTERCEPTOR,
|
|
71
|
+
useClass: GrpcLoggerInterceptor,
|
|
72
|
+
},
|
|
73
|
+
],
|
|
74
|
+
},
|
|
75
|
+
];
|
|
76
|
+
}
|
|
77
|
+
|
|
61
78
|
/**
|
|
62
79
|
* Unfortunally we can't access GRPCConfig in constructor because
|
|
63
80
|
* PlatformConfigModule is not initilalized yet
|