@c8y/ngx-components
Version:
Angular modules for Cumulocity IoT applications
47 lines • 7.5 kB
JavaScript
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=