@@ -9,7 +9,7 @@ import * as parquet_types from './types';
9
9
import BufferReader , { BufferReaderOptions } from './bufferReader' ;
10
10
import * as bloomFilterReader from './bloomFilterIO/bloomFilterReader' ;
11
11
import fetch from 'cross-fetch' ;
12
- import { ParquetCodec , Parameter , PageData , SchemaDefinition , ParquetType , FieldDefinition , ParquetField , ClientS3 , ClientParameters , FileMetaDataExt , NewPageHeader , RowGroupExt , ColumnChunkExt } from './types/types ' ;
12
+ import { ParquetCodec , Parameter , PageData , SchemaDefinition , ParquetType , FieldDefinition , ParquetField , ClientS3 , ClientParameters , FileMetaDataExt , NewPageHeader , RowGroupExt , ColumnChunkExt } from './declare ' ;
13
13
import { Cursor , Options } from './codec/types' ;
14
14
15
15
const {
@@ -111,12 +111,12 @@ export class ParquetReader {
111
111
* Open the parquet file pointed to by the specified path and return a new
112
112
* parquet reader
113
113
*/
114
- static async openFile ( filePath : string | Buffer | URL , options : BufferReaderOptions ) {
114
+ static async openFile ( filePath : string | Buffer | URL , options ? : BufferReaderOptions ) {
115
115
let envelopeReader = await ParquetEnvelopeReader . openFile ( filePath , options ) ;
116
116
return this . openEnvelopeReader ( envelopeReader , options ) ;
117
117
}
118
118
119
- static async openBuffer ( buffer : Buffer , options : BufferReaderOptions ) {
119
+ static async openBuffer ( buffer : Buffer , options ? : BufferReaderOptions ) {
120
120
let envelopeReader = await ParquetEnvelopeReader . openBuffer ( buffer , options ) ;
121
121
return this . openEnvelopeReader ( envelopeReader , options ) ;
122
122
}
@@ -126,7 +126,7 @@ export class ParquetReader {
126
126
* The params have to include `Bucket` and `Key` to the file requested
127
127
* This function returns a new parquet reader
128
128
*/
129
- static async openS3 ( client : ClientS3 , params : ClientParameters , options : BufferReaderOptions ) {
129
+ static async openS3 ( client : ClientS3 , params : ClientParameters , options ? : BufferReaderOptions ) {
130
130
let envelopeReader = await ParquetEnvelopeReader . openS3 ( client , params , options ) ;
131
131
return this . openEnvelopeReader ( envelopeReader , options ) ;
132
132
}
@@ -137,13 +137,13 @@ export class ParquetReader {
137
137
* a `url` property.
138
138
* This function returns a new parquet reader
139
139
*/
140
- static async openUrl ( params : Parameter , options : BufferReaderOptions ) {
140
+ static async openUrl ( params : Parameter | URL | string , options ? : BufferReaderOptions ) {
141
141
let envelopeReader = await ParquetEnvelopeReader . openUrl ( params , options ) ;
142
142
return this . openEnvelopeReader ( envelopeReader , options ) ;
143
143
}
144
144
145
- static async openEnvelopeReader ( envelopeReader : ParquetEnvelopeReader , opts : BufferReaderOptions ) {
146
- if ( opts && opts . metadata ) {
145
+ static async openEnvelopeReader ( envelopeReader : ParquetEnvelopeReader , opts ? : BufferReaderOptions ) {
146
+ if ( opts ? .metadata ) {
147
147
return new ParquetReader ( opts . metadata , envelopeReader , opts ) ;
148
148
}
149
149
try {
@@ -164,7 +164,7 @@ export class ParquetReader {
164
164
* and internal use cases. Consider using one of the open{File,Buffer} methods
165
165
* instead
166
166
*/
167
- constructor ( metadata : FileMetaDataExt , envelopeReader : ParquetEnvelopeReader , opts : BufferReaderOptions ) {
167
+ constructor ( metadata : FileMetaDataExt , envelopeReader : ParquetEnvelopeReader , opts ? : BufferReaderOptions ) {
168
168
opts = opts || { } ;
169
169
if ( metadata . version != PARQUET_VERSION ) {
170
170
throw 'invalid parquet version' ;
@@ -266,7 +266,7 @@ export class ParquetReader {
266
266
267
267
async getBloomFiltersFor ( columnNames : string [ ] ) {
268
268
const bloomFilterData = await getBloomFiltersFor ( columnNames , this . envelopeReader ! ) ;
269
- return bloomFilterData . reduce ( ( acc : Record < string , Array < unknown > > , value ) => {
269
+ return bloomFilterData . reduce ( ( acc : Record < string , typeof bloomFilterData > , value ) => {
270
270
if ( acc [ value . columnName ] ) acc [ value . columnName ] . push ( value )
271
271
else acc [ value . columnName ] = [ value ]
272
272
return acc ;
@@ -384,7 +384,7 @@ export class ParquetEnvelopeReader {
384
384
metadata ?: FileMetaDataExt ;
385
385
schema ?: parquet_schema . ParquetSchema
386
386
387
- static async openFile ( filePath : string | Buffer | URL , options : BufferReaderOptions ) {
387
+ static async openFile ( filePath : string | Buffer | URL , options ? : BufferReaderOptions ) {
388
388
let fileStat = await parquet_util . fstat ( filePath ) ;
389
389
let fileDescriptor = await parquet_util . fopen ( filePath ) ;
390
390
@@ -401,7 +401,7 @@ export class ParquetEnvelopeReader {
401
401
return new ParquetEnvelopeReader ( readFn , closeFn , fileStat . size , options ) ;
402
402
}
403
403
404
- static async openBuffer ( buffer : Buffer , options : BufferReaderOptions ) {
404
+ static async openBuffer ( buffer : Buffer , options ? : BufferReaderOptions ) {
405
405
let readFn = ( offset : number , length : number , file ?: string ) => {
406
406
if ( file ) {
407
407
return Promise . reject ( 'external references are not supported' ) ;
@@ -414,7 +414,7 @@ export class ParquetEnvelopeReader {
414
414
return new ParquetEnvelopeReader ( readFn , closeFn , buffer . length , options ) ;
415
415
}
416
416
417
- static async openS3 ( client : ClientS3 , params : ClientParameters , options : BufferReaderOptions ) {
417
+ static async openS3 ( client : ClientS3 , params : ClientParameters , options ? : BufferReaderOptions ) {
418
418
let fileStat = async ( ) => client . headObject ( params ) . promise ( ) . then ( ( d : { ContentLength : number } ) => d . ContentLength ) ;
419
419
420
420
let readFn = async ( offset : number , length : number , file ?: string ) => {
@@ -432,9 +432,12 @@ export class ParquetEnvelopeReader {
432
432
return new ParquetEnvelopeReader ( readFn , closeFn , fileStat , options ) ;
433
433
}
434
434
435
- static async openUrl ( params : Parameter , options : BufferReaderOptions ) {
436
- if ( typeof params === 'string' )
437
- params = { url : params } ;
435
+ static async openUrl ( url : Parameter | URL | string , options ?: BufferReaderOptions ) {
436
+ let params : Parameter ;
437
+ if ( typeof url === 'string' ) params = { url } ;
438
+ else if ( url instanceof URL ) params = { url : url . toString ( ) }
439
+ else params = url ;
440
+
438
441
if ( ! params . url )
439
442
throw new Error ( 'URL missing' ) ;
440
443
@@ -465,7 +468,7 @@ export class ParquetEnvelopeReader {
465
468
return new ParquetEnvelopeReader ( readFn , closeFn , filesize , options ) ;
466
469
}
467
470
468
- constructor ( readFn : ( offset : number , length : number , file ?: string ) => Promise < Buffer > , closeFn : ( ) => unknown , fileSize : Function | number , options : BufferReaderOptions , metadata ?: FileMetaDataExt ) {
471
+ constructor ( readFn : ( offset : number , length : number , file ?: string ) => Promise < Buffer > , closeFn : ( ) => unknown , fileSize : Function | number , options ? : BufferReaderOptions , metadata ?: FileMetaDataExt ) {
469
472
options = options || { } ;
470
473
this . readFn = readFn ;
471
474
this . id = ++ ParquetEnvelopeReaderIdCounter ;
0 commit comments