Skip to content

Commit dfc69f1

Browse files
committed
fix: add optional metadata parameter for addGrpcMetadata=true
1 parent b9b0ff7 commit dfc69f1

File tree

3 files changed

+36
-17
lines changed

3 files changed

+36
-17
lines changed

integration/generic-metadata/hero.ts

+29-14
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
/* eslint-disable */
2+
import { Metadata } from "@grpc/grpc-js";
23
import * as _m0 from "protobufjs/minimal";
34
import { Observable } from "rxjs";
45
import { map } from "rxjs/operators";
5-
import { Foo } from "./some-file";
66

77
export const protobufPackage = "hero";
88

@@ -287,9 +287,9 @@ export const Villain = {
287287
};
288288

289289
export interface HeroService {
290-
FindOneHero(request: HeroById, metadata?: Foo): Promise<Hero>;
291-
FindOneVillain(request: VillainById, metadata?: Foo): Promise<Villain>;
292-
FindManyVillain(request: Observable<VillainById>, metadata?: Foo): Observable<Villain>;
290+
FindOneHero(request: HeroById, metadata?: Metadata): Promise<Hero>;
291+
FindOneVillain(request: VillainById, metadata?: Metadata): Promise<Villain>;
292+
FindManyVillain(request: Observable<VillainById>, metadata?: Metadata): Observable<Villain>;
293293
}
294294

295295
export const HeroServiceServiceName = "hero.HeroService";
@@ -303,21 +303,21 @@ export class HeroServiceClientImpl implements HeroService {
303303
this.FindOneVillain = this.FindOneVillain.bind(this);
304304
this.FindManyVillain = this.FindManyVillain.bind(this);
305305
}
306-
FindOneHero(request: HeroById): Promise<Hero> {
306+
FindOneHero(request: HeroById, metadata?: Metadata): Promise<Hero> {
307307
const data = HeroById.encode(request).finish();
308-
const promise = this.rpc.request(this.service, "FindOneHero", data);
308+
const promise = this.rpc.request(this.service, "FindOneHero", data, metadata);
309309
return promise.then((data) => Hero.decode(_m0.Reader.create(data)));
310310
}
311311

312-
FindOneVillain(request: VillainById): Promise<Villain> {
312+
FindOneVillain(request: VillainById, metadata?: Metadata): Promise<Villain> {
313313
const data = VillainById.encode(request).finish();
314-
const promise = this.rpc.request(this.service, "FindOneVillain", data);
314+
const promise = this.rpc.request(this.service, "FindOneVillain", data, metadata);
315315
return promise.then((data) => Villain.decode(_m0.Reader.create(data)));
316316
}
317317

318-
FindManyVillain(request: Observable<VillainById>): Observable<Villain> {
318+
FindManyVillain(request: Observable<VillainById>, metadata?: Metadata): Observable<Villain> {
319319
const data = request.pipe(map((request) => VillainById.encode(request).finish()));
320-
const result = this.rpc.bidirectionalStreamingRequest(this.service, "FindManyVillain", data);
320+
const result = this.rpc.bidirectionalStreamingRequest(this.service, "FindManyVillain", data, metadata);
321321
return result.pipe(map((data) => Villain.decode(_m0.Reader.create(data))));
322322
}
323323
}
@@ -355,10 +355,25 @@ export const HeroServiceDefinition = {
355355
} as const;
356356

357357
interface Rpc {
358-
request(service: string, method: string, data: Uint8Array): Promise<Uint8Array>;
359-
clientStreamingRequest(service: string, method: string, data: Observable<Uint8Array>): Promise<Uint8Array>;
360-
serverStreamingRequest(service: string, method: string, data: Uint8Array): Observable<Uint8Array>;
361-
bidirectionalStreamingRequest(service: string, method: string, data: Observable<Uint8Array>): Observable<Uint8Array>;
358+
request(service: string, method: string, data: Uint8Array, metadata?: Metadata): Promise<Uint8Array>;
359+
clientStreamingRequest(
360+
service: string,
361+
method: string,
362+
data: Observable<Uint8Array>,
363+
metadata?: Metadata,
364+
): Promise<Uint8Array>;
365+
serverStreamingRequest(
366+
service: string,
367+
method: string,
368+
data: Uint8Array,
369+
metadata?: Metadata,
370+
): Observable<Uint8Array>;
371+
bidirectionalStreamingRequest(
372+
service: string,
373+
method: string,
374+
data: Observable<Uint8Array>,
375+
metadata?: Metadata,
376+
): Observable<Uint8Array>;
362377
}
363378

364379
type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;
+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
metadataType=Foo@./some-file,outputServices=generic-definitions,outputServices=default
1+
metadataType=Foo@./some-file,outputServices=generic-definitions,outputServices=default,addGrpcMetadata=true

src/generate-services.ts

+6-2
Original file line numberDiff line numberDiff line change
@@ -68,8 +68,7 @@ export function generateService(
6868
params.push(code`metadata?: grpc.Metadata`);
6969
} else if (options.addGrpcMetadata) {
7070
const Metadata = imp("Metadata@@grpc/grpc-js");
71-
const q = options.addNestjsRestParameter ? "" : "?";
72-
params.push(code`metadata${q}: ${Metadata}`);
71+
params.push(code`metadata?: ${Metadata}`);
7372
} else if (options.metadataType) {
7473
const Metadata = imp(options.metadataType);
7574
params.push(code`metadata?: ${Metadata}`);
@@ -116,9 +115,11 @@ function generateRegularRpcMethod(ctx: Context, methodDesc: MethodDescriptorProt
116115
const params = [
117116
...(options.context ? [code`ctx: Context`] : []),
118117
code`request: ${inputType}`,
118+
...(options.addGrpcMetadata ? [code`metadata?: Metadata`] : []),
119119
...(options.useAbortSignal ? [code`abortSignal?: AbortSignal`] : []),
120120
];
121121
const maybeCtx = options.context ? "ctx," : "";
122+
const maybeMetadata = options.addGrpcMetadata ? "metadata," : "";
122123
const maybeAbortSignal = options.useAbortSignal ? "abortSignal || undefined," : "";
123124

124125
let errorHandler;
@@ -193,6 +194,7 @@ function generateRegularRpcMethod(ctx: Context, methodDesc: MethodDescriptorProt
193194
this.service,
194195
"${methodDesc.name}",
195196
data,
197+
${maybeMetadata}
196198
${maybeAbortSignal}
197199
);
198200
return ${returnStatement};
@@ -418,6 +420,7 @@ export function generateRpcType(ctx: Context, hasStreamingMethods: boolean): Cod
418420
const { options } = ctx;
419421
const maybeContext = options.context ? "<Context>" : "";
420422
const maybeContextParam = options.context ? "ctx: Context," : "";
423+
const maybeMetadataParam = options.addGrpcMetadata ? `metadata?: Metadata,` : "";
421424
const maybeAbortSignalParam = options.useAbortSignal ? "abortSignal?: AbortSignal," : "";
422425
const methods = [[code`request`, code`Uint8Array`, code`Promise<Uint8Array>`]];
423426
const additionalMethods = [];
@@ -456,6 +459,7 @@ export function generateRpcType(ctx: Context, hasStreamingMethods: boolean): Cod
456459
service: string,
457460
method: string,
458461
data: ${method[1]},
462+
${maybeMetadataParam}
459463
${maybeAbortSignalParam}
460464
): ${method[2]};`);
461465
});

0 commit comments

Comments
 (0)