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

@lynx-js/trace-processor

v0.0.1

Published

A WebAssembly build of the Perfetto Trace Processor providing a JavaScript API for querying Perfetto traces

Readme

@lynx-js/trace-processor

A WebAssembly build of the Perfetto Trace Processor providing a JavaScript API for querying Perfetto traces in Node.js.

Installation

pnpm add @lynx-js/trace-processor

Usage

import { WasmEngine } from "@lynx-js/trace-processor";

// Create an engine instance
using engine = new WasmEngine("my-engine");

// Load a trace file
await engine.parse(traceData);
engine.notifyEof();

// Execute SQL queries
const result = await engine.query("SELECT * FROM slice LIMIT 10");

API

WasmEngine

The main class for interacting with the Perfetto Trace Processor.

Constructor

new WasmEngine(id: string)
  • id - A unique identifier for the engine instance

Methods

  • parse(data: Uint8Array) - Load trace data into the engine
  • notifyEof() - Notify the engine that all trace data has been loaded
  • query(sql: string) - Execute a SQL query and return results
  • tryQuery(sql: string) - Execute a SQL query and return Result<QueryResult>
  • [Symbol.dispose]() - Clean up resources

QueryResult

The result object returned by query() and tryQuery().

Methods

  • columns(): string[] - Get array of column names
  • numRows(): number - Get total number of rows
  • error(): string | undefined - Get error message if query failed
  • iter(spec: object) - Create an iterator over the rows

Iterating Results

const result = await engine.query("SELECT ts, dur, name FROM slice LIMIT 10");
const columns = result.columns();

for (const it = result.iter({}); it.valid(); it.next()) {
  const row: Record<string, unknown> = {};
  for (const name of columns) {
    row[name] = it.get(name);
  }
  console.log(row);
}

Iterator Methods

  • valid(): boolean - Check if iterator points to a valid row
  • next() - Move to the next row
  • get(column: string): SqlValue - Get value by column name

SqlValue can be string | number | bigint | Uint8Array | null.

Requirements

  • Node.js >= 18

How It Works

This package bundles the Perfetto Trace Processor WebAssembly module along with JavaScript bindings extracted from the Perfetto UI. The prepare script downloads the latest release and rebuilds the necessary modules for Node.js compatibility.

License

The vendored Perfetto code is licensed under the Apache License 2.0.