/** * @typedef {[number, number, number, number]} Bbox * [minx, miny, maxx, maxy] in WGS84. */ /** * Reads GeoParquet bbox metadata using hyparquet over HTTP range requests. * This is a drop-in alternative to ParquetBboxReader for environments where * reading footer metadata directly is preferable to querying DuckDB metadata tables. * For row groups it prefers GeoParquet 1.1 covering-column statistics and only * falls back to geospatial statistics when they are available. */ export class HyparquetBboxReader { /** * @param {{ * batchSize?: number, * fetch?: typeof globalThis.fetch, * requestInit?: RequestInit, * initialFetchSize?: number, * metadataLoader?: (url: string) => Promise * }} [options] */ constructor(options?: { batchSize?: number; fetch?: typeof globalThis.fetch; requestInit?: RequestInit; initialFetchSize?: number; metadataLoader?: (url: string) => Promise; }); _batchSize: number; _fetch: typeof fetch; _requestInit: RequestInit; _initialFetchSize: number; _metadataLoader: any; /** @type {Map>} */ _metadataCache: Map>; /** @type {Map} */ _bboxCache: Map; /** @type {Map | null>} */ _rowGroupCache: Map | null>; _cancelGeneration: number; cancel(): void; /** * @param {{ id: string, url: string }[]} files * @param {unknown} _duckdb * @param {{ signal?: AbortSignal }} [options] * @returns {Promise | null>} */ getFileBboxes(files: { id: string; url: string; }[], _duckdb: unknown, options?: { signal?: AbortSignal; }): Promise | null>; /** * @param {{ id: string, url: string }[]} files * @param {unknown} _duckdb * @param {{ bboxColumn?: string, signal?: AbortSignal, onStatus?: (msg: string) => void }} [options] * @returns {Promise> | null>} */ getRowGroupBboxes(files: { id: string; url: string; }[], _duckdb: unknown, options?: { bboxColumn?: string; signal?: AbortSignal; onStatus?: (msg: string) => void; }): Promise> | null>; _processInBatches(items: any, worker: any, runGeneration: any, signal: any, onStatus: any, doneOffset?: number, total?: any): Promise; _getMetadata(url: any, signal: any): Promise; _loadMetadataFromUrl(url: any, signal: any): Promise; _extractFileBbox(metadata: any): number[]; _extractRowGroupBboxes(metadata: any, bboxColumn: any): {}; _getGeoMetadata(metadata: any): any; _getPrimaryColumnMetadata(geoMeta: any): any; _getCoveringBboxPaths(metadata: any, bboxColumn: any): { xminPath: any; yminPath: any; xmaxPath: any; ymaxPath: any; }; _normalizePath(path: any, fallback: any): any; _getRowGroupGeospatialBbox(rowGroup: any): number[]; _getRowGroupStatsBbox(rowGroup: any, coveringPaths: any): number[]; _pathsEqual(left: any, right: any): any; _toFiniteNumber(value: any): number; _throwIfCancelled(runGeneration: any, signal: any): void; _isValidWgs84Bbox(minx: any, miny: any, maxx: any, maxy: any): boolean; } /** * [minx, miny, maxx, maxy] in WGS84. */ export type Bbox = [number, number, number, number];