0.0.1 • Published 4 years ago

@tshio/notifications-client v0.0.1

Weekly downloads
2
License
MIT
Repository
github
Last release
4 years ago

RAD Notifications Client

npm version

Non-blocking RAD Notifications client for Node.js.

This is a 100% JavaScript library, with TypeScript definition, with the Promise API.

This module makes it simple to implement a Node.js application that uses RAD Notifications.

Table of Contents

Installing

$ npm install @tshio/notifications-client

or

$ yarn add @tshio/notifications-client

Loading and configuration module

// CommonJS
const { PdfClient } = require('@tshio/notifications-client');

// ES Module
import { PdfClient } from '@tshio/notifications-client';


const options = {
  host: "localhost",
  port: "50080",
}

const notificationsClient = new NotificationsClient(options);

Getting started

Send notification

const message = {
   channels: ["default"],
   message: "Test message",
}
const { notificationsIds } = async notificationsClient.notifications.send(message);

Get notifications

const notifications = async notificationsClient.notifications.get();

API

notificationsClient.notifications.send({ channels, message }) => Promise<{ notificationsIds }>

Send notification

Returns an object with an array of crated notifications ids.

{
  notificationsIds: string[];
}

or throw HttpError

Parameters
NameTypeDescriptionDefault
channelsstring[]Send messages to channels.
messagestringNotification message

Back to API

notificationsClient.notifications.get( queryFilter? ) => Promise

Get notifications list (if no query parameters it returns first 25 notifications ordered by created date)

Returns an object

{
  notifications: Notification[];
  total: number;
  page: number;
  limit: number;
}

interface Notification {
  id: string;
  channel: string;
  message: string;
  createdAt: Date;
}

or throw HttpError

Parameters
NameTypeDescriptionDefault
queryFilterobjectoptionalQuery filter
queryFilter.pagenumberoptionalPage number1
queryFilter.limitnumberoptionalResponse limit25
queryFilter.filternumberoptionalFilter object
queryFilter.querynumberoptionalQuery object

Filters can be used search for a single condition or they can be wrapped in logical operands AND and OR. Filtering can be a simple conditional evaluation of a single field.

export type GetNotificationsColumns = "id" | "channel" | "message" | "createdAt";

export type GetNotificationsFilterOperators = "eq" | "neq" | "lt" | "gt" | "include" ;

export interface GetNotificationsRequest {
  page?: number;
  limit?: number;
  filter?: {
    [column in GetNotificationsColumns]?: {
      [operator in GetNotificationsFilterOperators]?: string;
    };
  };
  order?: {
    by: "resource" | "attribute";
    type: "asc" | "desc";
  };
}
  • filtercolumn = value

    NameTypeDescription
    columnstringColumn name
    operatorstringOperator name
    valuestring or number or boolean (depending on the column type)

    Examples

    Single parameter filter

    filter: {
      message: {
        include: "test"
      }
    }

    Two parameter filter

    filter: {
      message: {
        include: "test"
      },
      channel: {
        eq: "default",
      },
    }
  • order

    NameTypeDescriptionDefault
    bystringoptional column name for order sorting, allowed values: "id", "channel", "message", "createdAt"id
    typeasc or descoptional Ascending or descending orderasc

    Examples

    order: {
      by: "id",
      type: "desc"
    }

Back to API

License

license

This project is licensed under the terms of the MIT license.

About us:

The Software House