npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@devpie/client-events

v0.0.44

Published

Common module for event-driven architecture.

Downloads

30

Readme

Common Module for Event-driven Architecture

Supports commands and events (CQRS).

Overview

This package serves as a shared library for all message interfaces, commands and events in the system. It ensures consistency and correctness while implementing the event data model across Applications, Microservices, Aggregators and various programming languages.

How it works

Devpie Client's event data model is exported as command and event enums, and message interfaces, to enable easy lookup of the available identifiers in the system.

import { Commands, Events } from "@devpie/client-events";

console.log(Commands.EnableAccounting);
// EnableAccounting

console.log(Events.MembershipAdded);
// MembershipAdded

Existing interfaces allow us to type check the message body being sent, ensuring correctness of implementation.

export interface MembershipAddedEvent {
  id: string;
  type: Events.MembershipAdded;
  metadata: Metadata;
  data: {
    MemberId: string;
    TeamId: string;
    UserId: string;
    Role: string;
    Created: string;
  };
}

Messaging

Messaging systems allow Microservices to exchange messages without coupling them together. Some Microservices emit messages, while others listen to the messages they subscribe to.

A message is a generic term for data that could be either a command or an event. Commands are messages that trigger something to happen (in the future). Events are messages that notify listeners about something that has happened (in the past). Publishers send commands or events without knowing the consumers that may be listening.

Language Support

This package is written in TypeScript but converted to language targets. Each supported language has its own package.

Supported languages include:

Development

Modify src/events.ts, the source of truth, then re-build to update all packages.

npm run build

Release

Here's the steps to perform a manual release for Typescript and Go packages (needs to be automated). Publishing Go modules relies on git tags. https://blog.golang.org/publishing-go-modules

# 1. npm run build
# 2. update ./package.json version
# 3. commit changes to git
# 4. create a new tag for release
git tag v0.0.1
# 5. push new tag
git push origin v0.0.1
# 6. push changes to remote repository
git push origin main
# 7. publish npm module
npm publish