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

greft-codec

v0.1.0

Published

Language-agnostic lossless binary serializer — encode in JS, decode in Python / Rust / Go / …. Zero runtime dependencies.

Readme

greft-codec

Language-agnostic lossless binary serializer. Encode values in JavaScript, decode them in other languages (Python / Rust / Go / …) and use them as-is.

  • Lossless for everything the JS runtime can represent — cycles, shared identity, Map/Set with arbitrary keys, BigInt, typed arrays, Date, RegExp, Error, symbols, and more.
  • Zero runtime dependencies. No Buffer / structuredClone / vm — only standard DataView / TextEncoder / BigInt.
  • One format, many readers. The byte format is a single source of truth (spec/FORMAT.md), verified byte-for-byte across JS / Python / Rust / Go conformance ports.

A primary use case: take JS mock data (e.g. from zod-v4-mocks) and reuse it as test fixtures in other languages.

Install

npm add greft-codec      # or: pnpm add greft-codec / yarn add greft-codec

Usage

import { encode, decode } from "greft-codec";

const bytes = encode(value); // value -> Uint8Array (lossless, cycles + shared identity)
const back = decode(bytes); // Uint8Array -> value

Extension types

Losslessly serialize values the core rejects (class instances, domain types, …) by registering a TypeExtension:

import { encode, decode } from "greft-codec";

const types = [/* TypeExtension[] */];
const bytes = encode(value, { types });
const back = decode(bytes, { types });

Weak collections

WeakMap / WeakSet contents are supplied explicitly via a provider:

encode(value, { provider });

JSON bridge

Inspect or hand-edit an encoded graph as JSON (identity-lossy; cycles rejected):

import { toJSON, fromJSON } from "greft-codec";

CLI

The package installs a graft binary:

npm i -g greft-codec
graft inspect <file.bin>   # tree view + tag histogram
graft diff <a.bin> <b.bin> # structural diff of two value graphs

One-off, without installing:

npx -p greft-codec graft inspect <file.bin>

Decode safety

decode(bytes, { maxNodes }) bounds work; malformed input (out-of-range refs, counts exceeding the buffer) is rejected rather than trusted.

Links

License

ISC