Skip to main content

Client

export default {
...,
generators: [
{
preset: 'client',
outputPath: './src/__gen__/',
language: 'typescript',
protocols: ['nats']
}
]
};

client preset with asyncapi input generates for each protocol a class ({Protocol}Client) that makes it easier to interact with the protocol.

It will generate;

  • Support function for connecting to the protocol
  • Simpler functions then those generated by channels to interact with the given protocols
  • Exporting all generated parameters
  • Exporting all generated payloads

This generator uses channels generators, in case you dont have any defined, it will automatically include them with default values and dependencies.

This is supported through the following inputs: asyncapi

It supports the following languages; typescript

It supports the following protocols; nats

TypeScript

Nats

Dependencies;

For Nats the NatsClient is generated that setups the correct Nats.js clients, marshalling codex, and provide simplier functions to improve DX.

Example;

//Import and export payload models
import {Payload} from './payload/Payload';
export {Payload};

//Import and export parameter models
import {Parameters} from './parameters/Parameters';

//Import channel functions
import { Protocols } from './channels/index';
const { nats } = Protocols;

import * as Nats from 'nats';

/**
* @class NatsClient
*/
export class NatsClient {
/**
* Disconnect all clients from the server
*/
async disconnect() {
...
}
/**
* Returns whether or not any of the clients are closed
*/
isClosed() {
...
}
/**
* Try to connect to the NATS server with user credentials
*/
async connectWithUserCreds(userCreds: string, options ? : Nats.ConnectionOptions, codec ? : Nats.Codec < any > ) {
...
}
/**
* Try to connect to the NATS server with user and password
*/
async connectWithUserPass(user: string, pass: string, options ? : Nats.ConnectionOptions, codec ? : Nats.Codec < any > ) {
...
}
/**
* Try to connect to the NATS server which has no authentication
*/
async connectToHost(host: string, options ? : Nats.ConnectionOptions, codec ? : Nats.Codec < any > ) {
...
}

/**
* Try to connect to the NATS server with the different payloads.
*/
connect(options: Nats.ConnectionOptions, codec?: Nats.Codec<any>): Promise<void> {
...
}

public async jetStreamPublishToChannel(
message: Payload,
parameters: Parameters,
options: Partial<Nats.JetStreamPublishOptions> = {}
): Promise<void> {
...
}
jetStreamPullSubscribeToChannel
jetStreamPushSubscriptionFromChannel
publishToChannel
subscribeToChannel
}