@nestjs/microservices
Version:
Nest - modern, fast, powerful node.js web framework (@microservices)
40 lines (39 loc) • 1.43 kB
JavaScript
import { Transport } from '../enums/transport.enum.js';
import { ClientGrpcProxy } from './client-grpc.js';
import { ClientKafka } from './client-kafka.js';
import { ClientMqtt } from './client-mqtt.js';
import { ClientNats } from './client-nats.js';
import { ClientRedis } from './client-redis.js';
import { ClientRMQ } from './client-rmq.js';
import { ClientTCP } from './client-tcp.js';
/**
* @publicApi
*/
export class ClientProxyFactory {
static create(clientOptions) {
if (this.isCustomClientOptions(clientOptions)) {
const { customClass, options } = clientOptions;
return new customClass(options);
}
const { transport, options = {} } = clientOptions ?? { options: {} };
switch (transport) {
case Transport.REDIS:
return new ClientRedis(options);
case Transport.NATS:
return new ClientNats(options);
case Transport.MQTT:
return new ClientMqtt(options);
case Transport.GRPC:
return new ClientGrpcProxy(options);
case Transport.RMQ:
return new ClientRMQ(options);
case Transport.KAFKA:
return new ClientKafka(options);
default:
return new ClientTCP(options);
}
}
static isCustomClientOptions(options) {
return !!options.customClass;
}
}