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

@pipeline-analytics/sdk-node

v4.10.0

Published

Node/TypeScript client for pipeline-analytics's REST API, generated from its OpenAPI spec.

Downloads

1,115

Readme

pipeline-analytics-sdk-node

CI npm Codecov License: MIT docs

A Node/TypeScript client for pipeline-analytics's REST API, generated from its OpenAPI spec with openapi-typescript and openapi-fetch. It saves you from hand-rolling HTTP requests, retries and pagination against the API yourself.

Requirements

  • Node.js 20+ or Bun 1.1+ — anything with a native fetch.
  • A running pipeline-analytics instance.
  • A session cookie for that instance (see "Authentication" below) — every endpoint except getVersion and the two webhook receivers needs one.

Installation

bun add @pipeline-analytics/sdk-node
# or: npm install @pipeline-analytics/sdk-node

Alternative registry: GitHub Packages

Every release also publishes to GitHub Packages under @alrayyes/pipeline-analytics-sdk-node — the same code, a different scope, because GitHub Packages' npm registry requires a package scoped to the repo owner rather than the pipeline-analytics npm org. Worth it if you're already authenticated to GitHub (CI in another of your own repos, say) and would rather not hold a separate npmjs.com credential just to install this one package.

Add a .npmrc pointing that scope at GitHub Packages:

@alrayyes:registry=https://npm.pkg.github.com
//npm.pkg.github.com/:_authToken=${GITHUB_TOKEN}

then install the scoped name instead:

npm install @alrayyes/pipeline-analytics-sdk-node

Authentication

pipeline-analytics authenticates browsers with WebAuthn, not an API token — there's no headless credential-grant flow in its spec (alrayyes/pipeline-analytics#178 tracks a real token flow), so this SDK can't log in for you. Get a session cookie by logging into the dashboard in a browser, opening dev tools, and copying the session cookie's value. Pass it to createPipelineAnalyticsClient or set PIPELINE_ANALYTICS_SESSION in the environment:

import { createPipelineAnalyticsClient } from "@pipeline-analytics/sdk-node";

const client = createPipelineAnalyticsClient("https://pipeline-analytics.example.com", {
  sessionCookie: process.env.PIPELINE_ANALYTICS_SESSION,
});

A session cookie expires the same way it would in a browser; there's nothing in this SDK to refresh it automatically.

Usage

getVersion needs no session and is a good first call to prove the client reaches the server at all. The client is a typed openapi-fetch instance, so every operation is client.GET(path, ...) / client.POST(path, ...), returning { data, error, response }:

import { createPipelineAnalyticsClient } from "@pipeline-analytics/sdk-node";

const client = createPipelineAnalyticsClient("https://pipeline-analytics.example.com");

const { data } = await client.GET("/api/version", {});
console.log("server version:", data?.version);

Listing tracked repos needs a session, and demonstrates the pagination iterator and typed error handling:

import { ApiError, createPipelineAnalyticsClient, listRepos } from "@pipeline-analytics/sdk-node";

const client = createPipelineAnalyticsClient("https://pipeline-analytics.example.com", {
  sessionCookie: process.env.PIPELINE_ANALYTICS_SESSION,
});

try {
  for await (const repo of listRepos(client)) {
    console.log(repo.identifier, repo.ingestionStatus);
  }
} catch (err) {
  if (err instanceof ApiError && err.statusCode === 401) {
    throw new Error("session cookie expired or invalid");
  }
  throw err;
}

Every other operation follows the same client.GET/client.POST/... pattern. Use decodeError to turn a failed response into a @pipeline-analytics/sdk-node ApiError uniformly:

import { decodeError } from "@pipeline-analytics/sdk-node";

const { data, error, response } = await client.GET("/api/repos/{repoId}/usage", {
  params: { path: { repoId } },
});
if (error) {
  throw decodeError(response, error);
}

The client retries a 429 or 5xx response with exponential backoff and jitter (honoring a server-sent Retry-After), and never retries any other 4xx. Tune it with the retry option, or swap the underlying fetch entirely with the fetch option.

Regenerating the types

See CONTRIBUTING.md — the generated types are pinned to a specific pipeline-analytics commit and shouldn't drift from it silently.

Contributing

See CONTRIBUTING.md for building, testing and the release process.

License

MIT — a permissive license for the client, independent of pipeline-analytics' own AGPL-3.0.