hookdeck-pubsub

An experimental SDK providing PubSub abstractions for Hookdeck

APACHE-2.0 License

Downloads
59
Stars
1

Hookdeck Pub/Sub SDK [ALPHA Experiment]

Hookdeck allows for Pub/Sub-type communication, but the platform primitives differ. This library enables the use of Pub/Sub primitives and mapping them to Hookdeck ones.

Here's a mapping of Pub/Sub conventions to Hookdeck ones:

  • Channel: A Hookdeck Source with a unique name where events are published
  • Subscription: A Hookdeck Connection consisting of a Source, Rules, and a Destination. The Destination is where events are delivered to and is the subscriber.

The current plan is only to support Filter rules.

Contents

Usage

const pubsub = new HookdeckPubSub({
  // Hookdeck project API Key
  apiKey,

  // Used when creating all Sources/channels
  publishAuth,
});

// Dynamically creates the Hookdeck Connection
const subscription = channel.subscribe({
  channel: "orders",

  // Where events published on the channel are sent
  url,

  // Optional. Used to authenticate the request to the subscribing url.
  auth,
});

// Creates a Source on the fly if one does not already exist with given name
const channel = pubsub.channel({
  name: "orders",
});

// Performs a POST request to the underlying Source URL
await channel.publish({
  type: "order.updated",
  headers: {}
  data: {
    status: "PAYMENT_RECEIVED",
  },
});

// Get all subscriptions to the "orders" channel
// Note: This current performs a fuzzy match
const subscriptions = await pubsub.getSubscriptions({
  name: "orders",
});

// Get all events sent to the subscription
const events = await pubsub.getEvents({ subscriptionId, includeBody: true });

// Get all delivery attempts for an event
const attempts = await pubsub.getDeliveryAttempts({
  eventId,
  includeBody: true,
});

Todos

  • Set up CI/CD
  • Add support for filters on subscriptions

Contributing

Ask questions and raise issues in the issues section.

Credits

Package Rankings
Top 31.89% on Npmjs.org
Badges
Extracted from project README
Package Version Dependencies Status Build Status Coverage Status Open Issues Commitizen Friendly