Skip to content

Commit 095d078

Browse files
committed
fix(excel-exporter): updated jszip to latest version and added typings #4158
1 parent f3c4821 commit 095d078

File tree

9 files changed

+44
-67
lines changed

9 files changed

+44
-67
lines changed

package-lock.json

Lines changed: 23 additions & 35 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,11 +54,12 @@
5454
"@angular/platform-browser-dynamic": "^8.1.2",
5555
"@angular/router": "^8.1.2",
5656
"@types/hammerjs": "^2.0.36",
57+
"@types/jszip": "^3.1.7",
5758
"@types/source-map": "0.5.2",
5859
"classlist.js": "^1.1.20150312",
5960
"core-js": "^2.6.2",
6061
"hammerjs": "^2.0.8",
61-
"jszip": "^3.1.5",
62+
"jszip": "^3.3.0",
6263
"resize-observer-polyfill": "^1.5.1",
6364
"rxjs": "^6.5.2",
6465
"web-animations-js": "^2.3.2",

projects/igniteui-angular/ng-package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
},
88
"whitelistedNonPeerDependencies": [
99
"@types/hammerjs",
10+
"@types/jszip",
1011
"hammerjs",
1112
"jszip",
1213
"resize-observer-polyfill"

projects/igniteui-angular/ng-package.prod.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
},
77
"whitelistedNonPeerDependencies": [
88
"@types/hammerjs",
9+
"@types/jszip",
910
"hammerjs",
1011
"jszip",
1112
"resize-observer-polyfill"

projects/igniteui-angular/package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,8 +67,9 @@
6767
],
6868
"dependencies": {
6969
"@types/hammerjs": "^2.0.36",
70+
"@types/jszip": "^3.1.7",
7071
"hammerjs": "^2.0.8",
71-
"jszip": "^3.1.5",
72+
"jszip": "^3.3.0",
7273
"resize-observer-polyfill": "^1.5.1"
7374
},
7475
"peerDependencies": {

projects/igniteui-angular/src/lib/services/excel/excel-exporter.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import * as JSZip from 'jszip/dist/jszip';
1+
import * as JSZip from 'jszip';
22

33
import { EventEmitter, Injectable, Output } from '@angular/core';
44
import { ExcelElementsFactory } from './excel-elements-factory';
@@ -38,7 +38,7 @@ export interface IExcelExportEndedEventArgs extends IBaseEventArgs {
3838
@Injectable()
3939
export class IgxExcelExporterService extends IgxBaseExporter {
4040

41-
private static ZIP_OPTIONS = { compression: 'DEFLATE', type: 'base64' };
41+
private static ZIP_OPTIONS = { compression: 'DEFLATE', type: 'base64' } as JSZip.JSZipGeneratorOptions<'base64'>;
4242
private _xlsx: JSZip;
4343

4444
/**

projects/igniteui-angular/src/lib/services/excel/excel-files.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { IExcelFile } from './excel-interfaces';
22
import { ExcelStrings } from './excel-strings';
33
import { WorksheetData } from './worksheet-data';
44

5-
import * as JSZip from 'jszip/dist/jszip';
5+
import * as JSZip from 'jszip';
66

77
/**
88
* @hidden

projects/igniteui-angular/src/lib/services/excel/excel-interfaces.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import * as JSZip from 'jszip/dist/jszip';
1+
import * as JSZip from 'jszip';
22

33
import {
44
ExcelFileTypes,

projects/igniteui-angular/src/lib/services/excel/jszip-verification-wrapper.spec.ts

Lines changed: 11 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
1-
import * as JSZip from 'jszip/dist/jszip';
1+
import * as JSZip from 'jszip';
22
import { ExcelFileTypes } from './excel-enums';
33
import { JSZipFiles } from './jszip-helper.spec';
44

55
export class JSZipWrapper {
66
private _zip: JSZip;
7-
private _filesAndFolders: JSZip.ZipObject[];
7+
private _filesAndFolders: string[];
88
private _fileContent = '';
9-
private _files: any[];
9+
private _files: {[key: string]: JSZip.JSZipObject};
1010
private _filesContent: IFileContent[] = [];
1111
private _hasValues = true;
1212

@@ -19,32 +19,30 @@ export class JSZipWrapper {
1919
}
2020

2121
private createFilesAndFolders() {
22-
this._filesAndFolders = Object.keys(this._files).map((f: JSZip.ZipObject) => {
23-
return f;
24-
});
22+
this._filesAndFolders = Object.keys(this._files).map(f => f);
2523
}
2624

27-
get templateFilesAndFolders(): JSZip.ZipObject[] {
25+
get templateFilesAndFolders(): string[] {
2826
return this._filesAndFolders.filter((name) => JSZipFiles.templatesNames.indexOf(name) !== -1);
2927
}
3028

31-
get dataFilesAndFolders(): JSZip.ZipObject[] {
29+
get dataFilesAndFolders(): string[] {
3230
return this._filesAndFolders.filter((name) => JSZipFiles.dataFilesAndFoldersNames.indexOf(name) !== -1);
3331
}
3432

35-
get dataFilesOnly(): JSZip.ZipObject[] {
33+
get dataFilesOnly(): string[] {
3634
return this.getFiles(this.dataFilesAndFolders);
3735
}
3836

39-
get templateFilesOnly(): JSZip.ZipObject[] {
37+
get templateFilesOnly(): string[] {
4038
return this.getFiles(this.templateFilesAndFolders);
4139
}
4240

4341
get hasValues() {
4442
return this._hasValues;
4543
}
4644

47-
private getFiles(collection: JSZip.ZipObject[]) {
45+
private getFiles(collection: string[]) {
4846
return collection.filter((f) => this._files[f].dir === false);
4947
}
5048

@@ -54,14 +52,14 @@ export class JSZipWrapper {
5452
return 'Zip file not found!';
5553
}
5654

57-
await this._files[fileName].async('string')
55+
await this._files[fileName].async('text')
5856
.then((txt) => {
5957
this._fileContent = txt;
6058
});
6159
}
6260

6361
/* Reads all files and stores their contents in this._filesContent. */
64-
private async readFiles(files: any[]) {
62+
private async readFiles(files: string[]) {
6563
// const self = this;
6664
this._filesContent = [];
6765
for (const file of files) {
@@ -141,19 +139,6 @@ export class JSZipWrapper {
141139
});
142140
}
143141

144-
/* Verifies the contents of all files and asserts the result.
145-
Optionally, a message can be passed in, which, if specified, will be shown in the beginning of the comparison result. */
146-
public async verifyFilesContent(expectedData: IFileContent[], message = '') {
147-
// const self = this;
148-
let result;
149-
const msg = (message !== '') ? message + '\r\n' : '';
150-
151-
await this.readFiles(this._files).then(() => {
152-
result = this.compareFiles(this._filesContent, expectedData);
153-
expect(result.areEqual).toBe(true, msg + result.differences);
154-
});
155-
}
156-
157142
/* Compares the content of two files based on the provided file type and expected value data. */
158143
private compareFilesContent(currentContent: string, fileType: ExcelFileTypes, fileData: string) {
159144
let result = true;

0 commit comments

Comments
 (0)