promisify-file-reader
Version:
Promise File Reader
98 lines (78 loc) • 2.57 kB
JavaScript
// eslint-disable-next-line no-new-func
var globalThis = new Function('return this')()
var FileReader$1 = globalThis.FileReader,
Promise$1 = globalThis.Promise,
Blob = globalThis.Blob
function promisify(method) {
return function (blob, encoding) {
return new Promise$1(function (resolve, reject) {
var fileReader = new FileReader$1()
fileReader.onload = function () {
return resolve(fileReader.result)
}
fileReader.onerror = function () {
return reject(fileReader.error)
}
method.call(fileReader, blob, encoding)
})
}
}
function toStatic(method) {
return function (blob, encoding) {
return method.call(blob, encoding)
}
}
var readAsArrayBuffer = Blob.prototype.arrayBuffer
? toStatic(Blob.prototype.arrayBuffer)
: promisify(FileReader$1.prototype.readAsArrayBuffer)
var fromCharCode = String.fromCharCode
function arrayBufferToBinaryString(buffer) {
var bytes = new Uint8Array(buffer)
var byteLength = bytes.byteLength
var binary = '' // can we use a chuck size for this loop?
for (var index = 0; index < byteLength; index += 1) {
binary += fromCharCode(bytes[index])
}
return binary
}
function getBinaryStringFromArrayBuffer(blob) {
return readAsArrayBuffer(blob).then(arrayBufferToBinaryString)
} // IE 10 don't has `readAsBinaryString`
var readAsBinaryString = FileReader$1.prototype.readAsBinaryString
? promisify(FileReader$1.prototype.readAsBinaryString)
: getBinaryStringFromArrayBuffer
var readAsDataURL = promisify(FileReader$1.prototype.readAsDataURL)
var readAsText = promisify(FileReader$1.prototype.readAsText)
var core = /*#__PURE__*/ Object.freeze({
__proto__: null,
readAsArrayBuffer: readAsArrayBuffer,
readAsBinaryString: readAsBinaryString,
readAsDataURL: readAsDataURL,
readAsText: readAsText,
})
var staticMethods = /*#__PURE__*/ Object.freeze({
__proto__: null,
readAsArrayBuffer: readAsArrayBuffer,
readAsBinaryString: readAsBinaryString,
readAsDataURL: readAsDataURL,
readAsText: readAsText,
arrayBuffer: readAsArrayBuffer,
binaryString: readAsBinaryString,
dataURL: readAsDataURL,
text: readAsText,
})
var FileReader = function FileReader() {}
Object.assign(FileReader.prototype, core)
Object.assign(FileReader, staticMethods)
export {
readAsArrayBuffer as arrayBuffer,
readAsBinaryString as binaryString,
readAsDataURL as dataURL,
FileReader as default,
readAsArrayBuffer,
readAsBinaryString,
readAsDataURL,
readAsText,
readAsText as text,
}
//# sourceMappingURL=index.mjs.map