fctrlx-angular-file-reader
Version:
Angular library that helps convert file (from input[type=file]) to base64/arrayBuffer/text using FileReader API.
113 lines • 7.47 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Observable } from 'rxjs';
export class Base {
/**
* @param {?} returnType
*/
constructor(returnType) {
this.TYPE_PROMISE = 'PROMISE';
this.TYPE_SUBSCRIBER = 'OBSERVABLE';
this.returnType = returnType;
}
/**
* @param {?} file
* @return {?}
*/
toBase64(file) {
/** @type {?} */
const reader = new FileReader();
reader.readAsDataURL(file);
return this.response(reader);
}
/**
* @param {?} file
* @return {?}
*/
toText(file) {
/** @type {?} */
const reader = new FileReader();
reader.readAsText(file);
return this.response(reader);
}
/**
* @param {?} file
* @return {?}
*/
toArrBuf(file) {
/** @type {?} */
const reader = new FileReader();
reader.readAsArrayBuffer(file);
return this.response(reader);
}
/**
* @param {?} reader
* @return {?}
*/
response(reader) {
/** @type {?} */
let response;
if (this.returnType === this.TYPE_SUBSCRIBER) {
response = Observable.create((/**
* @param {?} observer
* @return {?}
*/
(observer) => {
reader.onloadend = (/**
* @return {?}
*/
() => {
observer.next((/** @type {?} */ (reader.result)));
observer.complete();
});
reader.onerror = (/**
* @param {?} error
* @return {?}
*/
(error) => {
observer.next((/** @type {?} */ (error)));
observer.complete();
});
}));
}
else if (this.returnType === this.TYPE_PROMISE) {
response = new Promise((/**
* @param {?} resolve
* @param {?} reject
* @return {?}
*/
(resolve, reject) => {
reader.onloadend = (/**
* @return {?}
*/
() => resolve((/** @type {?} */ (reader.result))));
reader.onerror = (/**
* @param {?} error
* @return {?}
*/
error => reject((/** @type {?} */ (error))));
}));
}
return response;
}
}
if (false) {
/**
* @type {?}
* @private
*/
Base.prototype.TYPE_PROMISE;
/**
* @type {?}
* @private
*/
Base.prototype.TYPE_SUBSCRIBER;
/**
* @type {?}
* @private
*/
Base.prototype.returnType;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmFzZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2ZjdHJseC1hbmd1bGFyLWZpbGUtcmVhZGVyLyIsInNvdXJjZXMiOlsibGliL3NlcnZpY2VzL0Jhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQVksTUFBTSxNQUFNLENBQUM7QUFHNUMsTUFBTSxPQUFPLElBQUk7Ozs7SUFNZixZQUFZLFVBQWtCO1FBSmIsaUJBQVksR0FBVyxTQUFTLENBQUM7UUFDakMsb0JBQWUsR0FBVyxZQUFZLENBQUM7UUFJdEQsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7SUFDL0IsQ0FBQzs7Ozs7SUFFRCxRQUFRLENBQUMsSUFBVTs7Y0FDWCxNQUFNLEdBQUcsSUFBSSxVQUFVLEVBQUU7UUFDL0IsTUFBTSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDL0IsQ0FBQzs7Ozs7SUFFRCxNQUFNLENBQUMsSUFBVTs7Y0FDVCxNQUFNLEdBQUcsSUFBSSxVQUFVLEVBQUU7UUFDL0IsTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN4QixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDL0IsQ0FBQzs7Ozs7SUFFRCxRQUFRLENBQUMsSUFBVTs7Y0FDWCxNQUFNLEdBQUcsSUFBSSxVQUFVLEVBQUU7UUFDL0IsTUFBTSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQy9CLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMvQixDQUFDOzs7OztJQUVELFFBQVEsQ0FBQyxNQUFrQjs7WUFDckIsUUFBUTtRQUVaLElBQUksSUFBSSxDQUFDLFVBQVUsS0FBSyxJQUFJLENBQUMsZUFBZSxFQUFFO1lBQzVDLFFBQVEsR0FBRyxVQUFVLENBQUMsTUFBTTs7OztZQUFDLENBQUMsUUFBMEIsRUFBRSxFQUFFO2dCQUMxRCxNQUFNLENBQUMsU0FBUzs7O2dCQUFHLEdBQUcsRUFBRTtvQkFDdEIsUUFBUSxDQUFDLElBQUksQ0FBQyxtQkFBUSxNQUFNLENBQUMsTUFBTSxFQUFBLENBQUMsQ0FBQztvQkFDckMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUN0QixDQUFDLENBQUEsQ0FBQztnQkFFRixNQUFNLENBQUMsT0FBTzs7OztnQkFBRyxDQUFDLEtBQUssRUFBRSxFQUFFO29CQUN6QixRQUFRLENBQUMsSUFBSSxDQUFDLG1CQUFLLEtBQUssRUFBQSxDQUFDLENBQUM7b0JBQzFCLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDdEIsQ0FBQyxDQUFBLENBQUM7WUFDSixDQUFDLEVBQUMsQ0FBQztTQUNKO2FBQU0sSUFBSSxJQUFJLENBQUMsVUFBVSxLQUFLLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDaEQsUUFBUSxHQUFHLElBQUksT0FBTzs7Ozs7WUFBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtnQkFDekMsTUFBTSxDQUFDLFNBQVM7OztnQkFBRyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsbUJBQVEsTUFBTSxDQUFDLE1BQU0sRUFBQSxDQUFDLENBQUEsQ0FBQztnQkFDeEQsTUFBTSxDQUFDLE9BQU87Ozs7Z0JBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsbUJBQUssS0FBSyxFQUFBLENBQUMsQ0FBQSxDQUFDO1lBQy9DLENBQUMsRUFBQyxDQUFDO1NBQ0o7UUFFRCxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO0NBQ0Y7Ozs7OztJQWxEQyw0QkFBa0Q7Ozs7O0lBQ2xELCtCQUF3RDs7Ozs7SUFDeEQsMEJBQW9DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JzZXJ2YWJsZSwgT2JzZXJ2ZXIgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEZpbGVSZWFkZXJJbnRlcmZhY2UgfSBmcm9tICcuL2ZpbGUtcmVhZGVyLmludGVyZmFjZSc7XG5cbmV4cG9ydCBjbGFzcyBCYXNlIGltcGxlbWVudHMgRmlsZVJlYWRlckludGVyZmFjZVxue1xuICBwcml2YXRlIHJlYWRvbmx5IFRZUEVfUFJPTUlTRTogc3RyaW5nID0gJ1BST01JU0UnO1xuICBwcml2YXRlIHJlYWRvbmx5IFRZUEVfU1VCU0NSSUJFUjogc3RyaW5nID0gJ09CU0VSVkFCTEUnO1xuICBwcml2YXRlIHJlYWRvbmx5IHJldHVyblR5cGU6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihyZXR1cm5UeXBlOiBzdHJpbmcpIHtcbiAgICB0aGlzLnJldHVyblR5cGUgPSByZXR1cm5UeXBlO1xuICB9XG5cbiAgdG9CYXNlNjQoZmlsZTogRmlsZSk6IE9ic2VydmFibGU8c3RyaW5nPiB8IFByb21pc2U8c3RyaW5nPiB7XG4gICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcbiAgICByZWFkZXIucmVhZEFzRGF0YVVSTChmaWxlKTtcbiAgICByZXR1cm4gdGhpcy5yZXNwb25zZShyZWFkZXIpO1xuICB9XG5cbiAgdG9UZXh0KGZpbGU6IEZpbGUpOiBPYnNlcnZhYmxlPHN0cmluZz4gfCBQcm9taXNlPHN0cmluZz4ge1xuICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG4gICAgcmVhZGVyLnJlYWRBc1RleHQoZmlsZSk7XG4gICAgcmV0dXJuIHRoaXMucmVzcG9uc2UocmVhZGVyKTtcbiAgfVxuXG4gIHRvQXJyQnVmKGZpbGU6IEZpbGUpOiBPYnNlcnZhYmxlPHN0cmluZz4gfCBQcm9taXNlPHN0cmluZz4ge1xuICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG4gICAgcmVhZGVyLnJlYWRBc0FycmF5QnVmZmVyKGZpbGUpO1xuICAgIHJldHVybiB0aGlzLnJlc3BvbnNlKHJlYWRlcik7XG4gIH1cblxuICByZXNwb25zZShyZWFkZXI6IEZpbGVSZWFkZXIpOiBPYnNlcnZhYmxlPHN0cmluZz4gfCBQcm9taXNlPHN0cmluZz4ge1xuICAgIGxldCByZXNwb25zZTtcblxuICAgIGlmICh0aGlzLnJldHVyblR5cGUgPT09IHRoaXMuVFlQRV9TVUJTQ1JJQkVSKSB7XG4gICAgICByZXNwb25zZSA9IE9ic2VydmFibGUuY3JlYXRlKChvYnNlcnZlcjogT2JzZXJ2ZXI8c3RyaW5nPikgPT4ge1xuICAgICAgICByZWFkZXIub25sb2FkZW5kID0gKCkgPT4ge1xuICAgICAgICAgIG9ic2VydmVyLm5leHQoPHN0cmluZz5yZWFkZXIucmVzdWx0KTtcbiAgICAgICAgICBvYnNlcnZlci5jb21wbGV0ZSgpO1xuICAgICAgICB9O1xuXG4gICAgICAgIHJlYWRlci5vbmVycm9yID0gKGVycm9yKSA9PiB7XG4gICAgICAgICAgb2JzZXJ2ZXIubmV4dCg8YW55PmVycm9yKTtcbiAgICAgICAgICBvYnNlcnZlci5jb21wbGV0ZSgpO1xuICAgICAgICB9O1xuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmICh0aGlzLnJldHVyblR5cGUgPT09IHRoaXMuVFlQRV9QUk9NSVNFKSB7XG4gICAgICByZXNwb25zZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgcmVhZGVyLm9ubG9hZGVuZCA9ICgpID0+IHJlc29sdmUoPHN0cmluZz5yZWFkZXIucmVzdWx0KTtcbiAgICAgICAgcmVhZGVyLm9uZXJyb3IgPSBlcnJvciA9PiByZWplY3QoPGFueT5lcnJvcik7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzcG9uc2U7XG4gIH1cbn1cbiJdfQ==