Use C8 for coverage

This commit is contained in:
Dolan Miu
2023-06-12 18:43:29 +01:00
parent 09ab91eeef
commit eeee01a0e0
11 changed files with 655 additions and 2090 deletions

View File

@ -1,4 +1,4 @@
import { strToU8, zip } from "fflate";
import JSZip from "jszip";
import xml from "xml";
import { File } from "@file/file";
@ -44,39 +44,26 @@ export class Compiler {
this.numberingReplacer = new NumberingReplacer();
}
public compile(file: File, prettifyXml?: PrettifyType): Promise<Uint8Array> {
public compile(file: File, prettifyXml?: PrettifyType): JSZip {
const zip = new JSZip();
const xmlifiedFileMapping = this.xmlifyFile(file, prettifyXml);
const map = new Map<string, IXmlifyedFile | readonly IXmlifyedFile[]>(Object.entries(xmlifiedFileMapping));
return new Promise<Uint8Array>((resolve, reject) => {
zip(
{
...Array.from(map.entries()).reduce((acc, [, obj]) => {
if (Array.isArray(obj)) {
for (const subFile of obj as readonly IXmlifyedFile[]) {
// eslint-disable-next-line functional/immutable-data
acc[subFile.path] = strToU8(subFile.data);
}
} else {
// eslint-disable-next-line functional/immutable-data
acc[(obj as IXmlifyedFile).path] = strToU8((obj as IXmlifyedFile).data);
}
for (const [, obj] of map) {
if (Array.isArray(obj)) {
for (const subFile of obj as readonly IXmlifyedFile[]) {
zip.file(subFile.path, subFile.data);
}
} else {
zip.file((obj as IXmlifyedFile).path, (obj as IXmlifyedFile).data);
}
}
return acc;
// eslint-disable-next-line @typescript-eslint/no-explicit-any
}, {} as any),
...file.Media.Array.reduce((acc, { stream, fileName }) => ({ ...acc, [`word/media/${fileName}`]: stream }), {}),
},
{},
(err, data) => {
if (err) {
reject(err);
} else {
resolve(data);
}
},
);
});
for (const { stream, fileName } of file.Media.Array) {
zip.file(`word/media/${fileName}`, stream);
}
return zip;
}
private xmlifyFile(file: File, prettify?: PrettifyType): IXmlifyedFileMapping {