@bmiddha/webhooks-test

Easy-to-use, object oriented WebHooks library written in TypeScript.

Usage no npm install needed!

<script type="module">
  import bmiddhaWebhooksTest from 'https://cdn.skypack.dev/@bmiddha/webhooks-test';
</script>

README

WebHooks

Easy-to-use, object oriented WebHooks library written in TypeScript.

Node CI NPM Publish codecov dependencies Status devDependencies Status bundlephobia bundlephobia license

NPM

Install

npm install --save @bmiddha/webhooks

API

add(name, url) - Add WebHook

Parameters

Name Type Required
name string true
url string true

Return: void

Add WebHook to database.

remove(name, url) - Remove WebHook

Parameters

Name Type Required
name string true
url string false

Return: void

trigger(name, data, headers) - Trigger WebHook

Parameters

Name Type Required
name string true
data JSON true
headers JSON false

Return: void

Event emission return value

getDB() - Get All WebHooks from Database

Return: Object

All names, and URLs.

{
    "name1": [
        "url1",
        "url2",
        "url3"
    ],
    "name2": [
        "url4"
    ]
}

getWebHook(name) - Get WebHook

Parameters

Name Type Required
name string true

requestFunctions() - Get Request Functions

Return: (name: string, jsonData: {}, headersData?: {}) => Promise<void>[]

emitter() - Get Event Emitter

Return: events.EventEmitter

Example

import * as Redis from 'ioredis';
import WebHooks from '@bmiddha/webhooks';

const redisClient = new Redis();
const webHooks = new WebHooks({ redisClient });

webHooks.add('webHookName', 'http://localhost:8080/hook')

const demo = async () => {
    await webHooks.add("webHookName", "http://localhost:8080/hook");
    webHooks.trigger("webHooksName", { data: 123 });
    webHooks.trigger(
    "webHooksName",
    {
        test: "data",
        more: {
        test: "data"
        },
        even: {
        more: {
            test: "data"
        }
        }
    },
    {
        "custom-header": "value"
    }
    );
}

demo();

Acknowledgments

Inspired by roccomuso/node-webhooks.