* build(deps-dev): bump eslint from 8.57.1 to 9.13.0 Bumps [eslint](https://github.com/eslint/eslint) from 8.57.1 to 9.13.0. - [Release notes](https://github.com/eslint/eslint/releases) - [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md) - [Commits](https://github.com/eslint/eslint/compare/v8.57.1...v9.13.0) --- updated-dependencies: - dependency-name: eslint dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com> * Upgrade EsLint * Fix all new lint errors --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Dolan Miu <dolan_miu@hotmail.com>
86 lines
3.0 KiB
TypeScript
86 lines
3.0 KiB
TypeScript
import { Stream } from "stream";
|
|
|
|
import { File } from "@file/file";
|
|
|
|
import { Compiler } from "./next-compiler";
|
|
|
|
/**
|
|
* Use blanks to prettify
|
|
*/
|
|
export const PrettifyType = {
|
|
NONE: "",
|
|
WITH_2_BLANKS: " ",
|
|
WITH_4_BLANKS: " ",
|
|
|
|
WITH_TAB: "\t",
|
|
} as const;
|
|
|
|
const convertPrettifyType = (
|
|
prettify?: boolean | (typeof PrettifyType)[keyof typeof PrettifyType],
|
|
): (typeof PrettifyType)[keyof typeof PrettifyType] | undefined =>
|
|
prettify === true ? PrettifyType.WITH_2_BLANKS : prettify === false ? undefined : prettify;
|
|
|
|
export class Packer {
|
|
public static async toString(file: File, prettify?: boolean | (typeof PrettifyType)[keyof typeof PrettifyType]): Promise<string> {
|
|
const zip = this.compiler.compile(file, convertPrettifyType(prettify));
|
|
const zipData = await zip.generateAsync({
|
|
type: "string",
|
|
mimeType: "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
|
|
compression: "DEFLATE",
|
|
});
|
|
|
|
return zipData;
|
|
}
|
|
|
|
public static async toBuffer(file: File, prettify?: boolean | (typeof PrettifyType)[keyof typeof PrettifyType]): Promise<Buffer> {
|
|
const zip = this.compiler.compile(file, convertPrettifyType(prettify));
|
|
const zipData = await zip.generateAsync({
|
|
type: "nodebuffer",
|
|
mimeType: "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
|
|
compression: "DEFLATE",
|
|
});
|
|
|
|
return zipData;
|
|
}
|
|
|
|
public static async toBase64String(file: File, prettify?: boolean | (typeof PrettifyType)[keyof typeof PrettifyType]): Promise<string> {
|
|
const zip = this.compiler.compile(file, convertPrettifyType(prettify));
|
|
const zipData = await zip.generateAsync({
|
|
type: "base64",
|
|
mimeType: "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
|
|
compression: "DEFLATE",
|
|
});
|
|
|
|
return zipData;
|
|
}
|
|
|
|
public static async toBlob(file: File, prettify?: boolean | (typeof PrettifyType)[keyof typeof PrettifyType]): Promise<Blob> {
|
|
const zip = this.compiler.compile(file, convertPrettifyType(prettify));
|
|
const zipData = await zip.generateAsync({
|
|
type: "blob",
|
|
mimeType: "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
|
|
compression: "DEFLATE",
|
|
});
|
|
|
|
return zipData;
|
|
}
|
|
|
|
public static toStream(file: File, prettify?: boolean | (typeof PrettifyType)[keyof typeof PrettifyType]): Stream {
|
|
const stream = new Stream();
|
|
const zip = this.compiler.compile(file, convertPrettifyType(prettify));
|
|
|
|
zip.generateAsync({
|
|
type: "nodebuffer",
|
|
mimeType: "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
|
|
compression: "DEFLATE",
|
|
}).then((z) => {
|
|
stream.emit("data", z);
|
|
stream.emit("end");
|
|
});
|
|
|
|
return stream;
|
|
}
|
|
|
|
private static readonly compiler = new Compiler();
|
|
}
|