@nirs4all/formats-wasm

中文文档
0.2.14发布于 2026/11/02CECILL-2.1 OR AGPL-3.0-or-laterTypeScriptCommonJS零依赖构建来源已验证

用于nirs4all格式的WebAssembly绑定。

中文使用文档
文档目录5 节
  1. 构建
  2. 表面
  3. 双轮马车的格式
  4. 范围和特性标志
  5. 冒烟测试

nirs4all-formats (WebAssembly / JS)

的浏览器和节点友好桥接 nirs4all-formats 锈病核心。它运行 格式嗅探器 和 解码器完全在WebAssembly中,从内存中 字节-不需要文件系统。

构建

# Browser (ES modules)
wasm-pack build bindings/wasm --target web --release
# Node.js / Bun
wasm-pack build bindings/wasm --target nodejs --release --out-dir pkg-node

这会释放JS胶水, .wasm binary和TypeScript类型 pkg/ (或 pkg-node/). 标记版本将该表面发布为 @nirs4all/formats-wasm npm。

表面

import init, {
  version, features, readerCatalog, probeBytes, openBytes, openWithSidecars,
} from "./pkg/nirs4all_formats_wasm.js";

await init();

version();   // "0.1.0-alpha.1"
features();  // { hdf5: true, matlab: true, parquet: true }
readerCatalog(); // [{ reader: "nirs4all_formats::readers::jcamp" }, ...]

const bytes = new Uint8Array(await file.arrayBuffer());

// Sniff: ordered candidate readers, best first
probeBytes(file.name, bytes);
// [{ format: "jcamp-dx", reader: "...", confidence: "definite", reason: "..." }]

// Decode: SpectralRecord[] (same JSON shape as `nirs4all-formats read-json`)
const records = openBytes(file.name, bytes);

openBytes / probeBytes 拿起文件 名字 (几嗅探器 通过扩展名(加上字节)消除歧义。返回的记录与 数据模型: signals, signal_type, targets, metadata, provenance, quality_flags.

双轮马车的格式

多文件格式(ENVI标准) .img+.hdr病毒/流感病毒/流感病毒 FGI XML+HDF5, NetCDF MFRSR)返回和 UnsupportedSidecar 错误的 openBytes. 提供同伴作为一个 { name: Uint8Array } 地图:

const records = openWithSidecars("cube.img", imgBytes, { "cube.hdr": hdrBytes });

范围和特性标志

默认的WASM构建会编译 fmt-hdf5, fmt-matlab, fmt-parquet 在. HDF5/ netcf支持的读卡器,MATLAB MAT/RData读卡器,和拼花桌 阅读器可以在浏览器中使用,包括snappy、未压缩和 压缩的拼花页面。呼叫 features() 查看活动包 运行时。

冒烟测试

node bindings/wasm/tests/smoke.js
node bindings/wasm/tests/sidecars.test.js
node bindings/wasm/tests/fixture_matrix.js

smoke.js 加载提交的fixture (CSV, JCAMP-DX, ASD二进制文件,非数据PDF) 并将每个探测路由断言到预期的阅读器; sidecars.test.js 练习 openWithSidecars. fixture_matrix.js 打开更广泛的已提交文件集 单文件和挎斗夹具通过WASM包,检查预期 非近红外/拒绝路径,并将练习的读者与 readerCatalog(). 提交矩阵涵盖了除 同素异形体ADF,其样本仅限本地/不可再分配;看到 samples/allotrope_adf/README.md.

版本与发布记录

@nirs4all/formats-wasm 共发布 16 个版本,首次发布于 2026/06/12;过去 12 个月发布了 16 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.2.14latest2026/11/021 天前
0.2.132026/10/294 天前
0.2.122026/10/285 天前
0.2.112026/10/0529 天前
0.2.102026/09/171 个月前
0.2.92026/09/031 个月前

关于 @nirs4all/formats-wasm 的常见问题

@nirs4all/formats-wasm 是什么?

用于nirs4all格式的WebAssembly绑定。

如何安装 @nirs4all/formats-wasm?

在项目目录运行 npm install @nirs4all/formats-wasm,或使用 pnpm add / yarn add / bun add。

@nirs4all/formats-wasm 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@nirs4all/formats-wasm 支持 ESM 还是 CommonJS?

以 CommonJS 形式发布,可以直接 require();在 ES Module 项目中也可以用 import 引入(Node.js 会把 module.exports 作为默认导出)。

@nirs4all/formats-wasm 可以商用吗?

@nirs4all/formats-wasm 使用 CECILL-2.1 OR AGPL-3.0-or-later 许可。可在 CECILL-2.1、AGPL-3.0 中任选其一遵守。以上为概括,不构成法律意见,请以许可原文为准。

@nirs4all/formats-wasm 还在维护吗?

最新版本 0.2.14 发布于 2026/11/02(1 天前);至今共发布 16 个版本,其中过去 12 个月发布了 16 个;首次发布于 2026/06/12。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。