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

x402-trinity-gaming

v0.3.1

Published

Headless x402 payment backend for game storefronts. No UI, no overlay, no console output - a call in, an event out.

Readme

x402-trinity-gaming

A headless, zero-UI payment utility for Unity and Unreal Engine storefronts.

No UI. No overlay. No browser handoff. No console output. Your button, your art, your unlock animation — this handles the money and gets out of the way.

npm install x402-trinity-gaming

How it fits

Your storefront UI  ──▶  your backend  ──▶  chain
   (Unreal/Unity)         (this package)
        ▲                       │
        └────── events ─────────┘

The player's client signs one authorization with their own key. Your server does everything else. You never hold the player's key, and for direct purchases you hold no balance either. (Tabs are the exception - see INTEGRATION.md.)

Use

import { createStorefront } from 'x402-trinity-gaming/storefront';

const store = createStorefront({
  payTo: '0xYourStudioWallet',
  network: 'base',
  facilitator: 'https://your-facilitator.example',   // REQUIRED - no default
  nonceStore,                                        // REQUIRED - must survive restarts
  catalog: {
    vanguard_skin_01: '1500000',   // atomic units: 1.50 USDC (6 decimals)
    season_pass_04:  '9990000',    // 9.99
  },
});

store.on('settled',  e => grantItem(e.playerId, e.itemId));
store.on('declined', e => showRefusal(e.playerId, e.code));

Serve the quote, take the signature, redeem it:

// 1. the client asks what it must sign
const quote = store.quote('vanguard_skin_01');

// 2. the client signs it and posts back { authorization, signature }
const result = await store.purchase({
  itemId: 'vanguard_skin_01',
  playerId: 'player-8823',
  playerAddress: '0xPlayerWallet',
  authorization,
  signature,
});

Events

| event | when | what to do | |---|---|---| | accepted | the request is well formed, the item is real, settlement is underway | grant optimistically if you want the item to appear instantly | | settled | the money has moved, with an on-chain transaction hash | grant, or reconcile an optimistic grant | | declined | it was refused | read code, not message |

Decline codes are unknown_item, already_used, rejected, settlement_failed and malformed. Each carries retryable — true means the same authorization may be presented again unchanged, false means mint a fresh one. Re-sending when retryable is false risks paying twice.

Prices are strings

Atomic units of the asset, as a decimal string. USDC has 6 decimals, so 1.50 is '1500000'. A float cannot represent money exactly, and this value goes inside a signature.

Nothing is printed

This library never writes to stdout or stderr — that is enforced by its build, not by convention. Diagnostics reach you through onDiagnostic.

Scope

Base mainnet + USDC. Other EVM chains work by passing customChains. Check any entry against the deployed contract first: call DOMAIN_SEPARATOR() and confirm it matches what this library computes. A wrong name or version produces a signature that looks valid and the contract rejects.

Before you use it with real money

This software signs payment authorizations. You are responsible for the funds in any wallet you configure it with and for the limits you set. nonceStore must be durable — an in-memory replay guard forgets every settled payment on restart, which means selling the same item twice for free.

Building from source

git clone https://github.com/devmster/x402-trinity-gaming.git
cd x402-trinity-gaming
npm install
node tools/build.mjs

npm install first — the bundler is a dev dependency, and without it the build stops at ERR_MODULE_NOT_FOUND. The build verifies itself and prints BUILD VERIFIED; the dist/ it produces is byte-identical to the published package.

License

Business Source License 1.1. Source-available; converts to MIT on 2029-08-25. See LICENSE.

Network fee: 0.1% per transaction.