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

@sable-ai/core

v0.1.6

Published

Shared types and utilities for Sable AI SDK packages

Readme

Utilities in src/utils/

  • Browser.ts — Safe browser checks and globals.

    • Exports: isBrowser, safeWindow, safeDocument.
  • Http.ts — Lightweight HTTP client wrapper.

    • Exports: HttpClient.
  • ElementSelector.ts — Find single or multiple elements, wait for elements.

    • Exports: findElement, findElements, waitForElement.
  • ElementPositioning.ts — Helpers for positioning and observation.

    • Exports: getElementPosition, isElementInViewport, applyPositionWithDelay, createPositionObserver, removePositionObserver, cleanupAllPositionObservers.
  • HighlightElement.ts — Visual pulsing highlight with auto-restore.

    • Exports: highlightElement.
  • ScrollToElement.ts — Scroll an element into view with optional highlight.

    • Exports: scrollToElement.
  • AudioAnalyzer.ts — Audio volume analysis utilities.

    • Exports: AudioVolumeAnalyzer.

@sable-ai/core

Core utilities for DOM interaction and client automation.

This package is ESM-first and exposes utilities like highlightElement and scrollToElement for visual guidance and in-page navigation.

Installation

This package is part of the monorepo and is consumed by sibling packages. If you want to use it externally, install via your package manager after publishing.

Build

From packages/core/:

npm run build

This generates:

  • dist/esm/ — ES modules (used by the visual test page)
  • dist/cjs/ — CommonJS builds
  • dist/types/ — TypeScript declarations

Visual testing (no React app required)

A minimal HTML page is provided to visually test the helpers.

  1. Build the package (if you haven't already):
npm run build
  1. Serve packages/core/ as the web root (so that /test/ and /dist/esm/ are accessible):
npx serve
  1. Open the test page in your browser:
  • http://localhost:3000/test/

If you serve from the monorepo root instead, use:

  • http://localhost:3000/packages/core/test/

The page at packages/core/test/index.html loads the built ESM files directly:

  • ../dist/esm/utils/highlightElement.js
  • ../dist/esm/utils/scrollToElement.js

Buttons on the page let you:

  • Highlight: run highlightElement() with default yellow pulsing outline and auto-restore.
  • Flash (1s): run highlightElement() with an orange style for 1 second.
  • Scroll + Highlight: run scrollToElement() which scrolls and calls highlightElement().

API

  • highlightElement(element, options?, timeMs?) => Promise

    • Temporarily applies a prominent yellow pulsing outline to element, then restores original inline styles.
    • Options (all optional):
      • color (default: rgb(204, 184, 0))
      • width (default: 2.5px)
      • duration — CSS transition duration, e.g. "0.5s" (default 0.5s)
    • timeMs — how long to keep the highlight before restoring (default 1000).
  • scrollToElement(element, options?) => Promise

    • Scrolls element into view and optionally highlights it.
    • Options (all optional):
      • behavior (default: "smooth")
      • block (default: "center")
      • inline (default: "nearest")
      • highlight (default: true)
      • highlightOptions — forwarded to highlightElement()
      • highlightDurationMs — duration passed to highlightElement() (default 1000)

Notes

  • This package is ESM-first. When importing in the browser, relative imports include the .js extension (e.g., ./Browser.js). The visual test page imports from dist/esm/ for this reason.
  • If your browser blocks file:// ESM imports, use npx serve (or any static server) as shown above.
  • Downstream packages should import from the top-level entry: @sable-ai/core.

Development

  • Type-check/build: npm run build
  • Linting/tests are configured in the monorepo; run them at the root if applicable.