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

@tektonic-company/autofixer

v0.1.1

Published

Minimal AutoFix ingest SDK for catch blocks and server-side error reporting.

Readme

@tektonic-company/autofixer

Minimal AutoFix ingest SDK for apps that want to report caught errors to the orchestrator with an ingest key.

What it does

  • sends a normalized error payload to POST /v1/ingest/error
  • uses an org-scoped ingest key
  • works in Node and any runtime with fetch
  • adds almost no surface area: capture, captureMessage, and wrap

Install

Use this folder as its own package or publish it as a separate repo/package.

npm install @tektonic-company/autofixer

Minimal usage

import { createAutoFixClient } from "@tektonic-company/autofixer";

const autofix = createAutoFixClient({
  endpoint: "https://tektonic-auto-fixer-api-production.up.railway.app",
  apiKey: process.env.AUTOFIX_INGEST_KEY,
  repository: "clawpump-dashboard",
  environment: process.env.NODE_ENV ?? "development",
  service: "dashboard",
  source: "nextjs",
});

try {
  await dangerousCall();
} catch (error) {
  await autofix.capture(error, {
    route: "/checkout",
    component: "CheckoutButton",
    affectedFiles: ["src/app/checkout/page.tsx"],
    context: {
      feature: "checkout",
      orderId,
    },
    metadata: {
      release: process.env.VERCEL_GIT_COMMIT_SHA ?? "local",
    },
  });
  throw error;
}

Wrap helper

await autofix.wrap(async () => {
  await dangerousCall();
}, {
  context: { feature: "checkout" },
});

endpoint is optional. If omitted, the SDK uses Tektonic's hosted AutoFix API. The dashboard-generated setup snippet pins the current hosted endpoint so app code is explicit.

wrap captures the thrown error and then rethrows it.

Payload shape

The SDK sends:

{
  "repository": "clawpump-dashboard",
  "environment": "production",
  "service": "dashboard",
  "source": "nextjs",
  "message": "boom",
  "stack": "Error: boom ...",
  "stackFrames": [
    {
      "function": "submitCheckout",
      "file": "src/app/checkout/page.tsx",
      "line": 42,
      "column": 7
    }
  ],
  "affectedFiles": ["src/app/checkout/page.tsx"],
  "route": "/checkout",
  "component": "CheckoutButton",
  "requestId": "req_123",
  "release": "abc123",
  "commitSha": "abc123",
  "occurredAt": "2026-04-23T12:00:00.000Z",
  "context": {
    "feature": "checkout"
  },
  "metadata": {
    "release": "abc123"
  },
  "runtime": {
    "name": "node",
    "version": "v22.0.0"
  },
  "request": {
    "method": "POST",
    "path": "/api/checkout"
  }
}

The request header is:

X-Ingest-Key: your-org-ingest-key

Server config

The current Go API accepts org-scoped ingest keys through:

INGEST_API_KEYS=default:afx_live_default,other-org:afx_live_other

Each entry is organizationSlug:key.

For dashboard-created keys, allowed browser origins are configured per key. For local env-configured keys, configure the API with:

INGEST_ALLOWED_ORIGINS=https://your-app.example.com

The API handles OPTIONS preflight for X-Ingest-Key only for configured origins. Origin filtering is a browser/CORS protection; keep ingest keys secret for server-side usage.

Notes

  • capture returns { ok: false } on request failure instead of throwing.
  • wrap rethrows the original application error after reporting it.
  • context is sanitized so circular objects do not break serialization.
  • JavaScript stack traces are parsed into stackFrames, and affectedFiles is inferred from frames plus any files you pass explicitly.
  • Do not send secrets, tokens, cookies, private keys, or full request bodies in context or request.

License

@tektonic-company/autofixer is licensed under the Business Source License 1.1 (BUSL-1.1). See LICENSE for the Tektonic Additional Use Grant, Change Date, and Change License.