UNPKG

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
/** * @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==