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

@subdom/sdk

v0.2.0

Published

TypeScript client for the subdom builder-api - deploy Proxy/SBT zones, mint subdomains, start auctions, fetch metadata.

Readme

@subdom/sdk

TypeScript client for the subdom builder-api — deploy Proxy/SBT zones, mint subdomains, start auctions, and fetch NFT metadata for TON DNS .ton subdomains. Generated from the public builder-api OpenAPI spec (platform-internal/admin endpoints excluded — see the repo root README); every method returns a TransactionResponse ({ validUntil, messages }) ready to hand straight to TonConnect.

Install

yarn add @subdom/sdk

(or npm install @subdom/sdk)

Quick start

import { SubdomClient } from "@subdom/sdk";

const client = new SubdomClient({ BASE: "https://api.subdom.zone" });

// Deploy a Proxy zone on your own domain — one call, platform owner/royalty
// values are enforced server-side, you only provide the domain and your wallet.
const tx = await client.mainOperations.deployProxyZone(
  "EQ...", // dnsItemAddress — your .ton domain's DNS item address
  "minter", // dnsItemName — the domain label, without ".ton"
  "UQ...", // userWalletAddress — your wallet
);

// tx.messages -> send via @tonconnect/ui-react's tonConnectUI.sendTransaction({
//   validUntil: tx.validUntil,
//   messages: tx.messages,
// })

Minting a subdomain and starting an auction follow the same pattern:

const mintTx = await client.mainOperations.mintSbtSubdomain(
  collectionAddress, // address of an SBT-mode Subdomain Collection
  "sub", // subdomain label
);

const auctionTx = await client.mainOperations.startAuction(
  collectionAddress, // address of a Proxy-mode Subdomain Collection
  "sub",
);

What's included

  • client.mainOperations — deployProxyZone / deploySbtZone (one-call zone deploy), mintSbtSubdomain, startAuction, claimSubdomain. These are the only 5 write operations exposed — every platform-owned parameter (owner/royalty/wrapper collection address/prices) is filled in server-side, you only ever pass the domain and your own wallet address.
  • client.proxyCollectionsAndItems / client.sbtCollectionsAndItems / client.wrapperCollectionAndItems / client.inactiveSubdomainMetadata — get*Metadata / get*Image read-only helpers for NFT rendering.
  • client.default — misc (health check).

Every request returns a CancelablePromise<T> (cancel with promise.cancel() if the caller unmounts before it resolves) and throws ApiError on non-2xx responses.

Advanced config

const client = new SubdomClient({
  BASE: "https://api.subdom.zone",
  HEADERS: { "X-My-Header": "value" },
});

See OpenAPIConfig for the full list of options (base URL, headers, credentials, custom HttpRequest implementation).

Regenerating

This client is generated, not hand-written — see scripts/regenerate.sh in the repo root. Don't edit files under src/ directly; they'll be overwritten on the next regeneration from openapi.json.