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

nirs4all

v0.3.30

Published

Portable nirs4all aggregate binding for JavaScript and WASM

Readme

JavaScript/WASM Binding

npm package name: nirs4all

The canonical source repository is nirs4all-core; the npm publication uses the bare nirs4all name as the JavaScript/WASM aggregate surface. Python alone uses the nirs4all-core distribution name to avoid colliding with the full modelling library.

This package is the runtime surface that nirs4all-web should consume. The web application lives in nirs4all-web; this directory is for the reusable JavaScript/WASM binding and package metadata.

The portable execution API delegates Kennard-Stone, SNV, Savitzky-Golay, and PLS component sweeps to @nirs4all/methods:

  • runPortablePipeline(source, dataset) parses the shared nirs4all JSON/YAML syntax, executes the portable subset, and returns parity-checkable split, target, variant, and selected-result fields plus a serialized selected PLS model.
  • predictPortablePipeline(result, dataset) replays the recorded preprocessing chain and predicts with that serialized model through the same methods WASM backend.
  • replayMethodsArchiveV2(archiveBytes, dataset) validates the bounded Archive V2 stored-ZIP, manifest, inventory digests, DAG-ML package, execution bundle, and N4MM binding in Rust, then imports and predicts the single multi-target model through the public @nirs4all/methods C ABI. The native file reader and WASM byte reader compile the same Core-owned archive_v2.rs validation source; there is no second binding-owned archive parser. The JavaScript layer only validates host arrays and handles marshalling/ownership; it contains no numerical fallback and never fits a replacement model. Before import it also compares the manifest's capability-derived abi_min_minor with the actual Methods WASM abiVersion() and refuses an older runtime.

The Archive V2 WASM replay intentionally covers the Phase 2 portable Methods PLS final-refit contract only. N4MM v2 preprocessing stays embedded in Methods and therefore receives the raw matrix without a JavaScript kernel. Archives with multiple predictor nodes, optimization checkpoints, conformal/robustness payloads, external or host-only artifacts, undeclared inventory members, incompatible N4MM metadata, or non-Methods dispatch are refused rather than silently approximated.

Build the Rust validator with npm run build:native. A qualification archive and closed scenario can be replayed with:

npm run qualify:archive-v2 -- /path/to/archive.n4a /path/to/scenario.json

The qualification command asserts the ordered two-dimensional result from one model import and one multi-target prediction, checks that no Methods fit symbol was called, and proves tampered-digest and inventory refusals. The isolated tarball gate separately proves refusal when the optional Methods peer is absent.

Savitzky-Golay defaults to mode: "interp" for full nirs4all parity and preserves explicit methods-backed modes (mirror, constant, nearest, wrap, interp) plus cval in the serialized preprocessing chain.

Custom app hosts can inspect capabilityManifest(), controllerCapabilities, runtimeSurfaces, and runtimeContracts before rendering graph nodes or selecting a runtime. The manifest schema is nirs4all-core.capabilities.v1; it exposes the stable V1 controller IDs for Kennard-Stone, SNV, Savitzky-Golay, PLS regression, and the portable methods pipeline, with parameter lists matching the executable parser. runtimeContracts also makes explicit that standalone serialized-model prediction is currently a WASM-only contract.

For a browser-only custom host, pair this package with nirs4all-ui: keep runtime loading and portable execution in nirs4all, and consume shared React components / view-model helpers / brand assets from nirs4all-ui. The reference composition lives in the nirs4all-web browser app, whose contract tests exercise runPortablePipeline() / predictPortablePipeline() together with the shared UI package in a no-backend environment.