UNPKG

promisify-file-reader

Version:
90 lines (69 loc) 2.38 kB
'use strict' // 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) module.exports = FileReader //# sourceMappingURL=index.cjs.map