Skip to content

Commit

Permalink
fix: add new options by generic props loader grpc client provider
Browse files Browse the repository at this point in the history
  • Loading branch information
wrspada02 committed Aug 29, 2024
1 parent 731e806 commit dc3d1af
Show file tree
Hide file tree
Showing 4 changed files with 34 additions and 26 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -14,11 +14,11 @@ import {
import { Serializer } from './serializer.interface';
import { ConnectionOptions } from 'tls';

export type ClientOptions =
export type ClientOptions<ClientProviderOverrideOptions> =
| RedisOptions
| NatsOptions
| MqttOptions
| GrpcOptions
| GrpcOptions<ClientProviderOverrideOptions>
| KafkaOptions
| TcpClientOptions
| RmqOptions;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,8 @@ import { CustomTransportStrategy } from './custom-transport-strategy.interface';
import { Deserializer } from './deserializer.interface';
import { Serializer } from './serializer.interface';

export type MicroserviceOptions =
| GrpcOptions
export type MicroserviceOptions<GrpcLoaderOption> =
| GrpcOptions<GrpcLoaderOption>
| TcpOptions
| RedisOptions
| NatsOptions
Expand All @@ -43,7 +43,7 @@ export interface CustomStrategy {
/**
* @publicApi
*/
export interface GrpcOptions {
export interface GrpcOptions<GrpcLoaderOption> {
transport?: Transport.GRPC;
options: {
url?: string;
Expand All @@ -67,19 +67,21 @@ export interface GrpcOptions {
packageDefinition?: any;
gracefulShutdown?: boolean;
onLoadPackageDefinition?: (pkg: any, server: any) => void;
loader?: {
keepCase?: boolean;
alternateCommentMode?: boolean;
longs?: Function;
enums?: Function;
bytes?: Function;
defaults?: boolean;
arrays?: boolean;
objects?: boolean;
oneofs?: boolean;
json?: boolean;
includeDirs?: string[];
};
loader?:
| GrpcLoaderOption
| {

This comment has been minimized.

Copy link
@eladhaim

eladhaim Sep 1, 2024

i would probably extract it to a type and assign the generic type to this type

This comment has been minimized.

Copy link
@wrspada02

wrspada02 Sep 1, 2024

Author Owner

Just to confirm, do you mean creating a type for this long object and add the generic we've created to this type?

Something like

type LoaderOptions<GrpcLoaderOption> = | GrpcLoaderOption | {
          keepCase?: boolean;
          alternateCommentMode?: boolean;
          longs?: Function;
          enums?: Function;
          bytes?: Function;
          defaults?: boolean;
          arrays?: boolean;
          objects?: boolean;
          oneofs?: boolean;
          json?: boolean;
          includeDirs?: string[];
}

export interface GrpcOptions {
         ...
         loader?: LoaderOptions;
}
keepCase?: boolean;
alternateCommentMode?: boolean;
longs?: Function;
enums?: Function;
bytes?: Function;
defaults?: boolean;
arrays?: boolean;
objects?: boolean;
oneofs?: boolean;
json?: boolean;
includeDirs?: string[];
};
};
}

Expand Down
5 changes: 4 additions & 1 deletion packages/microservices/module/clients.module.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,14 +15,17 @@ import {

@Module({})
export class ClientsModule {
static register(options: ClientsModuleOptions): DynamicModule {
static register<ClientProviderOverrideOptions>(
options: ClientsModuleOptions<ClientProviderOverrideOptions>,
): DynamicModule {
const clientsOptions = !Array.isArray(options) ? options.clients : options;
const clients = (clientsOptions || []).map(item => {
return {
provide: item.name,
useValue: this.assignOnAppShutdownHook(ClientProxyFactory.create(item)),
};
});

return {
module: ClientsModule,
global: !Array.isArray(options) && options.isGlobal,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,16 +1,19 @@
import { ClientOptions, CustomClientOptions } from '../../interfaces';
import { Type, Provider, ModuleMetadata } from '@nestjs/common/interfaces';

export type ClientProvider = ClientOptions | CustomClientOptions;
export type ClientProvider<ClientProviderOverrideOptions = {}> =
| ClientOptions<ClientProviderOverrideOptions>
| CustomClientOptions;

export type ClientProviderOptions = ClientProvider & {
name: string | symbol;
};
export type ClientProviderOptions<ClientProviderOverrideOptions> =
ClientProvider<ClientProviderOverrideOptions> & {
name: string | symbol;
};

export type ClientsModuleOptions =
| Array<ClientProviderOptions>
export type ClientsModuleOptions<ClientProviderOverrideOptions = {}> =
| Array<ClientProviderOptions<ClientProviderOverrideOptions>>
| {
clients: Array<ClientProviderOptions>;
clients: Array<ClientProviderOptions<ClientProviderOverrideOptions>>;
isGlobal?: boolean;
};

Expand Down

0 comments on commit dc3d1af

Please sign in to comment.