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

war3-model-blp

v0.1.0

Published

Lightweight BLP1 decoder extracted from war3-model.

Readme

war3-model-blp

Lightweight BLP functionality extracted from war3-model, focused on BLP image decoding without the full model viewer/runtime.

This package currently exposes the BLP1 decoder bundled from war3-model 4.0.1.

Install

npm install war3-model-blp

Usage

Node.js

const fs = require("node:fs");
const { decodeBLP, getBLPImageData } = require("war3-model-blp");

const buffer = fs.readFileSync("ReplaceableTextures/CommandButtons/BTNFootman.blp");
const blp = decodeBLP(buffer.buffer.slice(buffer.byteOffset, buffer.byteOffset + buffer.byteLength));
const imageData = getBLPImageData(blp, 0);

console.log(imageData.width, imageData.height, imageData.data);

Run the Node example with a local BLP file:

node examples/node.cjs path/to/file.blp

Browser

<script src="dist/war3-model-blp.js"></script>
<script>
  const { decodeBLP, getBLPImageData } = globalThis.war3modelBlp;
</script>

Browser demo

Open examples/browser.html in a browser, choose a .blp file, and the demo will decode mipmap 0 onto a canvas.

Tests

npm test

The automated test is Node-only and verifies the package entry plus a synthetic 1x1 red BLP1 fixture stored at test/fixtures/red-1x1.blp. The browser test case is intentionally kept as examples/browser.html, because it needs a real browser and a local .blp file selected by the user.

API

decodeBLP(arrayBuffer)

Parses a BLP1 image from an ArrayBuffer and returns decoded metadata plus mipmap information.

getBLPImageData(blp, mipmapIndex)

Decodes one mipmap from the object returned by decodeBLP.

Returns an ImageData object when ImageData is available. In non-browser runtimes it returns an ImageData-like object:

{
  width: number,
  height: number,
  data: Uint8ClampedArray,
  colorSpace: "srgb"
}

Scope

  • BLP1 is supported.
  • BLP0 and BLP2 are not supported by this extracted decoder.
  • This package is intended as a small decoder bundle, not a full war3-model replacement.

Attribution

The decoder is extracted from war3-model 4.0.1.

Source: https://github.com/4eb0da/war3-model

License: MIT. See LICENSE and NOTICE.