@loaders.gl/core
Version:
Framework-independent loaders for 3D graphics formats
81 lines (65 loc) • 1.53 kB
JavaScript
import assert from '../../utils/assert';
class FileReadableResponse {
constructor(fileOrBlob) {
this._fileOrBlob = fileOrBlob;
this.bodyUsed = false;
}
get headers() {
return new Headers({
'Content-Length': this._fileOrBlob.size,
'Content-Type': this._fileOrBlob.type
});
}
get ok() {
return true;
}
get status() {
return 200;
}
url() {
return this._fileOrBlob.name || '';
}
async arrayBuffer() {
const {
reader,
promise
} = this._getFileReader();
reader.readAsArrayBuffer(this._fileOrBlob);
return promise;
}
async text() {
const {
reader,
promise
} = this._getFileReader();
reader.readAsText(this._fileOrBlob);
return promise;
}
async json() {
const text = await this.text();
return JSON.parse(text);
}
_getFileReader() {
assert(!this.bodyUsed);
this.bodyUsed = true;
let reader;
const promise = new Promise((resolve, reject) => {
try {
reader = new FileReader();
reader.onerror = error => reject(new Error(error));
reader.onabort = () => reject(new Error('Read aborted.'));
reader.onload = () => resolve(reader.result);
} catch (error) {
reject(error);
}
});
return {
reader,
promise
};
}
}
export default function fetchFileReadable(fileOrBlob, options) {
return Promise.resolve(new FileReadableResponse(fileOrBlob, options));
}
//# sourceMappingURL=fetch-file.browser.js.map