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.