Update README with Awaitable

This commit is contained in:
Kenny Daniel 2024-12-21 15:28:24 -08:00
parent c9727a4246
commit 870187c7de
No known key found for this signature in database
GPG Key ID: 90AB653A8CAD7E45
4 changed files with 9 additions and 6 deletions

@ -95,12 +95,14 @@ const metadata = parquetMetadata(arrayBuffer)
### AsyncBuffer
Hyparquet accepts argument `file` of type `AsyncBuffer` which is like a js `ArrayBuffer` but the `slice` method returns `Promise<ArrayBuffer>`.
Hyparquet accepts argument `file` of type `AsyncBuffer` which is like a js `ArrayBuffer` but the `slice` method can return `Promise<ArrayBuffer>`.
You can pass an `ArrayBuffer` anywhere that an `AsyncBuffer` is expected, if you have the entire file in memory.
```typescript
type Awaitable<T> = T | Promise<T>
interface AsyncBuffer {
byteLength: number
slice(start: number, end?: number): Promise<ArrayBuffer>
slice(start: number, end?: number): Awaitable<ArrayBuffer>
}
```

Binary file not shown.

Before

Width:  |  Height:  |  Size: 71 KiB

After

Width:  |  Height:  |  Size: 82 KiB

Binary file not shown.

@ -166,7 +166,8 @@ describe('asyncBufferFromUrl', () => {
})
})
expect(asyncBufferFromUrl({ url: 'https://example.com' })).rejects.toThrow('fetch head failed 401')
await expect(asyncBufferFromUrl({ url: 'https://example.com' }))
.rejects.toThrow('fetch head failed 401')
const buffer = await asyncBufferFromUrl({ url: 'https://example.com', requestInit: { headers: { Authorization: 'Bearer token' } } } )
expect(buffer.byteLength).toBe(1024)
@ -195,11 +196,11 @@ describe('asyncBufferFromUrl', () => {
})
const noHeaders = await asyncBufferFromUrl({ url: 'https://example.com', byteLength: 1024 })
expect(noHeaders.slice(0, 100)).rejects.toThrow('fetch failed 401')
await expect(noHeaders.slice(0, 100)).rejects.toThrow('fetch failed 401')
const withHeaders = await asyncBufferFromUrl({ url: 'https://example.com', byteLength: 1024, requestInit: { headers: { Authorization: 'Bearer token' } } } )
expect (await withHeaders.slice(0, 100)).toBe(mockArrayBuffer)
await expect(withHeaders.slice(0, 100)).resolves.toBe(mockArrayBuffer)
expect (withHeaders.slice(0, 10)).rejects.toThrow('fetch failed 404')
await expect(withHeaders.slice(0, 10)).rejects.toThrow('fetch failed 404')
})
})