11import * as grpc from 'grpc' ;
2+ import * as protoLoader from '@grpc/proto-loader' ;
23import { Logger } from './logger' ;
34import { Browser } from './browser' ;
45
56const SERVER_ADDRESS = '127.0.0.1:50059' ;
67const RENDERER_PROTO_PATH = __dirname + '/../proto/renderer.proto' ;
7- const GRPC_HEALTH_PROTO_PATH = __dirname + '/../proto/health.proto' ;
8+ const HEALTH_PROTO_PATH = __dirname + '/../proto/health.proto' ;
89
9- export const RENDERER_PROTO = grpc . load ( RENDERER_PROTO_PATH ) . models ;
10- export const GRPC_HEALTH_PROTO = grpc . load ( GRPC_HEALTH_PROTO_PATH ) . grpc . health . v1 ;
10+ export const renderPackageDef = protoLoader . loadSync ( RENDERER_PROTO_PATH , {
11+ keepCase : true ,
12+ longs : String ,
13+ enums : String ,
14+ defaults : true ,
15+ oneofs : true ,
16+ } ) ;
17+
18+ export const healthPackageDef = protoLoader . loadSync ( HEALTH_PROTO_PATH , {
19+ keepCase : true ,
20+ longs : String ,
21+ enums : String ,
22+ defaults : true ,
23+ oneofs : true ,
24+ } ) ;
25+
26+ export const rendererProtoDescriptor = grpc . loadPackageDefinition ( renderPackageDef ) ;
27+ export const healthProtoDescriptor = grpc . loadPackageDefinition ( healthPackageDef ) ;
1128
1229export class GrpcPlugin {
1330 constructor ( private log : Logger , private browser : Browser ) { }
1431
1532 start ( ) {
16- var server = new grpc . Server ( ) ;
33+ const server = new grpc . Server ( ) ;
1734
18- server . addService ( GRPC_HEALTH_PROTO . Health . service , {
35+ const grpcHealthV1 : any = healthProtoDescriptor [ 'grpc' ] [ 'health' ] [ 'v1' ] ;
36+ server . addService ( grpcHealthV1 . Health . service , {
1937 check : this . check . bind ( this ) ,
2038 } ) ;
21- server . addService ( RENDERER_PROTO . Renderer . service , {
39+ const models : any = rendererProtoDescriptor . models ;
40+ server . addService ( models . Renderer . service , {
2241 render : this . render . bind ( this ) ,
2342 } ) ;
2443
@@ -28,13 +47,7 @@ export class GrpcPlugin {
2847 console . log ( `1|1|tcp|${ SERVER_ADDRESS } |grpc` ) ;
2948
3049 if ( this . browser . chromeBin ) {
31- this . log . info (
32- 'Renderer plugin started' ,
33- 'chromeBin' ,
34- this . browser . chromeBin ,
35- 'ignoreHTTPSErrors' ,
36- this . browser . ignoreHTTPSErrors
37- ) ;
50+ this . log . info ( 'Renderer plugin started' , 'chromeBin' , this . browser . chromeBin , 'ignoreHTTPSErrors' , this . browser . ignoreHTTPSErrors ) ;
3851 } else {
3952 this . log . info ( 'Renderer plugin started' , 'ignoreHttpsErrors' , this . browser . ignoreHTTPSErrors ) ;
4053 }
@@ -45,9 +58,8 @@ export class GrpcPlugin {
4558 }
4659
4760 async render ( call , callback ) {
48- let req = call . request ;
49-
50- let options = {
61+ const req = call . request ;
62+ const options = {
5163 url : req . url ,
5264 width : req . width ,
5365 height : req . height ,
@@ -61,7 +73,7 @@ export class GrpcPlugin {
6173
6274 try {
6375 this . log . debug ( 'Render request received' , 'url' , options . url ) ;
64- let result = await this . browser . render ( options ) ;
76+ const result = await this . browser . render ( options ) ;
6577 callback ( null , { error : '' } ) ;
6678 } catch ( err ) {
6779 this . log . error ( 'Render request failed' , 'url' , options . url , 'error' , err ) ;
0 commit comments