node-thermal-printer
Version:
Print on Epson, Star, Tranca, Daruma, Brother and Custom thermal printers with Node.js
38 lines (33 loc) • 900 B
JavaScript
const fs = require('fs');
const Interface = require('./interface');
class File extends Interface {
constructor (path) {
super();
this.path = path;
this.writeFile = require('write-file-queue')({
retries: 1000, // number of write attempts before failing
waitTime: 200, // number of milliseconds to wait between write attempts
});
}
async isPrinterConnected () {
try {
return fs.existsSync(this.path);
} catch (error) {
throw error;
}
}
async execute (buffer, options = {}) {
return new Promise((resolve, reject) => {
const pTimeout = setTimeout(() => { reject('Printer Error'); }, 5000);
this.writeFile(this.path, buffer, (error) => {
clearTimeout(pTimeout);
if (error) {
reject(error);
} else {
resolve('Print done');
}
});
});
}
}
module.exports = File;