diff --git a/README.md b/README.md index e8ba87c..28b9ba1 100644 --- a/README.md +++ b/README.md @@ -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`. +Hyparquet accepts argument `file` of type `AsyncBuffer` which is like a js `ArrayBuffer` but the `slice` method can return `Promise`. +You can pass an `ArrayBuffer` anywhere that an `AsyncBuffer` is expected, if you have the entire file in memory. ```typescript +type Awaitable = T | Promise interface AsyncBuffer { byteLength: number - slice(start: number, end?: number): Promise + slice(start: number, end?: number): Awaitable } ``` diff --git a/hyparquet.jpg b/hyparquet.jpg index 0108cec..1adf3ce 100644 Binary files a/hyparquet.jpg and b/hyparquet.jpg differ diff --git a/test/files/hyparquet.jpg.snappy b/test/files/hyparquet.jpg.snappy index 2dd4148..9f765cf 100644 Binary files a/test/files/hyparquet.jpg.snappy and b/test/files/hyparquet.jpg.snappy differ diff --git a/test/utils.test.js b/test/utils.test.js index 97a3cbc..6a40764 100644 --- a/test/utils.test.js +++ b/test/utils.test.js @@ -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') }) })