import { createWriteStream } from "fs"; import { Writable } from "stream"; import { PDF_ } from "../pdf/pdf.js"; import { PDFOptions, Data } from "../shared/types.js"; export class PDF extends PDF_ { constructor(data: Data, outputPath: string, options?: PDFOptions); constructor(data: Data, writableStream: Writable, options?: PDFOptions); constructor(data: Data, outputPath: string, options?: PDFOptions, callback?: Function); constructor(data: Data, writableStream: Writable, options?: PDFOptions, callback?: Function); constructor(data: Data, outputPath: string, callback?: Function); constructor(data: Data, writableStream: Writable, callback?: Function); constructor(data: Data, outputPathOrWritableStream: string | Writable, optionsOrCallback?: PDFOptions | Function, callbackOrUndefined?: Function | undefined) { let callback: Function | undefined = undefined; let options: PDFOptions | undefined = undefined; if(typeof optionsOrCallback === "object"){ options = optionsOrCallback; if(typeof callbackOrUndefined === "function"){ callback = callbackOrUndefined; } } else if(typeof optionsOrCallback === "function"){ callback = optionsOrCallback; } super(data, options); let stream: Writable | undefined; if(typeof outputPathOrWritableStream === "string"){ stream = createWriteStream(outputPathOrWritableStream); } else { stream = outputPathOrWritableStream; } super.pipe(stream); stream.on("finish", ev => { if(typeof callback === "function"){ callback(this); } this.emit("finish", ev); }); } }