0.0.10 • Published 1 year ago

@n0tify/common v0.0.10

Weekly downloads
-
License
ISC
Repository
-
Last release
1 year ago

@n0tify/common

Library that shares common structures between client and subscriber.

Transport

Defines what service should be used for data exchange.

Example: RabbitMQ, Kafka, Redis and other...

Every transport is constructed individually and passed as param to the client or subscriber.

Transport implementation example

import { Transport } from '@n0tify/common';

class MyTransport implements Transport {
  async connect() {
    console.log('connected');
    return true;
  }

  async disconnect() {
    console.log('disconnected');
    return true;
  }

  send(pattern, data) {
    console.log(`sending data to ${pattern}`, data);
  }

  subscribe(callback) {
    console.log(`subscribed ${callback} for incoming messages`);
  }

  unsubscribe(callback) {
    console.log(`unsubscribed ${callback} from incoming messages`);
  }
}

Channel

Defines which channel should be used for data send.

Example: SMS, Email, Push

Every channel is constructed individually and has it own paramters and ID.

Channel implementation example

Let's imagine simple SMS channel, this is how implementation could look like:

import { Channel } from '@n0tify/common';

type SmsChannelMessageProps = {
  to: string,
  content: string;
}

class SmsChannel extends Channel<SmsChannelMessageProps> {
  // Phone number used to send messages
  from: string;

  constructor(...) {
    this.from = '123456789';
  }

  sendMessage(pattern, data, context) {
    console.log('Message send');
  }

  onMessage(pattern, data, context) {
    console.log('Message received');
  }
}

const smsChannel = new SmsChannel({
  from: '987654321'
});

Further usage

For further usage see client or subscriber.

0.0.10

1 year ago

0.0.9

1 year ago

0.0.8

1 year ago

0.0.7

1 year ago

0.0.6

1 year ago

0.0.5

1 year ago

0.0.3

1 year ago