UNPKG

licelfile

Version:

A Bun package for reading licel files (from lidar transient recorder)

53 lines (52 loc) 2.11 kB
import { loadLicelFileFromArrayBuffer, loadLicelFile } from "./licelfile"; import {} from "./licelTypes"; import { ZipReader, BlobReader, TextWriter, Uint8ArrayWriter } from '@zip.js/zip.js'; /** * Загружает пакет Licel из файлов. * @param filePaths - Массив путей к файлам. * @returns Объект ILicelPack, содержащий время начала измерения и данные измерения. */ export async function loadLicelPack(filePaths) { const data = new Map(); let startTime = null; for (const path of filePaths) { const licelFile = await loadLicelFile(path); data.set(path, licelFile); if (!startTime || licelFile.measurementStartTime < startTime) { startTime = licelFile.measurementStartTime; } } return { startTime: startTime, data: data, }; } /** * Загружает пакет Licel из zip-файла. * @param zipFile - Путь к zip-файлу. * @returns Объект ILicelPack, содержащий время начала измерения и данные измерения. */ export async function loadLicelPackFromZip(zipFile) { const zipBlob = new Blob([await Bun.file(zipFile).arrayBuffer()]); const zipReader = new ZipReader(new BlobReader(zipBlob)); const entries = await zipReader.getEntries(); const data = new Map(); let startTime = null; for (const entry of entries) { if (!entry.filename.startsWith("b")) continue; const writer = new Uint8ArrayWriter(); const buffer = await entry.getData(writer); const arrayBuffer = buffer.buffer.slice(buffer.byteOffset, buffer.byteOffset + buffer.byteLength); const licelFile = await loadLicelFileFromArrayBuffer(arrayBuffer); data.set(entry.filename, licelFile); if (!startTime || licelFile.measurementStartTime < startTime) { startTime = licelFile.measurementStartTime; } } await zipReader.close(); return { startTime: startTime, data: data, }; }