Skip to content

Commit c5cfe9f

Browse files
committed
Extract addServerBuildMethods function to utils
1 parent c7553e0 commit c5cfe9f

File tree

2 files changed

+29
-19
lines changed

2 files changed

+29
-19
lines changed

src/index.ts

Lines changed: 6 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,48 +1,35 @@
11
import * as grpc from 'grpc';
22

33
import {
4+
addServerBuildMethods,
45
ClientFactoryConstructor,
56
createService,
67
createServiceClient,
78
DynamicMethods,
9+
GenericServerBuilder,
810
getServiceNames,
911
grpcLoad,
1012
GrpcService,
1113
lookupPackage,
1214
} from './utils';
1315

14-
export { ClientFactoryConstructor } from './utils';
15-
16-
export interface GenericServerBuilder<T> {
17-
start(address: string, credentials?: grpc.ServerCredentials): void;
18-
forceShutdown(): void;
19-
}
16+
export { ClientFactoryConstructor, GenericServerBuilder } from './utils';
2017

2118
export function serverBuilder<T>(
2219
protoPath: string,
2320
packageName: string,
2421
server = new grpc.Server(),
2522
): T & GenericServerBuilder<T> {
26-
const builder: DynamicMethods = <GenericServerBuilder<T>>{
27-
start(address, credentials) {
28-
server.bind(address, credentials || grpc.ServerCredentials.createInsecure());
29-
server.start();
30-
},
31-
forceShutdown() {
32-
server.forceShutdown();
33-
},
34-
};
35-
23+
const adders: DynamicMethods = {};
3624
const pkg = lookupPackage(grpcLoad(protoPath), packageName);
3725
for (const name of getServiceNames(pkg)) {
38-
builder[`add${name}`] = function(rxImpl: DynamicMethods) {
26+
adders[`add${name}`] = function(rxImpl: DynamicMethods) {
3927
const serviceData = (pkg[name] as any) as GrpcService<any>;
4028
server.addService(serviceData.service, createService(serviceData, rxImpl));
4129
return this;
4230
};
4331
}
44-
45-
return builder as any;
32+
return addServerBuildMethods(adders, server) as any;
4633
}
4734

4835
export function clientFactory<T>(protoPath: string, packageName: string) {

src/utils.ts

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ import {
66
handleServerStreamingCall,
77
handleUnaryCall,
88
loadPackageDefinition,
9+
Server,
10+
ServerCredentials,
911
ServiceDefinition,
1012
} from 'grpc';
1113
import { Observable } from 'rxjs';
@@ -22,6 +24,27 @@ export type GrpcService<T> = typeof Client & {
2224
service: ServiceDefinition<T>;
2325
};
2426

27+
export interface GenericServerBuilder<T> {
28+
start(address: string, credentials?: ServerCredentials): void;
29+
forceShutdown(): void;
30+
}
31+
32+
export function addServerBuildMethods<T>(
33+
adders: T,
34+
server = new Server(),
35+
): T & GenericServerBuilder<T> {
36+
const builder: GenericServerBuilder<T> = {
37+
start(address, credentials) {
38+
server.bind(address, credentials || ServerCredentials.createInsecure());
39+
server.start();
40+
},
41+
forceShutdown() {
42+
server.forceShutdown();
43+
},
44+
};
45+
return Object.assign(adders, builder);
46+
}
47+
2548
export function lookupPackage(root: GrpcObject, packageName: string) {
2649
let pkg = root;
2750
for (const name of packageName.split(/\./)) {

0 commit comments

Comments
 (0)