import { Interface } from "./interface"; import * as fs from "fs"; // @ts-ignore import * as writeFileQueue from "write-file-queue"; export class FileInterface implements Interface { private path: string; private writeFile: typeof fs.writeFile; constructor(path: string) { this.path = path; this.writeFile = writeFileQueue({ retries: 10, // number of write attempts before failing waitTime: 200, // number of milliseconds to wait between write attempts }); } getPrinterName(): string { return this.path; } async isPrinterConnected() { try { return fs.existsSync(this.path); } catch (error) { throw error; } } async execute(buffer: Uint8Array): Promise { return new Promise((resolve, reject) => { this.writeFile(this.path, buffer, function (error) { if (error) { reject(error); } else { resolve(); } }); }); } }