Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 | /* eslint-disable import/no-unresolved */ /* eslint-disable import/extensions */ /* eslint-disable no-console */ const path = require('path'); const fs = require('fs'); const { Worker } = require('worker_threads'); const printZPLWorkerRawContent = require('./bundle/printZPLWorker.js'); let socket; let PATH_TEMP; let JOB_PRINTER_FILE_PATH; const initialize = (currentDir, tempFolderDirParam) => { PATH_TEMP = tempFolderDirParam; const jobsFilesPath = path.resolve(currentDir, 'jobs'); JOB_PRINTER_FILE_PATH = path.resolve(jobsFilesPath, 'printZPLWorker.js'); const makePaths = (pathsFolder) => pathsFolder.forEach( (pathFolder) => !fs.existsSync(pathFolder) && fs.mkdirSync(pathFolder, { recursive: true }) ); const makeFiles = (pathsFiles) => pathsFiles.forEach((pathFile) => fs.writeFileSync(pathFile.path, pathFile.content) ); makePaths([jobsFilesPath]); makeFiles([ { path: JOB_PRINTER_FILE_PATH, content: printZPLWorkerRawContent }, ]); }; const workerMessage = ( name = 'Print Worker', workerMessageData = null, resolve = () => false, reject = () => false ) => { try { if (workerMessageData === 'done') resolve(true); else console.log(`${name}: ${JSON.stringify(workerMessageData)}`); } catch (e) { console.log(`${name}: ${e.message}`); reject(e.message); } reject(workerMessageData); }; async function printZPL(printer, label, type = 'ean') { return new Promise((resolve, reject) => { const worker = new Worker(JOB_PRINTER_FILE_PATH, { workerData: { printer, label, type, PATH_TEMP }, }); worker.on('message', (message) => workerMessage('printZPLWorker', message, resolve, reject) ); worker.on('error', reject); worker.on('exit', (code) => { if (code !== 0) { reject(new Error(`Worker stopped with exit code ${code}`)); } else { resolve(true); } }); }); } // Event for printer received from server const printerEvent = async (data = {}, callback = () => false) => { const response = { success: false, message: '', }; try { await printZPL(data.printer, data.label, data.type); response.success = true; } catch (e) { response.message = typeof e === 'object' ? e.message : e; } // Return response to server callback(response); }; const addSocketEvents = (socketClient) => { socket = socketClient; socket.removeAllListeners('printer-event'); socket.on('printer-event', printerEvent); }; module.exports = { initialize, addSocketEvents, }; |