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

@voltstack/voltclient

v1.0.2

Published

Standalone HTTP client SDK for VoltLabs - Node.js 18+ and browser compatible

Readme

@voltstack/voltclient

Standalone HTTP client SDK for the VoltLabs API. Runs on Node.js 18+ and modern browsers with no required dependencies (native fetch); an Axios adapter is an optional peer dependency for upload-progress reporting.

Install

npm install @voltstack/voltclient
# optional, only if you need onUploadProgress:
npm install axios

Quick start

import { createVoltClient, secretKey } from '@voltstack/voltclient';

const root = createVoltClient('https://api.example.com/api', {
    credential: secretKey('vsk_xxx'),
});

// Scope to an RBAC module by team:
const containers = root.withBasePath('/container', { useRBAC: true, getTeamId: () => teamId });
const list = await containers.getPaginated('/');

Choosing an API layer

The client exposes three layers; pick the lowest one that fits:

  1. Rawrequest / get / post / patch / delete return the response untouched.
  2. UnwrappersgetUnwrapped, postUnwrapped, … strip the server's { status, data } envelope; getPaginated normalizes paginated responses.
  3. Declarative services — for many endpoints, describe them once with createService instead of hand-writing calls:
import { createService, get, post } from '@voltstack/voltclient';

const users = createService('/users', {
    list: get('/'),
    getById: get<{ id: string }, User>('/:id'),
    create: post<CreateUserInput, User>('/'),
}, createClientFactory);

Path params (:id) are filled from the argument object; the remaining fields become the query string on GET/DELETE and the body on POST/PATCH.

Authentication

A CredentialProvider returns a bearer token (sync or async). Presets:

  • staticToken(token) / secretKey('vsk_…') — a fixed token.
  • dynamicToken(() => store.get()) — resolved per request (supports refresh).

Behaviour notes

  • In-flight GET deduplication is on by default: concurrent identical GETs share one request. Disable per client with dedupeGetRequests: false (recommended for server-side callers that want 1:1 request mapping).
  • Errors are thrown as ApiError carrying the server's code and HTTP status. Use err.getFriendlyMessage() for SDK-known codes and err.isPermissionDenied() for RBAC handling. The SDK does not duplicate the server's full message catalogue — unknown server codes are surfaced verbatim.

Develop

npm run build       # bundle to dist/ (ESM + CJS + d.ts)
npm run typecheck   # tsc --noEmit
npm test            # node:test suite over tests/