Skip to content

Commit 3cb159a

Browse files
committed
fix types
1 parent ae9521c commit 3cb159a

File tree

4 files changed

+23
-20
lines changed

4 files changed

+23
-20
lines changed

packages/utils/src/dataframe.ts

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,12 @@ type WrappedPromise<T> = Promise<T> & {
88
* The promise must be wrapped with `wrapPromise` so that HighTable can render
99
* the state synchronously.
1010
*/
11-
export type AsyncRow = Record<string, WrappedPromise<any>>
11+
export type AsyncRow = Record<string, WrappedPromise<unknown>>
1212

1313
/**
1414
* A row where each cell is a resolved value.
1515
*/
16-
export type Row = Record<string, any>
16+
export type Row = Record<string, unknown>
1717

1818
/**
1919
* Streamable row data
@@ -26,8 +26,8 @@ export interface DataFrame {
2626
sortable?: boolean
2727
}
2828

29-
export function resolvableRow(header: string[]): { [key: string]: ResolvablePromise<any> } {
30-
return Object.fromEntries(header.map(key => [key, resolvablePromise<any>()]))
29+
export function resolvableRow(header: string[]): Record<string, ResolvablePromise<unknown>> {
30+
return Object.fromEntries(header.map(key => [key, resolvablePromise<unknown>()]))
3131
}
3232

3333
/**
@@ -38,7 +38,7 @@ export function resolvableRow(header: string[]): { [key: string]: ResolvableProm
3838
export function asyncRows(rows: AsyncRow[] | Promise<Row[]>, numRows: number, header: string[]): AsyncRow[] {
3939
if (Array.isArray(rows)) return rows
4040
// Make grid of resolvable promises
41-
const wrapped = new Array(numRows).fill(null).map(_ => resolvableRow(header))
41+
const wrapped = new Array(numRows).fill(null).map(() => resolvableRow(header))
4242
rows.then(rows => {
4343
if (rows.length !== numRows) {
4444
console.warn(`Expected ${numRows} rows, got ${rows.length}`)
@@ -49,11 +49,12 @@ export function asyncRows(rows: AsyncRow[] | Promise<Row[]>, numRows: number, he
4949
wrapped[i][key].resolve(row[key])
5050
}
5151
}
52-
}).catch(error => {
52+
}).catch((error: unknown) => {
53+
const rejected = error instanceof Error ? error : new Error(String(error))
5354
// Reject all promises on error
5455
for (let i = 0; i < numRows; i++) {
5556
for (const key of header) {
56-
wrapped[i][key].reject(error)
57+
wrapped[i][key].reject(rejected)
5758
}
5859
}
5960
})
@@ -71,9 +72,9 @@ export function wrapPromise<T>(promise: Promise<T> | T): WrappedPromise<T> {
7172
const wrapped: WrappedPromise<T> = promise.then(resolved => {
7273
wrapped.resolved = resolved
7374
return resolved
74-
}).catch(rejected => {
75-
wrapped.rejected = rejected
76-
throw rejected
75+
}).catch((error: unknown) => {
76+
wrapped.rejected = error instanceof Error ? error : new Error(String(error))
77+
throw error
7778
})
7879
return wrapped
7980
}
@@ -105,7 +106,7 @@ export function resolvablePromise<T>(): ResolvablePromise<T> {
105106
export function sortableDataFrame(data: DataFrame): DataFrame {
106107
if (data.sortable) return data // already sortable
107108
// Fetch all rows and add __index__ column
108-
let all: Promise<Row[]>
109+
let all: Promise<Row[]> | undefined
109110
return {
110111
...data,
111112
rows(start: number, end: number, orderBy?: string): AsyncRow[] | Promise<Row[]> {

packages/utils/src/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,5 +5,5 @@ export type { FileKey, FolderKey, ParsedKey, UrlKey } from './key.js'
55
export { parquetDataFrame } from './tableProvider.js'
66
export { asyncBufferFrom, cn } from './utils.js'
77
export { parquetQueryWorker } from './workers/parquetWorkerClient.js'
8-
export type { AsyncBufferFrom, Row } from './workers/types.js'
8+
export type { AsyncBufferFrom } from './workers/types.js'
99

packages/utils/src/workers/types.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { ColumnData, FileMetaData, ParquetReadOptions } from 'hyparquet'
2+
import type { Row } from '../dataframe.js'
23

34
// Serializable constructors for AsyncBuffers
45
interface AsyncBufferFromFile {
@@ -17,8 +18,6 @@ export interface ParquetReadWorkerOptions extends Omit<ParquetReadOptions, 'file
1718
orderBy?: string
1819
sortIndex?: boolean
1920
}
20-
// Row is defined in hightable, but not exported + we change any to unknown
21-
export type Row = Record<string, unknown> ;
2221

2322
interface Message {
2423
queryId: number

packages/utils/test/dataframe.test.ts

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
import { describe, expect, it } from 'vitest'
22
import {
3-
DataFrame, Row, arrayDataFrame, awaitRows, resolvablePromise, sortableDataFrame, wrapPromise,
3+
AsyncRow,
4+
DataFrame,
5+
arrayDataFrame, awaitRows, resolvablePromise, sortableDataFrame, wrapPromise,
46
} from '../src/dataframe.js'
57

6-
function wrapObject(obj: Record<string, any>): Row {
8+
function wrapObject(obj: Record<string, unknown>): AsyncRow {
79
return Object.fromEntries(
8-
Object.entries(obj).map(([key, value]) => [key, wrapPromise(value)])
10+
Object.entries(obj).map(([key, value]) => [key, wrapPromise(value)]),
911
)
1012
}
1113

@@ -41,7 +43,7 @@ describe('sortableDataFrame', () => {
4143
const dataFrame: DataFrame = {
4244
header: ['id', 'name', 'age'],
4345
numRows: data.length,
44-
rows(start: number, end: number): Row[] {
46+
rows(start: number, end: number): AsyncRow[] {
4547
// Return the slice of data between start and end indices
4648
return data.slice(start, end).map(wrapObject)
4749
},
@@ -110,11 +112,12 @@ describe('arrayDataFrame', () => {
110112
expect(df.numRows).toBe(3)
111113
})
112114

113-
it('should handle empty data array', () => {
115+
it('should handle empty data array', async () => {
114116
const df = arrayDataFrame([])
115117
expect(df.header).toEqual([])
116118
expect(df.numRows).toBe(0)
117-
expect(df.rows(0, 1)).resolves.toEqual([])
119+
const rows = await df.rows(0, 1)
120+
expect(rows).toEqual([])
118121
})
119122

120123
it('should return correct rows for given range', async () => {

0 commit comments

Comments
 (0)