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

logisheets-runtime

v1.16.1

Published

Headless LogiSheets spreadsheet runtime for Node — logisheets-core wired to the Node WASM engine. The Node counterpart of the browser app.

Readme

logisheets-runtime

A headless LogiSheets spreadsheet runtime for Node — the Node counterpart of the browser app. It wires the engine-neutral logic in logisheets-core to the Node WASM engine, so you can read, manipulate, and write real .xlsx files on the server with no browser and no UI.

A single SpreadsheetRuntime owns many open workbooks at once; every operation runs against a specific Workbook handle. All workbook logic comes from logisheets-core's WorkbookOps — the runtime only adapts the synchronous Node handle() entry point into the async Client that layer expects.

Installation

npm install logisheets-runtime

It pulls in logisheets (the Node WASM engine) and logisheets-core. ESM-only; requires a recent Node with WASM support.

Quick start

import {SpreadsheetRuntime} from 'logisheets-runtime'

const rt = new SpreadsheetRuntime()

// Open workbooks from disk, from bytes, or create empty ones.
const wb1 = await rt.loadWorkbook('a.xlsx')
const wb2 = rt.createWorkbook()

// Drive edits through the shared core operation layer.
await wb1.ops.inputCell(0, 0, 0, 'Hello')   // sheet 0, cell A1
await wb1.ops.createSheet(1, 'Summary')

// Read evaluated values straight off the handle.
const v = wb1.getValue(0, 0, 0)

// Undo / redo history is per workbook.
await wb1.undo()
await wb1.redo()

// Release engine resources when done.
rt.close(wb1)
rt.closeAll()

SpreadsheetRuntime

| Member | Description | |--------|-------------| | createWorkbook() | Create a new empty workbook | | loadWorkbook(path) | Load a .xlsx from disk (dedups by absolute path) | | loadWorkbookFromBytes(bytes, name, path?) | Load a .xlsx from raw bytes in memory | | workbooks | All currently open workbooks | | close(wb) / closeAll() | Release engine resources |

Workbook

Obtain one from the runtime, then run every operation against it so the target workbook is always explicit.

| Member | Description | |--------|-------------| | id | The workbook's engine id | | ops | The shared WorkbookOps (cell input, sheets, blocks, styles, …) bound to this workbook | | client | Raw async Client — escape hatch for engine calls not yet on ops | | getValue(sheetIdx, row, col) | Read a single evaluated cell value | | undo() / redo() | Step the history; returns whether anything changed | | cleanHistory() | Drop history, keeping current state as baseline | | discardChanges() | Revert every change back to the current baseline |

Beyond a single process

Everything below is exported from the top-level logisheets-runtime entry (alongside the full re-exported logisheets-core surface), so you import it all from one place:

  • RPC — a JSON-RPC server for issuing operations against the runtime.
  • Crafts — headlessly reconstruct the crafts a workbook depends on.
  • Watcher — hot-(re)load workbooks from wb_*.json descriptors.
  • Enterprise — register with the control panel and pull crafts from the enterprise registry.

License

MIT — part of the LogiSheets project.