s2-tools
Version:
A collection of geospatial tools primarily designed for WGS84, Web Mercator, and S2.
157 lines • 4.07 kB
JavaScript
/**
* # 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