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

@ai-ecoverse/wasm-qpdf

v12.4.2-10

Published

qpdf 12.4: inspect, merge, split, rotate, encrypt, decrypt and linearize PDF files.

Readme

@ai-ecoverse/wasm-qpdf

qpdf 12.4.2 for slicc's wasm realm: qpdf, fix-qdf and zlib-flate. It replaces slicc 6's pdftk.

pnpm add -g @ai-ecoverse/wasm-qpdf
qpdf --empty --pages a.pdf b.pdf -- merged.pdf    # pdftk cat
qpdf --split-pages in.pdf page-%d.pdf             # pdftk burst
qpdf --rotate=+90:1 in.pdf out.pdf                # pdftk rotate
qpdf --json in.pdf                                # pdftk dump_data
qpdf --password=secret --decrypt in.pdf out.pdf
qpdf --linearize in.pdf web.pdf
qpdf --check in.pdf

For text extraction use pdftotext from @ai-ecoverse/wasm-poppler.

Built with qpdf's native crypto provider (no OpenSSL or GnuTLS), and with zlib and libjpeg-turbo from homescoop.

12.4.2-6: fix-qdf is a helper; no pkg-config at configure (homescoop#1354; 2026-10-20)

fix-qdf has "helper": true in slicc.commands, as the KC ruled. It still runs as before; listings that hide helpers leave it out. The description is now one plain sentence. The build configures with no pkg-config, so a zlib port in the emsdk cache can't replace @ai-ecoverse/wasm-zlib. The bytes are the same.

qpdf.wasm can still come out in one of two 14-byte variants. That comes from emsdk 4.0.23's LLVM: its WebAssembly CFG Stackify pass iterates a pointer-keyed map, and the nesting of one try/delegate pair varies. Both variants behave the same. The fix arrives with an emsdk at or after 6.0.2 (llvm-project#205184). See cert/NEGATIVE.md.

12.4.2-8: checked for reproducible builds (homescoop#1354, #808, #918; 2026-10-22)

homescoop's CI now builds qpdf twice and compares the two packages. The build stops unless qpdf, fix-qdf and zlib-flate link the zlib and libjpeg-turbo from homescoop, with no pkg-config module. New cert specs cover pages copied between files (cert/foreign.mjs) and the package's command list (cert/manifest.mjs). The tools behave as in 12.4.2-7.

12.4.2-9: reproducible qpdf.wasm (homescoop#1354; 2026-10-23)

qpdf now builds with the patched Emscripten 6.0.9 tree (scripts/emscripten-tree.sh, the toolchain cmake, wasm-binaryen and wasm-clang use) instead of emsdk 4.0.23. emsdk 4.0.23's LLVM nested one try/delegate pair in qpdf.wasm by heap address, so two builds of the same inputs could differ by 14 bytes. emsdk 6.0.9's LLVM has the fix (llvm-project fd76c9bdf103, in emsdk 6.0.2 and later), and every build now gives the same bytes. The tools behave as in 12.4.2-8: the same qpdf, the same zlib and libjpeg-turbo, the same slicc shims, and still Wasm exceptions in their legacy encoding. The Emscripten runtime in the glue is now 6.0.9, with the 4.0.23 build's FS.lookupPath symlink fix (wasm-emscripten's 0014-libfs-symloop.patch) applied on top.

12.4.2-10: licence notices (homescoop#1750; 2026-10-23)

The package now ships qpdf's NOTICE.md, which 12.4.2-8 and 12.4.2-9 left out. It credits the SHA-2 code qpdf includes from sphlib 3.0 (Projet RNRT SAPHIR, MIT licence) and the public-domain Rijndael code. THIRD-PARTY-NOTICES.md now also carries the sphlib notice from libqpdf/sha2.c and the RSA Data Security MD5 notice from libqpdf/MD5_native.cc. The tools are unchanged.