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

torch-typescript

v0.0.1

Published

PyTorch/libtorch compiled to WebAssembly for TypeScript

Readme

torch-typescript

PyTorch/libtorch compiled to WebAssembly for TypeScript.

This package provides TypeScript bindings for PyTorch tensor operations compiled to WebAssembly using Emscripten. It works in both Node.js and browser environments.

Features

  • Tensor creation (ones, zeros, from data)
  • Basic tensor operations (add, mul, matmul)
  • torch-typescript model loading and inference
  • Works in Node.js and browsers via WebAssembly

Installation

npm install torch-typescript
# or
pnpm add torch-typescript

Usage

import { loadModule, ones, zeros, tensor, DType } from 'torch-typescript';

// Initialize the WASM module
await loadModule();

// Create tensors
const a = await ones([2, 3]);
const b = await zeros([2, 3]);
const c = await tensor([1, 2, 3, 4, 5, 6], [2, 3]);

// Tensor operations
const sum = a.add(b);
const product = a.mul(c);

// Matrix multiplication
const x = await ones([2, 3]);
const y = await ones([3, 4]);
const result = x.matmul(y);

// Get tensor data
console.log(result.shape);  // [2, 4]
console.log(result.toArray());

// Free tensors when done
a.free();
b.free();
c.free();
sum.free();
product.free();
x.free();
y.free();
result.free();

Loading torch-typescript Models

import { loadModule, load, tensor } from 'torch-typescript';

await loadModule();

// Load a torch-typescript model
const model = await load('model.pt');

// Create input tensor
const input = await tensor([/* your input data */], [1, 3, 224, 224]);

// Run inference
const output = model.forward(input);

console.log(output.shape);
console.log(output.toArray());

// Clean up
input.free();
output.free();
model.free();

Building from Source

Prerequisites

  • Docker
  • Node.js 18+
  • pnpm

Build Steps

  1. Build the Docker image with Emscripten and PyTorch:

    pnpm wasm:docker-build
  2. Build the WASM module:

    pnpm wasm:build
  3. Build the TypeScript wrapper:

    pnpm build:js

Or run all steps at once:

pnpm build

Note: The initial Docker build is slow as it compiles PyTorch from source.

API Reference

Functions

  • loadModule(): Promise<void> - Initialize the WASM module (must be called before other operations)
  • version(): Promise<string> - Get PyTorch version
  • ones(shape: number[], dtype?: DType): Promise<Tensor> - Create tensor filled with ones
  • zeros(shape: number[], dtype?: DType): Promise<Tensor> - Create tensor filled with zeros
  • tensor(data: number[] | Float32Array, shape: number[]): Promise<Tensor> - Create tensor from data
  • load(filename: string): Promise<Module> - Load a torch-typescript model

Tensor Class

  • shape: number[] - Tensor dimensions
  • numel: number - Number of elements
  • toArray(): Float32Array - Get tensor data
  • add(other: Tensor): Tensor - Element-wise addition
  • mul(other: Tensor): Tensor - Element-wise multiplication
  • matmul(other: Tensor): Tensor - Matrix multiplication
  • free(): void - Free tensor memory

Module Class

  • forward(input: Tensor): Tensor - Run model inference
  • free(): void - Free module memory

DType Enum

  • DType.Float32 - 32-bit floating point
  • DType.Float64 - 64-bit floating point
  • DType.Int32 - 32-bit integer
  • DType.Int64 - 64-bit integer

License

MIT

Credits

Based on: