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

rhodonite-mbt

v0.1.8

Published

TypeScript wrappers and MoonBit JavaScript bridge for RhodoniteMBT.

Readme

rhodonite-mbt

TypeScript wrapper package for RhodoniteMBT. It includes the existing math, ECS, and browser app runtime wrappers plus the MoonBit JavaScript bridge code they call.

Installation

Install from npm with your package manager:

npm install rhodonite-mbt
pnpm add rhodonite-mbt
yarn add rhodonite-mbt

This package is ESM-only and is intended for modern TypeScript projects and bundlers. Use it from browser-capable ESM environments. The package depends on @webgpu/types for WebGPU TypeScript declarations.

Import paths

The package exposes these entrypoints:

  • rhodonite-mbt — combined export surface
  • rhodonite-mbt/math — vector and matrix wrappers
  • rhodonite-mbt/ecs — ECS wrappers and GPU write helpers
  • rhodonite-mbt/app — browser WebGPU app/runtime helpers

Basic math usage

import { Vector3F } from "rhodonite-mbt/math";

const v = Vector3F.new(1, 2, 3);
const doubled = v.scale(2);

console.log(doubled.toString());

ECS usage

import { World } from "rhodonite-mbt/ecs";

const world = World.new();
const entity = world.createEntity();

world.addComponent(entity, world.transformComponent());

Browser app runtime usage

The app runtime helpers are browser-only and expect WebGPU support.

import {
  Engine,
  PlatformApp,
  PlatformOptions,
  runSingleCanvasPlatform,
} from "rhodonite-mbt/app";

const canvas = document.querySelector<HTMLCanvasElement>("#canvas");

if (canvas) {
  await runSingleCanvasPlatform(
    canvas,
    PlatformApp.defaultEngine((engine: Engine) => {
      engine.addPhaseHandler("rhodonite/render", (_engine, frame) => {
        if (!frame.surface.active) {
          return;
        }

        const encoder = engine.device.createCommandEncoder();
        const pass = encoder.beginRenderPass({
          colorAttachments: [
            {
              view: engine.context.getCurrentTexture().createView(),
              clearValue: { r: 0.04, g: 0.04, b: 0.05, a: 1 },
              loadOp: "clear",
              storeOp: "store",
            },
          ],
        });

        pass.end();
        engine.queue.submit([encoder.finish()]);
      });
    }),
    PlatformOptions.interactive(),
  );
}

If you only need input normalization or frame-loop helpers, import them from rhodonite-mbt/app directly, for example installBrowserInputState, startBrowserFrameLoop, or startBrowserOnDemandFrameLoop.

Local package testing

From the RhodoniteMBT repository root, build and pack the npm package with:

pnpm run build:npm
pnpm run pack:npm

Then install the generated tarball into another project with your package manager, for example:

pnpm add /path/to/RhodoniteMBT/packages/rhodonite-mbt/rhodonite-mbt-0.1.8.tgz

License

Apache-2.0. See LICENSE.