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

@cratestack/ts-types

v0.8.6

Published

Shared TypeScript interfaces for CrateStack's generated RPC client (RpcLink, RpcLinkRequest, wire frame shapes). Types only — compiles to near-empty JS.

Readme

@cratestack/ts-types

Shared TypeScript interfaces for CrateStack's generated TypeScript RPC client (transport rpc schemas) and for the rest of the @cratestack/* npm family (link-*, runtime-*, validator-*, adapter-*).

Pinned local copies of the wire/link contract generated into every CrateStack transport rpc project by crates/cratestack-client-typescript/templates/src/rpc-links.ts.j2 and rpc-runtime.ts.j2 (issue #182). Kept as plain interfaces/function types deliberately — a generated project's CratestackRpcRuntime is a per-project class with no shared import path, so this package can't (and doesn't need to) import it; TypeScript's structural typing means any object shaped like these types is assignable into a generated client's links array, regardless of which project generated it.

This package has no runtime code — every export is an interface or type, so it compiles away to (essentially) nothing. Everything else in the @cratestack/* family depends on it for types only (import type), so pulling in link-batch, validator-zod, etc. never adds this package's weight to your bundle.

Exports

  • .RpcLink, RpcLinkRequest, RpcLinkResponse, RpcLinkNext, CratestackRpcCodec, RpcRequest, RpcResponseFrame, RpcErrorBody, RpcCaller; the streaming counterparts RpcStreamLinkRequest, RpcStreamFrame, RpcStreamLinkNext, RpcStreamLink; and, re-exported from ./cbor-seq, MalformedCborSeqError, RPC_STREAM_ERROR_TAG, CborSeqBoundaryScanner, classifyCborSeqItem.
  • ./test-harnessFakeRuntime, a minimal in-memory runtime that mirrors CratestackRpcRuntime's chain construction exactly, for testing RpcLink implementations against a real chain instead of a reimplementation of one. Not part of the public API surface — used by this package's own tests and by every other @cratestack/* package's test suite.

Usage

import type { RpcLink } from "@cratestack/ts-types";

export function createMyLink(): RpcLink {
  return async (request, next) => {
    // ...
    return next(request);
  };
}