UNPKG

modern-netcdf

Version:
39 lines (36 loc) 1.2 kB
// Browser WebWorker implementation for Modern NetCDF // This file uses ES-module syntax so bundlers can tree-shake it away for Node builds. import { NetCDFReader } from '..'; let reader = null; self.onmessage = async (e) => { const { id, cmd, payload } = e.data; try { switch (cmd) { case 'open': { const { source, options } = payload; reader = await NetCDFReader.open(source, options); self.postMessage({ id, result: 'ok' }); break; } case 'getData': { if (!reader) throw new Error('Reader not open'); const { variable, slice } = payload; const data = await reader.getData(variable, slice); // Transfer, not copy, the underlying ArrayBuffer when possible. const transfer = ArrayBuffer.isView(data) ? [data.buffer] : []; self.postMessage({ id, result: data }, transfer); break; } case 'close': { if (reader) reader.close(); reader = null; self.postMessage({ id, result: 'closed' }); break; } default: throw new Error('Unknown command'); } } catch (err) { self.postMessage({ id, error: err.message }); } };