From 4c3b209ed18418d324569dd1e21769aa2d34cb5a Mon Sep 17 00:00:00 2001 From: Francesco Ceccon Date: Mon, 21 Oct 2024 17:48:36 +0200 Subject: [PATCH] protocol: make client options configurable --- ...-5cbc4329-6566-4faf-a04d-bdd739e1cca4.json | 7 ++++++ packages/protocol/src/client.ts | 24 +++++++++++++++---- 2 files changed, 26 insertions(+), 5 deletions(-) create mode 100644 change/@apibara-protocol-5cbc4329-6566-4faf-a04d-bdd739e1cca4.json diff --git a/change/@apibara-protocol-5cbc4329-6566-4faf-a04d-bdd739e1cca4.json b/change/@apibara-protocol-5cbc4329-6566-4faf-a04d-bdd739e1cca4.json new file mode 100644 index 00000000..a21b01af --- /dev/null +++ b/change/@apibara-protocol-5cbc4329-6566-4faf-a04d-bdd739e1cca4.json @@ -0,0 +1,7 @@ +{ + "type": "prerelease", + "comment": "protocol: make client options configurable", + "packageName": "@apibara/protocol", + "email": "francesco@ceccon.me", + "dependentChangeType": "patch" +} diff --git a/packages/protocol/src/client.ts b/packages/protocol/src/client.ts index 118754e1..9836ce6f 100644 --- a/packages/protocol/src/client.ts +++ b/packages/protocol/src/client.ts @@ -1,5 +1,7 @@ import { Schema } from "@effect/schema"; import { + type ChannelCredentials, + type ChannelOptions, type DefaultCallOptions, type NormalizedServiceDefinition, createChannel, @@ -44,20 +46,32 @@ export interface Client { ): AsyncIterable>; } +export type CreateClientOptions = { + defaultCallOptions?: DefaultCallOptions< + NormalizedServiceDefinition + >; + credentials?: ChannelCredentials; + channelOptions?: ChannelOptions; +}; + /** Create a client connecting to the DNA grpc service. */ export function createClient( config: StreamConfig, streamUrl: string, - defaultCallOptions?: DefaultCallOptions< - NormalizedServiceDefinition - >, + options: CreateClientOptions = {}, ) { - const channel = createChannel(streamUrl); + const channel = createChannel( + streamUrl, + options?.credentials, + options?.channelOptions, + ); + const client: proto.stream.DnaStreamClient = grpcCreateClient( proto.stream.DnaStreamDefinition, channel, - defaultCallOptions, + options?.defaultCallOptions, ); + return new GrpcClient(config, client); }