Fix typescript definitions

This commit is contained in:
Kenny Daniel 2024-04-26 12:52:42 -07:00
parent c893000ec2
commit 09ea11517c
No known key found for this signature in database
GPG Key ID: 90AB653A8CAD7E45
9 changed files with 20 additions and 13 deletions

@ -6,6 +6,7 @@
[![workflow status](https://github.com/hyparam/hyparquet/actions/workflows/ci.yml/badge.svg)](https://github.com/hyparam/hyparquet/actions)
[![mit license](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)
[![dependencies](https://img.shields.io/badge/Dependencies-0-blueviolet)](https://www.npmjs.com/package/hyparquet?activeTab=dependencies)
![coverage](https://img.shields.io/badge/Coverage-94-darkred)
Dependency free since 2023!

@ -28,14 +28,14 @@
},
"devDependencies": {
"@types/node": "20.12.7",
"@typescript-eslint/eslint-plugin": "7.7.0",
"@vitest/coverage-v8": "1.5.0",
"@typescript-eslint/eslint-plugin": "7.7.1",
"@vitest/coverage-v8": "1.5.2",
"eslint": "8.57.0",
"eslint-plugin-import": "2.29.1",
"eslint-plugin-jsdoc": "48.2.3",
"http-server": "14.1.1",
"hysnappy": "0.3.0",
"typescript": "5.4.5",
"vitest": "1.5.0"
"vitest": "1.5.2"
}
}

8
src/hyparquet.d.ts vendored

@ -1,4 +1,6 @@
export { AsyncBuffer, FileMetaData, SchemaTree } from './types'
import type { AsyncBuffer, Compressors, FileMetaData, SchemaTree } from './types.d.ts'
export type { AsyncBuffer, FileMetaData, SchemaTree }
/**
* Read parquet data rows from a file-like object.
@ -22,7 +24,7 @@ export { AsyncBuffer, FileMetaData, SchemaTree } from './types'
* @param {Compressors} [options.compressor] custom decompressors
* @returns {Promise<void>} resolves when all requested rows and columns are parsed
*/
export async function parquetRead(options: ParquetReadOptions): Promise<void>
export function parquetRead(options: ParquetReadOptions): Promise<void>
/**
* Read parquet metadata from an async buffer.
@ -48,7 +50,7 @@ export async function parquetRead(options: ParquetReadOptions): Promise<void>
* @param {number} initialFetchSize initial fetch size in bytes (default 512kb)
* @returns {Promise<FileMetaData>} parquet metadata object
*/
export async function parquetMetadataAsync(asyncBuffer: AsyncBuffer, initialFetchSize: number = 1 << 19 /* 512kb */): Promise<FileMetaData>
export function parquetMetadataAsync(asyncBuffer: AsyncBuffer, initialFetchSize?: number): Promise<FileMetaData>
/**
* Read parquet metadata from a buffer

@ -137,13 +137,15 @@ async function readRowGroup(options, rowGroup, groupStart) {
}
// use pre-loaded row group byte data if available, else read column data
/** @type {Promise<ArrayBuffer>} */
let buffer
let bufferOffset = 0
if (groupBuffer) {
buffer = Promise.resolve(groupBuffer)
bufferOffset = columnStartByte - groupStartByte
} else {
buffer = file.slice(columnStartByte, columnEndByte)
// wrap awaitable to ensure it's a promise
buffer = Promise.resolve(file.slice(columnStartByte, columnEndByte))
}
// read column data async

4
src/types.d.ts vendored

@ -1,9 +1,11 @@
type Awaitable<T> = T | Promise<T>
/**
* File-like object that can read slices of a file asynchronously.
*/
export interface AsyncBuffer {
byteLength: number
slice(start: number, end?: number): Promise<ArrayBuffer>
slice(start: number, end?: number): Awaitable<ArrayBuffer>
}
/**

@ -3,5 +3,3 @@
This directory contains binary test files from [apache/parquet-testing](https://github.com/apache/parquet-testing), under the [Apache 2.0 license](https://www.apache.org/licenses/LICENSE-2.0).
Copyright 2004 The Apache Software Foundation (http://www.apache.org/).

@ -63,6 +63,7 @@ describe('parquetMetadataAsync', () => {
it('throws for asyncBuffer undefined', async () => {
const arrayBuffer = undefined
// @ts-expect-error testing invalid input
await expect(parquetMetadataAsync(arrayBuffer)).rejects
.toThrow('parquet file is required')
})

@ -5,13 +5,14 @@ import { fileToAsyncBuffer } from './helpers.js'
describe('parquetRead', () => {
it('throws error for undefined file', async () => {
const file = undefined
await expect(parquetRead({ file }))
// @ts-expect-error testing invalid input
await expect(parquetRead({ file: undefined }))
.rejects.toThrow('parquet file is required')
})
it('throws error for undefined byteLength', async () => {
const file = { byteLength: undefined, slice: () => new ArrayBuffer(0) }
// @ts-expect-error testing invalid input
await expect(parquetRead({ file }))
.rejects.toThrow('parquet file byteLength is required')
})

@ -6,7 +6,7 @@
"module": "nodenext",
"noEmit": true,
"resolveJsonModule": true,
"skipLibCheck": true,
"skipLibCheck": false,
"strict": true,
"target": "esnext",
},