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

bare-wifi-android

v0.1.5

Published

Android WifiManager bindings for the Bare runtime — multicast lock and WiFi interface IP

Downloads

611

Readme

bare-wifi-android

⚠️ Experimental Claude generated prototype

Android WifiManager bindings for the Bare runtime.

Provides two things needed for mDNS / multicast UDP to work on Android:

  1. Multicast lock — Android drops multicast packets by default to save battery. Acquiring a WifiManager.MulticastLock tells the OS to let them through.
  2. WiFi interface IPsocket.addMembership needs the local IP of the WiFi interface to join the right multicast group. This finds it via getifaddrs on the wlan0 interface.

This is an Android-only native addon. Use an import map to gate it to Android in cross-platform apps.

Usage

const wifiManager = require('bare-wifi-android')

// Acquire the multicast lock so UDP multicast packets are delivered.
// No-op on non-Android. The Android application context is obtained
// automatically via ActivityThread.currentApplication().
wifiManager.acquireMulticastLock('my-app-mdns')

// Find the WiFi interface IP to pass to socket.addMembership.
const wifiIP = wifiManager.getWifiIP() // e.g. "192.168.1.42" or null

// ... run mDNS discovery ...

// Release when done.
wifiManager.releaseMulticastLock()

With bare-mdns-discovery

const wifiManager = require('bare-wifi-android')
const { Discovery } = require('bare-mdns-discovery')

wifiManager.acquireMulticastLock('my-app-mdns')

const discovery = new Discovery({ service: 'companion-link' })
// Pass wifiIP into addMembership inside Discovery._open() — requires a fork
// or patch of bare-mdns-discovery to accept a multicastInterface option.

API

acquireMulticastLock([tag])

Acquires a WifiManager.MulticastLock with the given tag string (default "bare-mdns"). Idempotent — acquiring a second lock releases the previous one. No-op on non-Android.

releaseMulticastLock()

Releases the currently held lock. No-op if no lock is held or on non-Android.

getWifiIP()

Returns the IPv4 address of the wlan0 WiFi interface as a string, or null if not connected. Requires NDK API 24+.

Building

npm i -g bare-make
bare-make generate --platform android --arch arm64 -D ANDROID_PLATFORM=android-34 -D ANDROID_STL=c++_shared
bare-make build
bare-make install --link

Replace arm64 with arm, x64, or ia32 for other Android targets.

License

Apache-2.0