RSS Git Download  Clone
Raw View History
Blames found: 13 Mode: javascript Binary: false


Hang on, we reloading big blames...
const { Worker, isMainThread, parentPort, workerData } = require('worker_threads'); // this is in the main thread if (isMainThread) {
const ensureOptions = (options) => {
options = options || {} if (!options.hasOwnProperty('output')) { options.output = 'binary' } if (!options.hasOwnProperty('nodeExcel')) { options.nodeExcel = undefined }
if (typeof options.output !== 'string' || (options.output !== 'binary' && options.output !== 'base64')) { throw new Error(`The p3x-json2xls-worker-thread options.output can be 'binary' or 'base64', you requested '${options.output}', which is wrong.`) }
return options } const transform = async (data, options) => { options = ensureOptions(options)
const workerResult = await new Promise((resolve, reject) => { const worker = new Worker(__filename, { workerData: { data: data, options: options, } }); worker.on('message', resolve); worker.on('error', reject); worker.on('exit', (code) => { if (code !== 0) { reject(new Error(`Worker stopped with exit code ${code}`)); } worker.terminate() }); }); return workerResult }; transform.middleware = function(req, res, next) {
res.xls = async (filename, data, options) => { try { options = options || {} options.output = 'binary';
options = ensureOptions(options)
const xls = await transform(data, options); res.setHeader('Content-Type', 'application/vnd.openxmlformats'); res.setHeader("Content-Disposition", "attachment; filename=" + filename); res.end(xls, 'binary'); } catch(e) { res.status(500).send({ status: 'error', ok: false, message: e.message }) }
}; next(); };
transform.sync = (data, options) => { const json2xls = require('./util'); options = ensureOptions(options) const xls = json2xls(data, options.nodeExcel); if (options.output === 'base64') { const xlsBase64 = Buffer.from(xls, 'binary').toString('base64'); return xlsBase64 } else { return xls } }
module.exports = transform } else { const json2xls = require('./util'); const xls = json2xls(workerData.data, workerData.options.nodeExcel); if (workerData.options.output === 'base64') { const xlsBase64 = Buffer.from(xls, 'binary').toString('base64'); parentPort.postMessage(xlsBase64) } else { parentPort.postMessage(xls) } }