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

@glasshome/sync-layer

v0.1.2

Published

Type-safe, reactive state synchronization layer for Home Assistant

Downloads

378

Readme

@glasshome/sync-layer

Type-safe, reactive state synchronization layer for Home Assistant.

Provides connection management, entity querying, service calls, and reactive state via a SolidJS store — all with full TypeScript types powered by @glasshome/ha-types.

Install

npm install @glasshome/sync-layer @glasshome/ha-types
# or
bun add @glasshome/sync-layer @glasshome/ha-types

Quick Start

import {
  initConnection,
  getConnection,
  state,
  entity,
  entities,
  callService,
} from "@glasshome/sync-layer";

// Connect to Home Assistant
await initConnection({
  hassUrl: "http://homeassistant.local:8123",
  token: "YOUR_LONG_LIVED_ACCESS_TOKEN",
});

// Access reactive state
console.log(state.connectionState); // "connected"

// Query a single entity
const light = entity("light.living_room").get();

// Query multiple entities by domain
const allLights = entities().domain("light").list();

// Call a service
await callService("light", "turn_on", {
  entity_id: "light.living_room",
  brightness: 200,
});

Subpath Imports

@glasshome/sync-layer/solid

SolidJS hooks for reactive UI integration. Requires solid-js as a peer dependency.

import {
  useEntity,
  useEntities,
  useConnection,
  useStore,
  useService,
  useToggle,
  useArea,
  useCamera,
  useEntityHistory,
  useForecast,
} from "@glasshome/sync-layer/solid";

// Reactive entity access in SolidJS components
const light = useEntity("light.living_room");
const connection = useConnection();
const toggle = useToggle("light.living_room");

@glasshome/sync-layer/testing

Mock utilities for testing without a live Home Assistant instance.

import {
  MockConnection,
  createEntity,
  createArea,
  createBasicFixtures,
  simulateStateChange,
  waitForConnection,
  getStoreSnapshot,
} from "@glasshome/sync-layer/testing";

const mock = new MockConnection();
await mock.connect();

simulateStateChange("light.test", { state: "on" });

@glasshome/sync-layer/demo

Demo mode provider for loading fixture data without a real backend.

import {
  loadDemoData,
  unloadDemoData,
  isDemoMode,
  applyDemoServiceCall,
} from "@glasshome/sync-layer/demo";

await loadDemoData(); // Populates store with demo entities

Peer Dependencies

| Package | Required | Notes | |---------|----------|-------| | @glasshome/ha-types | Yes | TypeScript types for Home Assistant entities, services, and events | | solid-js | Only for ./solid subpath | SolidJS reactive primitives used by the hooks adapter |

License

MIT