UNPKG

@c8y/ngx-components

Version:

Angular modules for Cumulocity IoT applications

47 lines 7.5 kB
import { Injectable } from '@angular/core'; import { defer, throwError } from 'rxjs'; import { concatMap, map, switchMap } from 'rxjs/operators'; import { BlobReader, BlobWriter, ZipWriter, ZipReader } from '@zip.js/zip.js'; import * as i0 from "@angular/core"; export class ZipService { getEntries(zipFile) { return defer(() => { const reader = new BlobReader(zipFile); const zipReader = new ZipReader(reader); return zipReader.getEntries(); }); } getData(entry) { return defer(() => { const writer = new BlobWriter(); return entry.getData(writer); }); } getJsonData(zipFile, fileEntryFilter) { return this.getEntries(zipFile).pipe(map(entries => { const entryFile = entries.find(entry => entry.filename === fileEntryFilter.filename); if (!entryFile) { throwError(() => new Error(`File not found ${JSON.stringify(fileEntryFilter)}`)); } return entryFile; }), concatMap(entry => this.getData(entry)), switchMap(async (blob) => await blob.text()), map(text => JSON.parse(text))); } async createZip(files) { const zipFileStream = new TransformStream(); const zipFileBlobPromise = new Response(zipFileStream.readable).blob(); const zipWriter = new ZipWriter(zipFileStream.writable, { zip64: false }); await Promise.all(files.map(file => { const readable = file.blob.stream(); return zipWriter.add(file.fileName, readable); })); await zipWriter.close(); return await zipFileBlobPromise; } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ZipService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); } static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ZipService, providedIn: 'root' }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ZipService, decorators: [{ type: Injectable, args: [{ providedIn: 'root' }] }] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiemlwLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb3JlL2NvbW1vbi96aXAuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBYyxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNELE9BQU8sRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQVMsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFHckYsTUFBTSxPQUFPLFVBQVU7SUFDckIsVUFBVSxDQUFDLE9BQWE7UUFDdEIsT0FBTyxLQUFLLENBQUMsR0FBRyxFQUFFO1lBQ2hCLE1BQU0sTUFBTSxHQUFHLElBQUksVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3ZDLE1BQU0sU0FBUyxHQUFHLElBQUksU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3hDLE9BQU8sU0FBUyxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ2hDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELE9BQU8sQ0FBQyxLQUFlO1FBQ3JCLE9BQU8sS0FBSyxDQUFDLEdBQUcsRUFBRTtZQUNoQixNQUFNLE1BQU0sR0FBRyxJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQ2hDLE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBTyxNQUFNLENBQUMsQ0FBQztRQUNyQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBYSxFQUFFLGVBQXFDO1FBQzlELE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQ2xDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUNaLE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsUUFBUSxLQUFLLGVBQWUsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNyRixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBQ2YsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksS0FBSyxDQUFDLGtCQUFrQixJQUFJLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ25GLENBQUM7WUFDRCxPQUFPLFNBQVMsQ0FBQztRQUNuQixDQUFDLENBQUMsRUFDRixTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQ3ZDLFNBQVMsQ0FBQyxLQUFLLEVBQUMsSUFBSSxFQUFDLEVBQUUsQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUMxQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQzlCLENBQUM7SUFDSixDQUFDO0lBRUQsS0FBSyxDQUFDLFNBQVMsQ0FBQyxLQUF5QztRQUN2RCxNQUFNLGFBQWEsR0FBRyxJQUFJLGVBQWUsRUFBRSxDQUFDO1FBQzVDLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxRQUFRLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3ZFLE1BQU0sU0FBUyxHQUFHLElBQUksU0FBUyxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUMxRSxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQ2YsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNmLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUF1QyxDQUFDO1lBQ3pFLE9BQU8sU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ2hELENBQUMsQ0FBQyxDQUNILENBQUM7UUFFRixNQUFNLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUN4QixPQUFPLE1BQU0sa0JBQWtCLENBQUM7SUFDbEMsQ0FBQzsrR0E1Q1UsVUFBVTttSEFBVixVQUFVLGNBREcsTUFBTTs7NEZBQ25CLFVBQVU7a0JBRHRCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgZGVmZXIsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNvbmNhdE1hcCwgbWFwLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBCbG9iUmVhZGVyLCBCbG9iV3JpdGVyLCBaaXBXcml0ZXIsIFppcFJlYWRlciwgRW50cnkgfSBmcm9tICdAemlwLmpzL3ppcC5qcyc7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgWmlwU2VydmljZSB7XG4gIGdldEVudHJpZXMoemlwRmlsZTogRmlsZSk6IE9ic2VydmFibGU8WmlwRW50cnlbXT4ge1xuICAgIHJldHVybiBkZWZlcigoKSA9PiB7XG4gICAgICBjb25zdCByZWFkZXIgPSBuZXcgQmxvYlJlYWRlcih6aXBGaWxlKTtcbiAgICAgIGNvbnN0IHppcFJlYWRlciA9IG5ldyBaaXBSZWFkZXIocmVhZGVyKTtcbiAgICAgIHJldHVybiB6aXBSZWFkZXIuZ2V0RW50cmllcygpO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0RGF0YShlbnRyeTogWmlwRW50cnkpOiBPYnNlcnZhYmxlPEJsb2I+IHtcbiAgICByZXR1cm4gZGVmZXIoKCkgPT4ge1xuICAgICAgY29uc3Qgd3JpdGVyID0gbmV3IEJsb2JXcml0ZXIoKTtcbiAgICAgIHJldHVybiBlbnRyeS5nZXREYXRhPEJsb2I+KHdyaXRlcik7XG4gICAgfSk7XG4gIH1cblxuICBnZXRKc29uRGF0YSh6aXBGaWxlOiBGaWxlLCBmaWxlRW50cnlGaWx0ZXI6IHsgZmlsZW5hbWU6IHN0cmluZyB9KTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5nZXRFbnRyaWVzKHppcEZpbGUpLnBpcGUoXG4gICAgICBtYXAoZW50cmllcyA9PiB7XG4gICAgICAgIGNvbnN0IGVudHJ5RmlsZSA9IGVudHJpZXMuZmluZChlbnRyeSA9PiBlbnRyeS5maWxlbmFtZSA9PT0gZmlsZUVudHJ5RmlsdGVyLmZpbGVuYW1lKTtcbiAgICAgICAgaWYgKCFlbnRyeUZpbGUpIHtcbiAgICAgICAgICB0aHJvd0Vycm9yKCgpID0+IG5ldyBFcnJvcihgRmlsZSBub3QgZm91bmQgJHtKU09OLnN0cmluZ2lmeShmaWxlRW50cnlGaWx0ZXIpfWApKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZW50cnlGaWxlO1xuICAgICAgfSksXG4gICAgICBjb25jYXRNYXAoZW50cnkgPT4gdGhpcy5nZXREYXRhKGVudHJ5KSksXG4gICAgICBzd2l0Y2hNYXAoYXN5bmMgYmxvYiA9PiBhd2FpdCBibG9iLnRleHQoKSksXG4gICAgICBtYXAodGV4dCA9PiBKU09OLnBhcnNlKHRleHQpKVxuICAgICk7XG4gIH1cblxuICBhc3luYyBjcmVhdGVaaXAoZmlsZXM6IHsgZmlsZU5hbWU6IHN0cmluZzsgYmxvYjogQmxvYiB9W10pIHtcbiAgICBjb25zdCB6aXBGaWxlU3RyZWFtID0gbmV3IFRyYW5zZm9ybVN0cmVhbSgpO1xuICAgIGNvbnN0IHppcEZpbGVCbG9iUHJvbWlzZSA9IG5ldyBSZXNwb25zZSh6aXBGaWxlU3RyZWFtLnJlYWRhYmxlKS5ibG9iKCk7XG4gICAgY29uc3QgemlwV3JpdGVyID0gbmV3IFppcFdyaXRlcih6aXBGaWxlU3RyZWFtLndyaXRhYmxlLCB7IHppcDY0OiBmYWxzZSB9KTtcbiAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgIGZpbGVzLm1hcChmaWxlID0+IHtcbiAgICAgICAgY29uc3QgcmVhZGFibGUgPSBmaWxlLmJsb2Iuc3RyZWFtKCkgYXMgYW55IGFzIFJlYWRhYmxlU3RyZWFtPFVpbnQ4QXJyYXk+O1xuICAgICAgICByZXR1cm4gemlwV3JpdGVyLmFkZChmaWxlLmZpbGVOYW1lLCByZWFkYWJsZSk7XG4gICAgICB9KVxuICAgICk7XG5cbiAgICBhd2FpdCB6aXBXcml0ZXIuY2xvc2UoKTtcbiAgICByZXR1cm4gYXdhaXQgemlwRmlsZUJsb2JQcm9taXNlO1xuICB9XG59XG5cbmV4cG9ydCB0eXBlIFppcEVudHJ5ID0gRW50cnk7XG4iXX0=