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 🙏

© 2026 – Pkg Stats / Ryan Hefner

@bacnet-js/device

v0.5.0

Published

A TypeScript library for implementing BACnet IP devices in Node.js.

Downloads

125

Readme

@bacnet-js/device

A TypeScript library for implementing BACnet/IP devices in Node.js.

Status

Under heavy development as of June 2025.

This project was started by Jacopo Scazzosi (@jacoscaz), who continues to maintain it, halfway through 2025. However, just a few weeks after the first alpha release, it was then moved to the newly-created bacnet-js organization, together with primary dependency @bacnet-js/client. By putting our heads together we hope to create a robust, modular, cohesive ecosystem for BACnet applications in Node.js.

Interested in the intersection of BACnet and Node.js? Come visit us!

Characteristics

This library provides a high-level API that simplifies the instantiation and management of BACnet objects by abstracting network operations (subscription management, CoV propagation, value updates) and accurately modelling BACnet's object types through dedicated classes that automatically instantiate all properties required by the BACnet specification.

  1. Detailed types: ships well-defined interfaces and classes to surface BACnet's complex data structures at the typings level.
  2. Separation of concerns: maintains separate classes for BACnet objects, properties, and network operations, loosely coupled via events.
  3. Backpressure management: operations return Promises that resolve only after full processing and acknowledgment, creating natural throttling; for example, COV notifications wait for subscriber confirmation before processing the next change.
  4. Object-level transactions: access to property values, whether by other devices in the BACnet network or by consumers of this library, are processed through per-object FIFO queues to maintain consistency and prevent race conditions.

This library is built on top of the wonderful @bacnet-js/client, a TypeScript implementation of BACnet's protocol. Any improvement that is applicable to @bacnet-js/client is contributed upstream.

Documentation

License

This project is licensed under the MIT License - see the LICENSE file for details.

Usage

See the examples directory for working usage examples which you should be able to run locally and use with any BACnet client of your choice. For local testing I tend to use YABE, which is native to Windows but can be made to work reasonably well on macOS and Linux via Wine.