@severo_tests/hyparquet
Version:
Parquet file parser for JavaScript
34 lines (31 loc) • 927 B
JavaScript
import { createReadStream, promises as fs } from 'fs'
export * from './index.js'
/**
* @import {AsyncBuffer} from '../src/types.js'
*/
/**
* Construct an AsyncBuffer for a local file using node fs package.
*
* @param {string} filename
* @returns {Promise<AsyncBuffer>}
*/
export async function asyncBufferFromFile(filename) {
const { size } = await fs.stat(filename)
return {
byteLength: size,
slice(start, end) {
// read file slice
const reader = createReadStream(filename, { start, end })
return new Promise((resolve, reject) => {
/** @type {any[]} */
const chunks = []
reader.on('data', chunk => chunks.push(chunk))
reader.on('error', reject)
reader.on('end', () => {
const buffer = Buffer.concat(chunks)
resolve(buffer.buffer.slice(buffer.byteOffset, buffer.byteOffset + buffer.byteLength))
})
})
},
}
}