UNPKG

s2-tools

Version:

A collection of geospatial tools primarily designed for WGS84, Web Mercator, and S2.

157 lines 4.07 kB
/** * # Fetch Reader * * ## Description * The browser reader that fetches data from a URL. * * ## Usage * ```ts * import { FetchReader } from 's2-tools'; * * const reader = new FetchReader('https://example.com/BETA2007.gsb', true); * * const data = await reader.getRange(0, 100); * ``` */ export class FetchReader { path; rangeRequests; byteLength = 0; byteOffset = 0; /** * @param path - the location of the PMTiles data * @param rangeRequests - FetchReader specific; enable range requests or use urlParam "bytes" */ constructor(path, rangeRequests) { this.path = path; this.rangeRequests = rangeRequests; } /** * Not applicable for FetchReader * @param _byteOffset - offset * @param _littleEndian - le or be * @returns - 0 */ getBigInt64(_byteOffset, _littleEndian) { return 0n; } /** * Not applicable for FetchReader * @param _byteOffset - offset * @param _littleEndian - le or be * @returns - 0 */ getBigUint64(_byteOffset, _littleEndian) { return 0n; } /** * Not applicable for FetchReader * @param _byteOffset - offset * @param _littleEndian - le or be * @returns - 0 */ getFloat32(_byteOffset, _littleEndian) { return 0; } /** * Not applicable for FetchReader * @param _byteOffset - offset * @param _littleEndian - le or be * @returns - 0 */ getFloat64(_byteOffset, _littleEndian) { return 0; } /** * Not applicable for FetchReader * @param _byteOffset - offset * @param _littleEndian - le or be * @returns - 0 */ getInt16(_byteOffset, _littleEndian) { return 0; } /** * Not applicable for FetchReader * @param _byteOffset - offset * @param _littleEndian - le or be * @returns - 0 */ getInt32(_byteOffset, _littleEndian) { return 0; } /** * Not applicable for FetchReader * @param _byteOffset - offset * @returns - 0 */ getInt8(_byteOffset) { return 0; } /** * Not applicable for FetchReader * @param _byteOffset - offset * @param _littleEndian - le or be * @returns - 0 */ getUint16(_byteOffset, _littleEndian) { return 0; } /** * Not applicable for FetchReader * @param _byteOffset - offset * @param _littleEndian - le or be * @returns - 0 */ getUint32(_byteOffset, _littleEndian) { return 0; } /** * Not applicable for FetchReader * @param _byteOffset - offset * @returns - 0 */ getUint8(_byteOffset) { return 0; } /** * Not applicable for FetchReader * @param _begin - beginning * @param _end - end * @returns - empty DataView */ slice(_begin, _end) { return new DataView(new Uint8Array([]).buffer); } /** * Not applicable for FetchReader * @param _encoding - does nothing */ setStringEncoding(_encoding) { } /** * Not applicable for FetchReader * @param _byteOffset - offset * @param _byteLength - length * @returns - empty string */ parseString(_byteOffset, _byteLength) { return ''; } /** * Reads a range from the file * @param offset - the offset of the range * @param length - the length of the range * @returns - the ranged buffer */ async getRange(offset, length) { const bytes = String(offset) + '-' + (length !== undefined ? String(offset + length) : ''); const fetchReq = this.rangeRequests ? fetch(this.path, { headers: { Range: `bytes=${offset}-${length === undefined ? '' : offset + length - 1}` }, }) : fetch(`${this.path}&bytes=${bytes}`); const res = await fetchReq.then(async (res) => await res.arrayBuffer()); return new Uint8Array(res, 0, res.byteLength); } } //# sourceMappingURL=fetch.js.map