@resolveio/server-lib 20.7.65 → 20.7.67

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.WorkerDispatcherManager=void 0;var common_1=require("../util/common"),WorkerDispatcherManager=function(){function WorkerDispatcherManager(){this._workers=[],this._taskQueue=[],this._clientRequests={},this._pendingTasks=new Map,this.MAX_CONCURRENCY=4}return WorkerDispatcherManager.create=function(e,t){var r=new WorkerDispatcherManager;return r.initialize(e,t),r},WorkerDispatcherManager.prototype.initialize=function(e,t){this._websocketManager=e,this._methodManager=t},WorkerDispatcherManager.prototype.isSafeShutdown=function(){return!this._taskQueue.length&&!this._pendingTasks.size},WorkerDispatcherManager.prototype.addWorker=function(e){this._workers.push({id:e.id_worker,ws:e,activeTasks:[]}),this._taskQueue.length&&this.dispatchQueue()},WorkerDispatcherManager.prototype.disconnectWorker=function(t){this._workers=this._workers.filter(function(e){return e.id!==t})},WorkerDispatcherManager.prototype.sendClientTask=function(e,t,r,s){var a="task-"+(0,common_1.objectIdHexString)();this._taskQueue.push({type:"task",taskId:a,messageId:e,method:t,params:r,userContext:s}),s&&s.id_ws&&(this._clientRequests[a]=s.id_ws),this.dispatchQueue()},WorkerDispatcherManager.prototype.sendInternalTask=function(e,t){void 0===t&&(t=[]),Array.isArray(t)||(t=[t]);var r="task-"+(0,common_1.objectIdHexString)();this._taskQueue.push({type:"task",taskId:r,method:e,params:t,messageId:0,userContext:{user:"Internal System"}}),this.dispatchQueue()},WorkerDispatcherManager.prototype.dispatchQueue=function(){var e=this;if(this._taskQueue.length)for(;0<this._taskQueue.length;){var t=this.findAvailableWorker();if(!t)return void setTimeout(function(){e.dispatchQueue()},25);var r=this._taskQueue.shift();this.assignTaskToWorker(t,r)}},WorkerDispatcherManager.prototype.findAvailableWorker=function(){var t=this,e=this._workers.filter(function(e){return e.activeTasks.length<t.MAX_CONCURRENCY});return e.length?(e.sort(function(e,t){return e.activeTasks.map(function(e){return e.weight}).reduce(function(e,t){return e+t},0)-t.activeTasks.map(function(e){return e.weight}).reduce(function(e,t){return e+t},0)}),e[0]):null},WorkerDispatcherManager.prototype.assignTaskToWorker=function(r,s){var a=this,e=this._methodManager.getMethod(s.method);if(e){r.activeTasks.push({taskId:s.taskId,weight:e&&e.workerTaskWeight?e.workerTaskWeight:1});var e={type:"task",taskId:s.taskId,messageId:s.messageId,method:s.method,params:s.params,userContext:s.userContext||{}},t=setTimeout(function(){var e,t;a._pendingTasks.has(s.taskId)&&a._pendingTasks.delete(s.taskId),console.log(new Date,"TIMEOUT HIT","task",s.taskId,s.messageId,s.method,JSON.stringify(a._workers)),r.activeTasks=r.activeTasks.filter(function(e){return e.taskId!==s.taskId}),s.userContext&&s.userContext.id_ws&&(e={messageId:s.messageId,hasError:!0,data:"Task timed out after 2m in WorkerDispatcherManager for method: "+s.method},t=a._websocketManager.getWebSocket(s.userContext.id_ws))&&a._websocketManager.send(t,e)},12e4);this._pendingTasks.set(s.taskId,{timeout:t});try{this.sendWorkerPayload(r.ws,e)}catch(e){console.error("Failed to send task to worker:",e),clearTimeout(t),r.activeTasks=r.activeTasks.filter(function(e){return e.taskId!==s.taskId}),this._taskQueue.unshift(s),this.dispatchQueue()}}else console.error("Failed to send task to worker - Could not find method:",s.method)},WorkerDispatcherManager.prototype.handleWorkerMessage=function(t,r){var s,e,a,o;try{e=JSON.parse(r,common_1.dateReviver)}catch(e){return void console.error("Failed to parse worker message:",r)}"taskComplete"===e.type&&((r=this._workers.find(function(e){return e.id===t}))?(s=e.taskId,a=e.messageId,o=e.error,e=e.result,r.activeTasks=r.activeTasks.filter(function(e){return e.taskId!==s}),(r=this._pendingTasks.get(s))&&(clearTimeout(r.timeout),this._pendingTasks.delete(s)),(r=this._clientRequests[s])&&(a={messageId:a,hasError:!1,data:e},o&&(a.hasError=!0,a.data=e),o=this._websocketManager.getWebSocket(r),this._websocketManager.send(o,a),this._clientRequests[s])&&delete this._clientRequests[s],this._taskQueue.length&&this.dispatchQueue()):console.error("Unknown worker for taskComplete:",t))},WorkerDispatcherManager.prototype.sendWorkerPayload=function(e,t){if("string"!=typeof t&&(t=JSON.stringify(t)),e&&e.readyState===e.OPEN)try{e.send(t)}catch(e){console.error("Failed to send worker response:",e)}else e&&e.close()},WorkerDispatcherManager}();exports.WorkerDispatcherManager=WorkerDispatcherManager;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.WorkerDispatcherManager=void 0;var common_1=require("../util/common"),WorkerDispatcherManager=function(){function WorkerDispatcherManager(){this._workers=[],this._taskQueue=[],this._clientRequests={},this._pendingTasks=new Map,this.MAX_CONCURRENCY=10}return WorkerDispatcherManager.create=function(e,t){var r=new WorkerDispatcherManager;return r.initialize(e,t),r},WorkerDispatcherManager.prototype.initialize=function(e,t){this._websocketManager=e,this._methodManager=t},WorkerDispatcherManager.prototype.isSafeShutdown=function(){return!this._taskQueue.length&&!this._pendingTasks.size},WorkerDispatcherManager.prototype.addWorker=function(e){this._workers.push({id:e.id_worker,ws:e,activeTasks:[]}),this._taskQueue.length&&this.dispatchQueue()},WorkerDispatcherManager.prototype.disconnectWorker=function(t){this._workers=this._workers.filter(function(e){return e.id!==t})},WorkerDispatcherManager.prototype.sendClientTask=function(e,t,r,s){var a="task-"+(0,common_1.objectIdHexString)();this._taskQueue.push({type:"task",taskId:a,messageId:e,method:t,params:r,userContext:s}),s&&s.id_ws&&(this._clientRequests[a]=s.id_ws),this.dispatchQueue()},WorkerDispatcherManager.prototype.sendInternalTask=function(e,t){void 0===t&&(t=[]),Array.isArray(t)||(t=[t]);var r="task-"+(0,common_1.objectIdHexString)();this._taskQueue.push({type:"task",taskId:r,method:e,params:t,messageId:0,userContext:{user:"Internal System"}}),this.dispatchQueue()},WorkerDispatcherManager.prototype.dispatchQueue=function(){var e=this;if(this._taskQueue.length)for(;0<this._taskQueue.length;){var t=this.findAvailableWorker();if(!t)return void setTimeout(function(){e.dispatchQueue()},25);var r=this._taskQueue.shift();this.assignTaskToWorker(t,r)}},WorkerDispatcherManager.prototype.findAvailableWorker=function(){var t=this,e=this._workers.filter(function(e){return e.activeTasks.length<t.MAX_CONCURRENCY});return e.length?(e.sort(function(e,t){return e.activeTasks.map(function(e){return e.weight}).reduce(function(e,t){return e+t},0)-t.activeTasks.map(function(e){return e.weight}).reduce(function(e,t){return e+t},0)}),e[0]):null},WorkerDispatcherManager.prototype.assignTaskToWorker=function(r,s){var a=this,e=this._methodManager.getMethod(s.method);if(e){r.activeTasks.push({taskId:s.taskId,weight:e&&e.workerTaskWeight?e.workerTaskWeight:1});var e={type:"task",taskId:s.taskId,messageId:s.messageId,method:s.method,params:s.params,userContext:s.userContext||{}},t=setTimeout(function(){var e,t;a._pendingTasks.has(s.taskId)&&a._pendingTasks.delete(s.taskId),console.log(new Date,"TIMEOUT HIT","task",s.taskId,s.messageId,s.method,JSON.stringify(a._workers)),r.activeTasks=r.activeTasks.filter(function(e){return e.taskId!==s.taskId}),s.userContext&&s.userContext.id_ws&&(e={messageId:s.messageId,hasError:!0,data:"Task timed out after 2m in WorkerDispatcherManager for method: "+s.method},t=a._websocketManager.getWebSocket(s.userContext.id_ws))&&a._websocketManager.send(t,e)},12e4);this._pendingTasks.set(s.taskId,{timeout:t});try{this.sendWorkerPayload(r.ws,e)}catch(e){console.error("Failed to send task to worker:",e),clearTimeout(t),r.activeTasks=r.activeTasks.filter(function(e){return e.taskId!==s.taskId}),this._taskQueue.unshift(s),this.dispatchQueue()}}else console.error("Failed to send task to worker - Could not find method:",s.method)},WorkerDispatcherManager.prototype.handleWorkerMessage=function(t,r){var s,e,a,o;try{e=JSON.parse(r,common_1.dateReviver)}catch(e){return void console.error("Failed to parse worker message:",r)}"taskComplete"===e.type&&((r=this._workers.find(function(e){return e.id===t}))?(s=e.taskId,a=e.messageId,o=e.error,e=e.result,r.activeTasks=r.activeTasks.filter(function(e){return e.taskId!==s}),(r=this._pendingTasks.get(s))&&(clearTimeout(r.timeout),this._pendingTasks.delete(s)),(r=this._clientRequests[s])&&(a={messageId:a,hasError:!1,data:e},o&&(a.hasError=!0,a.data=e),o=this._websocketManager.getWebSocket(r),this._websocketManager.send(o,a),this._clientRequests[s])&&delete this._clientRequests[s],this._taskQueue.length&&this.dispatchQueue()):console.error("Unknown worker for taskComplete:",t))},WorkerDispatcherManager.prototype.sendWorkerPayload=function(e,t){if("string"!=typeof t&&(t=JSON.stringify(t)),e&&e.readyState===e.OPEN)try{e.send(t)}catch(e){console.error("Failed to send worker response:",e)}else e&&e.close()},WorkerDispatcherManager}();exports.WorkerDispatcherManager=WorkerDispatcherManager;
2
2
  //# sourceMappingURL=worker-dispatcher.manager.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/managers/worker-dispatcher.manager.ts"],"names":["common_1","require","WorkerDispatcherManager","this","_workers","_taskQueue","_clientRequests","_pendingTasks","Map","MAX_CONCURRENCY","create","websocketManager","methodManager","workerDispatcherManager","initialize","prototype","_websocketManager","_methodManager","isSafeShutdown","length","size","addWorker","ws","push","id","activeTasks","dispatchQueue","disconnectWorker","workerId","filter","w","sendClientTask","messageId","method","params","userContext","taskId","objectIdHexString","type","id_ws","sendInternalTask","Array","isArray","user","_this","worker","findAvailableWorker","setTimeout","task","shift","assignTaskToWorker","candidates","x","sort","y","map","a","weight","reduce","b","getMethod","workerTaskWeight","payload","timeoutHandle","timeoutRes","clientWS","has","delete","console","log","Date","JSON","stringify","hasError","data","getWebSocket","send","set","timeout","sendWorkerPayload","err","error","clearTimeout","unshift","handleWorkerMessage","messageStr","taskId_1","result","res","clientReqWS","parse","dateReviver","_a","find","pendingTask","get","clientReqId","readyState","OPEN","close","exports"],"mappings":"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","file":"worker-dispatcher.manager.js","sourcesContent":["import * as WebSocket from 'ws';\nimport { ServerResponseModel, TaskPayload, TaskResponse } from '../models/server-message.model';\nimport { dateReviver, objectIdHexString } from '../util/common';\nimport { MethodManager } from './method.manager';\nimport { WebSocketManager } from './websocket.manager';\n\nexport interface WorkerConnection {\n id: string;\n ws: WebSocket.WebSocket;\n activeTasks: { taskId: string, weight: number }[];\n}\n\nexport class WorkerDispatcherManager {\n\tprivate _websocketManager: WebSocketManager;\n\tprivate _methodManager: MethodManager;\n private _workers: WorkerConnection[] = [];\n\tprivate _taskQueue: TaskPayload[] = [];\n private _clientRequests: { [taskId: string]: string } = {};\n\tprivate _pendingTasks: Map<string, {\n\t\ttimeout: NodeJS.Timeout;\n\t}> = new Map();\n\n private MAX_CONCURRENCY = 4;\n\n constructor() {}\n \n static create(websocketManager: WebSocketManager, methodManager: MethodManager) {\n const workerDispatcherManager = new WorkerDispatcherManager();\n workerDispatcherManager.initialize(websocketManager, methodManager);\n return workerDispatcherManager;\n }\n\n public initialize(websocketManager: WebSocketManager, methodManager: MethodManager) {\n\t\tthis._websocketManager = websocketManager;\n\t\tthis._methodManager = methodManager;\n }\n\n\tpublic isSafeShutdown() {\n\t\treturn !this._taskQueue.length && !this._pendingTasks.size;\n\t}\n\n public addWorker(ws: WebSocket.WebSocket) {\n this._workers.push({\n\t\t\tid: ws['id_worker'],\n\t\t\tws: ws,\n\t\t\tactiveTasks: []\n\t\t});\n\n\t\tif (this._taskQueue.length) {\n\t\t\tthis.dispatchQueue();\n\t\t}\n }\n\n\tpublic disconnectWorker(workerId: string) {\n\t\tthis._workers = this._workers.filter(w => w.id !== workerId);\n\t}\n\n /**\n\t * Add a new task to our in-memory queue and try to dispatch.\n\t */\n\tpublic sendClientTask(messageId: number, method: string, params: any[], userContext?: { id_user?: string; user?: string; id_ws?: string }) {\n\t\tlet taskId = 'task-' + objectIdHexString();\n\n\t\tthis._taskQueue.push({\n\t\t\ttype: 'task',\n\t\t\ttaskId,\n\t\t\tmessageId,\n\t\t\tmethod,\n\t\t\tparams,\n\t\t\tuserContext\n\t\t});\n\n\t\tif (userContext && userContext.id_ws) {\n\t\t\t// console.log(new Date(), 'Send Client Task', userContext, taskId);\n\t\t\tthis._clientRequests[taskId] = userContext.id_ws;\n\t\t}\n\n\t\tthis.dispatchQueue();\n\t}\n\n\tpublic sendInternalTask(method: string, params = []) {\n\t\tif (!Array.isArray(params)) {\n\t\t\tparams = [params];\n\t\t}\n\n\t\tlet taskId = 'task-' + objectIdHexString();\n\n\t\tthis._taskQueue.push({\n\t\t\ttype: 'task',\n\t\t\ttaskId,\n\t\t\tmethod,\n\t\t\tparams,\n\t\t\tmessageId: 0,\n\t\t\tuserContext: {\n\t\t\t\tuser: 'Internal System'\n\t\t\t}\n\t\t});\n\n\t\tthis.dispatchQueue();\n\t}\n\n\t/**\n\t * The main loop that assigns tasks from _taskQueue to any worker that has capacity.\n\t */\n\tprivate dispatchQueue() {\n\t\tif (!this._taskQueue.length) {\n\t\t\treturn;\n\t\t}\n\n\t\twhile (this._taskQueue.length > 0) {\n\t\t\tlet worker = this.findAvailableWorker();\n\n\t\t\tif (!worker) {\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tthis.dispatchQueue();\n\t\t\t\t}, 25);\n\t\t\t\t\n\t\t\t\treturn; // no worker can take more tasks\n\t\t\t}\n\n\t\t\t// Remove from queue\n\t\t\tlet task = this._taskQueue.shift();\n\t\t\tthis.assignTaskToWorker(worker, task);\n\t\t}\n\t}\n\n\t/**\n\t * Returns the worker with the fewest activeTasks that is under maxConcurrency. Or null if none.\n\t */\n\tprivate findAvailableWorker(): WorkerConnection | null {\n\t\tlet candidates = this._workers.filter(x => x.activeTasks.length < this.MAX_CONCURRENCY);\n\t\tif (!candidates.length) {\n\t\t\treturn null;\n\t\t}\n\n\t\t// Sort by how busy they are\n\t\tcandidates.sort((x, y) => x.activeTasks.map(a => a.weight).reduce((a, b) => a + b, 0) - y.activeTasks.map(a => a.weight).reduce((a, b) => a + b, 0));\n\t\t// console.log('Best Candidate', JSON.stringify(candidates[0], null, 2));\n\t\treturn candidates[0];\n\t}\n\n\tprivate assignTaskToWorker(worker: WorkerConnection, task: TaskPayload) {\n\t\tlet method = this._methodManager.getMethod(task.method);\n\n\t\tif (!method) {\n\t\t\tconsole.error('Failed to send task to worker - Could not find method:', task.method);\n\t\t\treturn;\n\t\t}\n\n\t\tworker.activeTasks.push({\n\t\t\ttaskId: task.taskId,\n\t\t\tweight: method && method.workerTaskWeight ? method.workerTaskWeight : 1\n\t\t});\n\n\t\tlet payload: TaskPayload = {\n\t\t\ttype: 'task',\n\t\t\ttaskId: task.taskId,\n\t\t\tmessageId: task.messageId,\n\t\t\tmethod: task.method,\n\t\t\tparams: task.params,\n\t\t\tuserContext: task.userContext || {}\n\t\t};\n\n\t\tlet timeoutHandle = setTimeout(() => {\n\t\t\tif (this._pendingTasks.has(task.taskId)) {\n\t\t\t\tthis._pendingTasks.delete(task.taskId);\n\t\t\t}\n\n\t\t\tconsole.log(new Date(), 'TIMEOUT HIT', 'task', task.taskId, task.messageId, task.method, JSON.stringify(this._workers));\n\n\t\t\tworker.activeTasks = worker.activeTasks.filter(a => a.taskId !== task.taskId);\n\n\t\t\tif (task.userContext && task.userContext.id_ws) {\n\t\t\t\tlet timeoutRes: ServerResponseModel = {\n\t\t\t\t\tmessageId: task.messageId,\n\t\t\t\t\thasError: true,\n\t\t\t\t\tdata: 'Task timed out after 2m in WorkerDispatcherManager for method: ' + task.method\n\t\t\t\t};\n\n\t\t\t\tlet clientWS = this._websocketManager.getWebSocket(task.userContext.id_ws);\n\n\t\t\t\tif (clientWS) {\n\t\t\t\t\tthis._websocketManager.send(clientWS, timeoutRes);\n\t\t\t\t}\n\t\t\t}\n\t\t}, 120000);\n\n\t\tthis._pendingTasks.set(task.taskId, {\n\t\t\ttimeout: timeoutHandle\n\t\t});\n\n\t\t// console.log(new Date(), 'Sending Worker Msg', 'task', process.env.NODE_APP_INSTANCE, task.taskId, task.messageId, task.method, JSON.stringify(this._workers.map(a => a.activeTasks)));\n\n\t\ttry {\n\t\t\tthis.sendWorkerPayload(worker.ws, payload);\n\t\t}\n\t\tcatch (err) {\n\t\t\tconsole.error('Failed to send task to worker:', err);\n\n\t\t\tclearTimeout(timeoutHandle);\n\n\t\t\tworker.activeTasks = worker.activeTasks.filter(a => a.taskId !== task.taskId);\n\n\t\t\t// Put task back at front\n\t\t\tthis._taskQueue.unshift(task);\n\n\t\t\tthis.dispatchQueue();\n\t\t}\n\t}\n\n\t/**\n\t * Handle messages coming back from a worker (like 'taskComplete').\n\t */\n\tpublic handleWorkerMessage(workerId: string, messageStr: string) {\n\t\tlet data: TaskResponse;\n\t\t\n\t\ttry {\n\t\t\tdata = JSON.parse(messageStr, dateReviver);\n\t\t}\n\t\tcatch {\n\t\t\tconsole.error('Failed to parse worker message:', messageStr);\n\t\t\treturn;\n\t\t}\n\n\t\t// console.log('Recv Worker Msg', data.type, data.taskId, data.messageId, data.error);\n\n\t\tif (data.type === 'taskComplete') {\n\t\t\tlet worker = this._workers.find(x => x.id === workerId);\n\t\t\tif (!worker) {\n\t\t\t\tconsole.error('Unknown worker for taskComplete:', workerId);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t\n\t\t\tlet { taskId, messageId, error, result } = data;\n\n\t\t\t// console.log(new Date(), 'Handle Worker Msg', 'taskComplete', process.env.NODE_APP_INSTANCE, taskId, JSON.stringify(this._workers.map(a => a.activeTasks)));\n\t\t\t\n\t\t\tworker.activeTasks = worker.activeTasks.filter(a => a.taskId !== taskId);\n\n\t\t\tlet pendingTask = this._pendingTasks.get(taskId);\n\t\t\tif (pendingTask) {\n\t\t\t\tclearTimeout(pendingTask.timeout);\n\t\t\t\tthis._pendingTasks.delete(taskId);\n\t\t\t}\n\n\t\t\t// Look up original request\n\t\t\tlet clientReqId = this._clientRequests[taskId];\n\t\t\t\n\t\t\tif (clientReqId) {\n\t\t\t\t// Send the final response to the client\n\t\t\t\tlet res: ServerResponseModel = {\n\t\t\t\t\tmessageId: messageId,\n\t\t\t\t\thasError: false,\n\t\t\t\t\tdata: result\n\t\t\t\t};\n\n\t\t\t\tif (error) {\n\t\t\t\t\tres.hasError = true;\n\t\t\t\t\tres.data = result;\n\t\t\t\t}\n\n\t\t\t\tlet clientReqWS = this._websocketManager.getWebSocket(clientReqId);\n\n\t\t\t\tthis._websocketManager.send(clientReqWS, res);\n\n\t\t\t\tif (this._clientRequests[taskId]) {\n\t\t\t\t\tdelete this._clientRequests[taskId];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Try to dispatch more from the queue\n\t\t\tif (this._taskQueue.length) {\n\t\t\t\tthis.dispatchQueue();\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic sendWorkerPayload(ws: WebSocket.WebSocket, payload: TaskPayload | string) {\n if (typeof payload !== 'string') {\n payload = JSON.stringify(payload);\n }\n\n\t\t// console.log('Sending', payload);\n\n if (ws && ws.readyState === ws.OPEN) {\n try {\n ws.send(payload);\n }\n catch (err) {\n console.error('Failed to send worker response:', err);\n }\n }\n else if (ws) {\n ws.close();\n }\n }\n}"]}
1
+ {"version":3,"sources":["../../src/managers/worker-dispatcher.manager.ts"],"names":["common_1","require","WorkerDispatcherManager","this","_workers","_taskQueue","_clientRequests","_pendingTasks","Map","MAX_CONCURRENCY","create","websocketManager","methodManager","workerDispatcherManager","initialize","prototype","_websocketManager","_methodManager","isSafeShutdown","length","size","addWorker","ws","push","id","activeTasks","dispatchQueue","disconnectWorker","workerId","filter","w","sendClientTask","messageId","method","params","userContext","taskId","objectIdHexString","type","id_ws","sendInternalTask","Array","isArray","user","_this","worker","findAvailableWorker","setTimeout","task","shift","assignTaskToWorker","candidates","x","sort","y","map","a","weight","reduce","b","getMethod","workerTaskWeight","payload","timeoutHandle","timeoutRes","clientWS","has","delete","console","log","Date","JSON","stringify","hasError","data","getWebSocket","send","set","timeout","sendWorkerPayload","err","error","clearTimeout","unshift","handleWorkerMessage","messageStr","taskId_1","result","res","clientReqWS","parse","dateReviver","_a","find","pendingTask","get","clientReqId","readyState","OPEN","close","exports"],"mappings":"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","file":"worker-dispatcher.manager.js","sourcesContent":["import * as WebSocket from 'ws';\nimport { ServerResponseModel, TaskPayload, TaskResponse } from '../models/server-message.model';\nimport { dateReviver, objectIdHexString } from '../util/common';\nimport { MethodManager } from './method.manager';\nimport { WebSocketManager } from './websocket.manager';\n\nexport interface WorkerConnection {\n id: string;\n ws: WebSocket.WebSocket;\n activeTasks: { taskId: string, weight: number }[];\n}\n\nexport class WorkerDispatcherManager {\n\tprivate _websocketManager: WebSocketManager;\n\tprivate _methodManager: MethodManager;\n private _workers: WorkerConnection[] = [];\n\tprivate _taskQueue: TaskPayload[] = [];\n private _clientRequests: { [taskId: string]: string } = {};\n\tprivate _pendingTasks: Map<string, {\n\t\ttimeout: NodeJS.Timeout;\n\t}> = new Map();\n\n private MAX_CONCURRENCY = 10;\n\n constructor() {}\n \n static create(websocketManager: WebSocketManager, methodManager: MethodManager) {\n const workerDispatcherManager = new WorkerDispatcherManager();\n workerDispatcherManager.initialize(websocketManager, methodManager);\n return workerDispatcherManager;\n }\n\n public initialize(websocketManager: WebSocketManager, methodManager: MethodManager) {\n\t\tthis._websocketManager = websocketManager;\n\t\tthis._methodManager = methodManager;\n }\n\n\tpublic isSafeShutdown() {\n\t\treturn !this._taskQueue.length && !this._pendingTasks.size;\n\t}\n\n public addWorker(ws: WebSocket.WebSocket) {\n this._workers.push({\n\t\t\tid: ws['id_worker'],\n\t\t\tws: ws,\n\t\t\tactiveTasks: []\n\t\t});\n\n\t\tif (this._taskQueue.length) {\n\t\t\tthis.dispatchQueue();\n\t\t}\n }\n\n\tpublic disconnectWorker(workerId: string) {\n\t\tthis._workers = this._workers.filter(w => w.id !== workerId);\n\t}\n\n /**\n\t * Add a new task to our in-memory queue and try to dispatch.\n\t */\n\tpublic sendClientTask(messageId: number, method: string, params: any[], userContext?: { id_user?: string; user?: string; id_ws?: string }) {\n\t\tlet taskId = 'task-' + objectIdHexString();\n\n\t\tthis._taskQueue.push({\n\t\t\ttype: 'task',\n\t\t\ttaskId,\n\t\t\tmessageId,\n\t\t\tmethod,\n\t\t\tparams,\n\t\t\tuserContext\n\t\t});\n\n\t\tif (userContext && userContext.id_ws) {\n\t\t\t// console.log(new Date(), 'Send Client Task', userContext, taskId);\n\t\t\tthis._clientRequests[taskId] = userContext.id_ws;\n\t\t}\n\n\t\tthis.dispatchQueue();\n\t}\n\n\tpublic sendInternalTask(method: string, params = []) {\n\t\tif (!Array.isArray(params)) {\n\t\t\tparams = [params];\n\t\t}\n\n\t\tlet taskId = 'task-' + objectIdHexString();\n\n\t\tthis._taskQueue.push({\n\t\t\ttype: 'task',\n\t\t\ttaskId,\n\t\t\tmethod,\n\t\t\tparams,\n\t\t\tmessageId: 0,\n\t\t\tuserContext: {\n\t\t\t\tuser: 'Internal System'\n\t\t\t}\n\t\t});\n\n\t\tthis.dispatchQueue();\n\t}\n\n\t/**\n\t * The main loop that assigns tasks from _taskQueue to any worker that has capacity.\n\t */\n\tprivate dispatchQueue() {\n\t\tif (!this._taskQueue.length) {\n\t\t\treturn;\n\t\t}\n\n\t\twhile (this._taskQueue.length > 0) {\n\t\t\tlet worker = this.findAvailableWorker();\n\n\t\t\tif (!worker) {\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tthis.dispatchQueue();\n\t\t\t\t}, 25);\n\t\t\t\t\n\t\t\t\treturn; // no worker can take more tasks\n\t\t\t}\n\n\t\t\t// Remove from queue\n\t\t\tlet task = this._taskQueue.shift();\n\t\t\tthis.assignTaskToWorker(worker, task);\n\t\t}\n\t}\n\n\t/**\n\t * Returns the worker with the fewest activeTasks that is under maxConcurrency. Or null if none.\n\t */\n\tprivate findAvailableWorker(): WorkerConnection | null {\n\t\tlet candidates = this._workers.filter(x => x.activeTasks.length < this.MAX_CONCURRENCY);\n\t\tif (!candidates.length) {\n\t\t\treturn null;\n\t\t}\n\n\t\t// Sort by how busy they are\n\t\tcandidates.sort((x, y) => x.activeTasks.map(a => a.weight).reduce((a, b) => a + b, 0) - y.activeTasks.map(a => a.weight).reduce((a, b) => a + b, 0));\n\t\t// console.log('Best Candidate', JSON.stringify(candidates[0], null, 2));\n\t\treturn candidates[0];\n\t}\n\n\tprivate assignTaskToWorker(worker: WorkerConnection, task: TaskPayload) {\n\t\tlet method = this._methodManager.getMethod(task.method);\n\n\t\tif (!method) {\n\t\t\tconsole.error('Failed to send task to worker - Could not find method:', task.method);\n\t\t\treturn;\n\t\t}\n\n\t\tworker.activeTasks.push({\n\t\t\ttaskId: task.taskId,\n\t\t\tweight: method && method.workerTaskWeight ? method.workerTaskWeight : 1\n\t\t});\n\n\t\tlet payload: TaskPayload = {\n\t\t\ttype: 'task',\n\t\t\ttaskId: task.taskId,\n\t\t\tmessageId: task.messageId,\n\t\t\tmethod: task.method,\n\t\t\tparams: task.params,\n\t\t\tuserContext: task.userContext || {}\n\t\t};\n\n\t\tlet timeoutHandle = setTimeout(() => {\n\t\t\tif (this._pendingTasks.has(task.taskId)) {\n\t\t\t\tthis._pendingTasks.delete(task.taskId);\n\t\t\t}\n\n\t\t\tconsole.log(new Date(), 'TIMEOUT HIT', 'task', task.taskId, task.messageId, task.method, JSON.stringify(this._workers));\n\n\t\t\tworker.activeTasks = worker.activeTasks.filter(a => a.taskId !== task.taskId);\n\n\t\t\tif (task.userContext && task.userContext.id_ws) {\n\t\t\t\tlet timeoutRes: ServerResponseModel = {\n\t\t\t\t\tmessageId: task.messageId,\n\t\t\t\t\thasError: true,\n\t\t\t\t\tdata: 'Task timed out after 2m in WorkerDispatcherManager for method: ' + task.method\n\t\t\t\t};\n\n\t\t\t\tlet clientWS = this._websocketManager.getWebSocket(task.userContext.id_ws);\n\n\t\t\t\tif (clientWS) {\n\t\t\t\t\tthis._websocketManager.send(clientWS, timeoutRes);\n\t\t\t\t}\n\t\t\t}\n\t\t}, 120000);\n\n\t\tthis._pendingTasks.set(task.taskId, {\n\t\t\ttimeout: timeoutHandle\n\t\t});\n\n\t\t// console.log(new Date(), 'Sending Worker Msg', 'task', process.env.NODE_APP_INSTANCE, task.taskId, task.messageId, task.method, JSON.stringify(this._workers.map(a => a.activeTasks)));\n\n\t\ttry {\n\t\t\tthis.sendWorkerPayload(worker.ws, payload);\n\t\t}\n\t\tcatch (err) {\n\t\t\tconsole.error('Failed to send task to worker:', err);\n\n\t\t\tclearTimeout(timeoutHandle);\n\n\t\t\tworker.activeTasks = worker.activeTasks.filter(a => a.taskId !== task.taskId);\n\n\t\t\t// Put task back at front\n\t\t\tthis._taskQueue.unshift(task);\n\n\t\t\tthis.dispatchQueue();\n\t\t}\n\t}\n\n\t/**\n\t * Handle messages coming back from a worker (like 'taskComplete').\n\t */\n\tpublic handleWorkerMessage(workerId: string, messageStr: string) {\n\t\tlet data: TaskResponse;\n\t\t\n\t\ttry {\n\t\t\tdata = JSON.parse(messageStr, dateReviver);\n\t\t}\n\t\tcatch {\n\t\t\tconsole.error('Failed to parse worker message:', messageStr);\n\t\t\treturn;\n\t\t}\n\n\t\t// console.log('Recv Worker Msg', data.type, data.taskId, data.messageId, data.error);\n\n\t\tif (data.type === 'taskComplete') {\n\t\t\tlet worker = this._workers.find(x => x.id === workerId);\n\t\t\tif (!worker) {\n\t\t\t\tconsole.error('Unknown worker for taskComplete:', workerId);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t\n\t\t\tlet { taskId, messageId, error, result } = data;\n\n\t\t\t// console.log(new Date(), 'Handle Worker Msg', 'taskComplete', process.env.NODE_APP_INSTANCE, taskId, JSON.stringify(this._workers.map(a => a.activeTasks)));\n\t\t\t\n\t\t\tworker.activeTasks = worker.activeTasks.filter(a => a.taskId !== taskId);\n\n\t\t\tlet pendingTask = this._pendingTasks.get(taskId);\n\t\t\tif (pendingTask) {\n\t\t\t\tclearTimeout(pendingTask.timeout);\n\t\t\t\tthis._pendingTasks.delete(taskId);\n\t\t\t}\n\n\t\t\t// Look up original request\n\t\t\tlet clientReqId = this._clientRequests[taskId];\n\t\t\t\n\t\t\tif (clientReqId) {\n\t\t\t\t// Send the final response to the client\n\t\t\t\tlet res: ServerResponseModel = {\n\t\t\t\t\tmessageId: messageId,\n\t\t\t\t\thasError: false,\n\t\t\t\t\tdata: result\n\t\t\t\t};\n\n\t\t\t\tif (error) {\n\t\t\t\t\tres.hasError = true;\n\t\t\t\t\tres.data = result;\n\t\t\t\t}\n\n\t\t\t\tlet clientReqWS = this._websocketManager.getWebSocket(clientReqId);\n\n\t\t\t\tthis._websocketManager.send(clientReqWS, res);\n\n\t\t\t\tif (this._clientRequests[taskId]) {\n\t\t\t\t\tdelete this._clientRequests[taskId];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Try to dispatch more from the queue\n\t\t\tif (this._taskQueue.length) {\n\t\t\t\tthis.dispatchQueue();\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic sendWorkerPayload(ws: WebSocket.WebSocket, payload: TaskPayload | string) {\n if (typeof payload !== 'string') {\n payload = JSON.stringify(payload);\n }\n\n\t\t// console.log('Sending', payload);\n\n if (ws && ws.readyState === ws.OPEN) {\n try {\n ws.send(payload);\n }\n catch (err) {\n console.error('Failed to send worker response:', err);\n }\n }\n else if (ws) {\n ws.close();\n }\n }\n}"]}
package/methods/pdf.js CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";var __awaiter=this&&this.__awaiter||function(t,a,r,i){return new(r=r||Promise)(function(n,e){function fulfilled(t){try{step(i.next(t))}catch(t){e(t)}}function rejected(t){try{step(i.throw(t))}catch(t){e(t)}}function step(t){var e;t.done?n(t.value):((e=t.value)instanceof r?e:new r(function(t){t(e)})).then(fulfilled,rejected)}step((i=i.apply(t,a||[])).next())})},__generator=this&&this.__generator||function(a,r){var i,s,o,l={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]},f={next:verb(0),throw:verb(1),return:verb(2)};return"function"==typeof Symbol&&(f[Symbol.iterator]=function(){return this}),f;function verb(n){return function(t){var e=[n,t];if(i)throw new TypeError("Generator is already executing.");for(;l=f&&e[f=0]?0:l;)try{if(i=1,s&&(o=2&e[0]?s.return:e[0]?s.throw||((o=s.return)&&o.call(s),0):s.next)&&!(o=o.call(s,e[1])).done)return o;switch(s=0,(e=o?[2&e[0],o.value]:e)[0]){case 0:case 1:o=e;break;case 4:return l.label++,{value:e[1],done:!1};case 5:l.label++,s=e[1],e=[0];continue;case 7:e=l.ops.pop(),l.trys.pop();continue;default:if(!(o=0<(o=l.trys).length&&o[o.length-1])&&(6===e[0]||2===e[0])){l=0;continue}if(3===e[0]&&(!o||e[1]>o[0]&&e[1]<o[3]))l.label=e[1];else if(6===e[0]&&l.label<o[1])l.label=o[1],o=e;else{if(!(o&&l.label<o[2])){o[2]&&l.ops.pop(),l.trys.pop();continue}l.label=o[2],l.ops.push(e)}}e=r.call(a,l)}catch(t){e=[6,t],s=0}finally{i=o=0}if(5&e[0])throw e[1];return{value:e[0]?e[1]:void 0,done:!0}}}},fs=(Object.defineProperty(exports,"__esModule",{value:!0}),exports.loadPDFMethods=void 0,require("fs")),path=require("path"),pdf_lib_1=require("pdf-lib"),puppeteer=require("puppeteer"),simpl_schema_1=require("simpl-schema"),flag_collection_1=require("../collections/flag.collection"),pdfCnt=0;function loadPDFMethods(t){t.methods({generatePDF:{check:new simpl_schema_1.default({html:{type:String},fileName:{type:String},orientation:{type:String,optional:!0},fontSize:{type:String,optional:!0},upload:{type:Boolean,optional:!0},uploadFileOrder:{type:Number,optional:!0},uploadFileType:{type:String,optional:!0}}),function:function(p,g,u,h,b,w,m){return void 0===u&&(u="portrait"),void 0===h&&(h="12px"),void 0===b&&(b=!1),void 0===w&&(w=-1),void 0===m&&(m=""),__awaiter(this,void 0,void 0,function(){var e,n,a,r,i,s,o,l,f,c,d;return __generator(this,function(t){switch(t.label){case 0:return e=["--disable-dev-shm-usage","--no-sandbox","--disable-setuid-sandbox","--disable-accelerated-2d-canvas","--disable-gpu","--allow-file-access-from-files","--enable-local-file-accesses","--font-render-hinting=none"],n=null,[4,flag_collection_1.Flags.findOne({type:"Enable Debug PDF"})];case 1:return(a=t.sent())&&a.value?[4,puppeteer.launch({headless:!1,devtools:!0,args:e,ignoreDefaultArgs:["--disable-extensions"]})]:[3,3];case 2:return n=t.sent(),[3,5];case 3:return[4,puppeteer.launch({headless:!0,devtools:!1,args:e,ignoreDefaultArgs:["--disable-extensions"]})];case 4:n=t.sent(),t.label=5;case 5:return[4,n.newPage()];case 6:return r=t.sent(),o="",o=fs.existsSync(path.join(__dirname,"../private/fonts/dejavuserif.woff"))?path.join(__dirname,"../private/fonts/"):fs.existsSync(path.join(this.clientDir,"./private/fonts/dejavuserif.woff"))?path.join(this.clientDir,"./private/fonts/"):"/usr/share/fonts/dejavu/",l="data:application/font-woff;base64,"+Buffer.from(fs.readFileSync(o+"dejavuserif.woff").buffer).toString("base64"),i="data:application/font-woff;base64,"+Buffer.from(fs.readFileSync(o+"dejavuserif-bold.woff").buffer).toString("base64"),s="data:application/font-woff;base64,"+Buffer.from(fs.readFileSync(o+"dejavuserif-italic.woff").buffer).toString("base64"),o="data:application/font-woff;base64,"+Buffer.from(fs.readFileSync(o+"dejavuserif-bolditalic.woff").buffer).toString("base64"),l='\n\t\t\t\t\t<head>\n\t\t\t\t\t\t<style type="text/css">\n\t\t\t\t\t\t\t@font-face {\n\t\t\t\t\t\t\t\tfont-family: \'Dejavu Serif\';\n\t\t\t\t\t\t\t\tfont-style: normal;\n\t\t\t\t\t\t\t\tfont-weight: normal;\n\t\t\t\t\t\t\t\tsrc: url("'+l+"\") format('woff');\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t@font-face {\n\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif';\n\t\t\t\t\t\t\t\tfont-style: normal;\n\t\t\t\t\t\t\t\tfont-weight: bold;\n\t\t\t\t\t\t\t\tsrc: url(\""+i+"\") format('woff');\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t@font-face {\n\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif';\n\t\t\t\t\t\t\t\tfont-style: italic;\n\t\t\t\t\t\t\t\tfont-weight: normal;\n\t\t\t\t\t\t\t\tsrc: url(\""+s+"\") format('woff');\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t@font-face {\n\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif';\n\t\t\t\t\t\t\t\tfont-style: italic;\n\t\t\t\t\t\t\t\tfont-weight: bold;\n\t\t\t\t\t\t\t\tsrc: url(\""+o+"\") format('woff');\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tbody {\n\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif', serif;\n\t\t\t\t\t\t\t\tfont-size: "+(h||"12px")+";\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t.row {\n\t\t\t\t\t\t\t\tdisplay: -webkit-flex;\n\t\t\t\t\t\t\t\tdisplay: flex;\n\t\t\t\t\t\t\t\tflex-wrap: wrap;\n\t\t\t\t\t\t\t\t-webkit-flex-wrap: wrap;\n\t\t\t\t\t\t\t\tpage-break-inside: avoid !important;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t.page-break {\n\t\t\t\t\t\t\t\tpage-break-before: always !important;\n\t\t\t\t\t\t\t\tpadding-top: 1px;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t.cell {\n\t\t\t\t\t\t\t\tbox-sizing: border-box;\n\t\t\t\t\t\t\t\tpadding : 2px;\n\t\t\t\t\t\t\t\t-webkit-flex: 1;\n\t\t\t\t\t\t\t\tword-wrap: break-word;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t.cell-no-padding {\n\t\t\t\t\t\t\t\tbox-sizing: border-box;\n\t\t\t\t\t\t\t\t-webkit-flex: 1;\n\t\t\t\t\t\t\t\tword-wrap: break-word;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t.centered {\n\t\t\t\t\t\t\t\t-webkit-justify-content: center;\n\t\t\t\t\t\t\t\t-webkit-align-items: center;\n\t\t\t\t\t\t\t\tdisplay: -webkit-flex;\n\t\t\t\t\t\t\t\ttext-align: center;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t.centered-left {\n\t\t\t\t\t\t\t\t-webkit-align-items: center;\n\t\t\t\t\t\t\t\tdisplay: -webkit-flex;\n\t\t\t\t\t\t\t\t-webkit-justify-content: flex-start;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t.centered-right {\n\t\t\t\t\t\t\t\t-webkit-justify-content: flex-end;\n\t\t\t\t\t\t\t\t-webkit-align-items: center;\n\t\t\t\t\t\t\t\tdisplay: -webkit-flex;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t.box {\n\t\t\t\t\t\t\t\tborder: 1px solid black;\n\t\t\t\t\t\t\t\tmargin: -1px 0px 0px -1px;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t.boxNoBorder {\n\t\t\t\t\t\t\t\tmargin: -1px 0px 0px -1px;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tpre {\n\t\t\t\t\t\t\t\twhite-space: pre-wrap; /* css-3 */\n\t\t\t\t\t\t\t\twhite-space: -moz-pre-wrap; /* Mozilla, since 1999 */\n\t\t\t\t\t\t\t\twhite-space: -pre-wrap; /* Opera 4-6 */\n\t\t\t\t\t\t\t\twhite-space: -o-pre-wrap; /* Opera 7 */\n\t\t\t\t\t\t\t\tword-wrap: break-word; /* Internet Explorer 5.5+ */\n\t\t\t\t\t\t\t\tfont-size: 12px;\n\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif'; \n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t</style>\n\t\t\t\t\t</head>\n\t\t\t\t\t<body>\n\t\t\t\t"+p.replace(new RegExp("flex-basis:","g"),"-webkit-flex-basis:").replace(new RegExp("flex:","g"),"-webkit-flex:")+"</body>",[4,r.setContent(l,{waitUntil:["domcontentloaded","load","networkidle0"]})];case 7:return t.sent(),[4,r.evaluateHandle("document.fonts.ready")];case 8:return t.sent(),f=pdfCnt+++"-"+g.replace(new RegExp(/[^0-9\.a-zA-Z]/g),""),[4,r.pdf({scale:1,landscape:"portrait"!==u,format:"letter",margin:{top:"1cm",bottom:"1cm",left:"1cm",right:"1cm"},printBackground:!0,displayHeaderFooter:!0,headerTemplate:"\n\t\t\t\t\t\t<style>\n\t\t\t\t\t\t\t#header { \n\t\t\t\t\t\t\t\tpadding: 0 0 10px 10px !important; \n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t</style>\n\t\t\t\t\t\t<span></span>\n\t\t\t\t\t",footerTemplate:'\n\t\t\t\t\t\t<style>\n\t\t\t\t\t\t\t#footer { \n\t\t\t\t\t\t\t\tpadding: 0 0 10px 10px !important;\n\t\t\t\t\t\t\t\tfont-size: 10px;\n\t\t\t\t\t\t\t\tfont-family: san-serif;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t</style>\n\t\t\t\t\t\t<div style="padding-bottom: 2px; padding-right: 15px; text-align: right; width: 100%;">\n\t\t\t\t\t\t\tPage&nbsp;<span class="pageNumber"></span>&nbsp;of&nbsp;<span class="totalPages"></span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t',path:path.join(__dirname,f),timeout:0})];case 9:return(t.sent(),a&&a.value)?"landscape"!==u?[3,11]:[4,r.setViewport({width:1100,height:850})]:[3,13];case 10:return t.sent(),[3,13];case 11:return[4,r.setViewport({width:850,height:1100})];case 12:t.sent(),t.label=13;case 13:return[4,n.close()];case 14:if(t.sent(),!fs.existsSync(path.join(__dirname,f)))throw console.log("No tmp file ",f),new Error("Error in Generate PDF: No tmp file");try{return c=fs.readFileSync(path.join(__dirname,f)),fs.unlinkSync(path.join(__dirname,f)),b?(d="data:application/pdf;base64,"+Buffer.from(c).toString("base64"),[2,this.callMethod("uploadFileAndSave",g,d,4*Math.ceil(d.length/3),null!==w?w:-1,m,!1)]):[2,"data:application/pdf;base64,"+Buffer.from(c).toString("base64")]}catch(t){throw t.message="Error in Generate PDF: No file - "+t.message,t}return[2]}})})},workerTaskWeight:3},generatePDFNoPageNumber:{check:new simpl_schema_1.default({html:{type:String},fileName:{type:String},orientation:{type:String,optional:!0},fontSize:{type:String,optional:!0},upload:{type:Boolean,optional:!0},uploadFileOrder:{type:Number,optional:!0},uploadFileType:{type:String,optional:!0}}),function:function(d,p,g,u,h,b,w){return void 0===g&&(g="portrait"),void 0===u&&(u="12px"),void 0===h&&(h=!1),void 0===b&&(b=-1),void 0===w&&(w=""),__awaiter(this,void 0,void 0,function(){var e,n,a,r,i,s,o,l,f,c;return __generator(this,function(t){switch(t.label){case 0:return a=["--disable-dev-shm-usage","--no-sandbox","--disable-setuid-sandbox","--disable-accelerated-2d-canvas","--disable-gpu","--allow-file-access-from-files","--enable-local-file-accesses","--font-render-hinting=none"],[4,puppeteer.launch({headless:!0,devtools:!1,args:a,ignoreDefaultArgs:["--disable-extensions"]})];case 1:return[4,(e=t.sent()).newPage()];case 2:return n=t.sent(),a="",a=fs.existsSync(path.join(__dirname,"../private/fonts/dejavuserif.woff"))?path.join(__dirname,"../private/fonts/"):fs.existsSync(path.join(this.clientDir,"./private/fonts/dejavuserif.woff"))?path.join(this.clientDir,"./private/fonts/"):"/usr/share/fonts/dejavu/",o="data:application/font-woff;base64,"+Buffer.from(fs.readFileSync(a+"dejavuserif.woff").buffer).toString("base64"),r="data:application/font-woff;base64,"+Buffer.from(fs.readFileSync(a+"dejavuserif-bold.woff").buffer).toString("base64"),i="data:application/font-woff;base64,"+Buffer.from(fs.readFileSync(a+"dejavuserif-italic.woff").buffer).toString("base64"),s="data:application/font-woff;base64,"+Buffer.from(fs.readFileSync(a+"dejavuserif-bolditalic.woff").buffer).toString("base64"),o='\n\t\t\t\t\t<head>\n\t\t\t\t\t\t<style type="text/css">\n\t\t\t\t\t\t\t@font-face {\n\t\t\t\t\t\t\t\tfont-family: \'Dejavu Serif\';\n\t\t\t\t\t\t\t\tfont-style: normal;\n\t\t\t\t\t\t\t\tfont-weight: normal;\n\t\t\t\t\t\t\t\tsrc: url("'+o+"\") format('woff');\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t@font-face {\n\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif';\n\t\t\t\t\t\t\t\tfont-style: normal;\n\t\t\t\t\t\t\t\tfont-weight: bold;\n\t\t\t\t\t\t\t\tsrc: url(\""+r+"\") format('woff');\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t@font-face {\n\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif';\n\t\t\t\t\t\t\t\tfont-style: italic;\n\t\t\t\t\t\t\t\tfont-weight: normal;\n\t\t\t\t\t\t\t\tsrc: url(\""+i+"\") format('woff');\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t@font-face {\n\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif';\n\t\t\t\t\t\t\t\tfont-style: italic;\n\t\t\t\t\t\t\t\tfont-weight: bold;\n\t\t\t\t\t\t\t\tsrc: url(\""+s+"\") format('woff');\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tbody {\n\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif', serif;\n\t\t\t\t\t\t\t\tfont-size: "+(u||"12px")+";\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t.row {\n\t\t\t\t\t\t\t\tdisplay: -webkit-flex;\n\t\t\t\t\t\t\t\tdisplay: flex;\n\t\t\t\t\t\t\t\tflex-wrap: wrap;\n\t\t\t\t\t\t\t\t-webkit-flex-wrap: wrap;\n\t\t\t\t\t\t\t\tpage-break-inside: avoid !important;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t.page-break {\n\t\t\t\t\t\t\t\tpage-break-before: always !important;\n\t\t\t\t\t\t\t\tpadding-top: 1px;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t.cell {\n\t\t\t\t\t\t\t\tbox-sizing: border-box;\n\t\t\t\t\t\t\t\tpadding : 2px;\n\t\t\t\t\t\t\t\t-webkit-flex: 1;\n\t\t\t\t\t\t\t\tword-wrap: break-word;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t.cell-no-padding {\n\t\t\t\t\t\t\t\tbox-sizing: border-box;\n\t\t\t\t\t\t\t\t-webkit-flex: 1;\n\t\t\t\t\t\t\t\tword-wrap: break-word;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t.centered {\n\t\t\t\t\t\t\t\t-webkit-justify-content: center;\n\t\t\t\t\t\t\t\t-webkit-align-items: center;\n\t\t\t\t\t\t\t\tdisplay: -webkit-flex;\n\t\t\t\t\t\t\t\ttext-align: center;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t.centered-left {\n\t\t\t\t\t\t\t\t-webkit-align-items: center;\n\t\t\t\t\t\t\t\tdisplay: -webkit-flex;\n\t\t\t\t\t\t\t\t-webkit-justify-content: flex-start;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t.centered-right {\n\t\t\t\t\t\t\t\t-webkit-justify-content: flex-end;\n\t\t\t\t\t\t\t\t-webkit-align-items: center;\n\t\t\t\t\t\t\t\tdisplay: -webkit-flex;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t.box {\n\t\t\t\t\t\t\t\tborder: 1px solid black;\n\t\t\t\t\t\t\t\tmargin: -1px 0px 0px -1px;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t.boxNoBorder {\n\t\t\t\t\t\t\t\tmargin: -1px 0px 0px -1px;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tpre {\n\t\t\t\t\t\t\t\twhite-space: pre-wrap; /* css-3 */\n\t\t\t\t\t\t\t\twhite-space: -moz-pre-wrap; /* Mozilla, since 1999 */\n\t\t\t\t\t\t\t\twhite-space: -pre-wrap; /* Opera 4-6 */\n\t\t\t\t\t\t\t\twhite-space: -o-pre-wrap; /* Opera 7 */\n\t\t\t\t\t\t\t\tword-wrap: break-word; /* Internet Explorer 5.5+ */\n\t\t\t\t\t\t\t\tfont-size: 12px;\n\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif'; \n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t</style>\n\t\t\t\t\t\t<meta charset=\"UTF-8\">\n\t\t\t\t\t</head>\n\t\t\t\t\t<body>\n\t\t\t\t"+d.replace(new RegExp("flex-basis:","g"),"-webkit-flex-basis:").replace(new RegExp("flex:","g"),"-webkit-flex:")+"</body>",[4,n.setContent(o,{waitUntil:["domcontentloaded","load","networkidle0"]})];case 3:return t.sent(),[4,n.evaluateHandle("document.fonts.ready")];case 4:return t.sent(),l=pdfCnt+++"-"+p.replace(new RegExp(/[^0-9\.a-zA-Z]/g),""),[4,n.pdf({scale:1,landscape:"portrait"!==g,format:"letter",margin:{top:"1cm",bottom:"1cm",left:"1cm",right:"1cm"},printBackground:!0,displayHeaderFooter:!0,headerTemplate:"\n\t\t\t\t\t\t<style>\n\t\t\t\t\t\t\t#header { \n\t\t\t\t\t\t\t\tpadding: 0 0 10px 10px !important; \n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t</style>\n\t\t\t\t\t\t<span></span>\n\t\t\t\t\t",footerTemplate:'\n\t\t\t\t\t<style>\n\t\t\t\t\t\t#footer { \n\t\t\t\t\t\t\tpadding: 0 0 10px 10px !important;\n\t\t\t\t\t\t\tfont-size: 10px;\n\t\t\t\t\t\t\tfont-family: san-serif;\n\t\t\t\t\t\t}\n\t\t\t\t\t</style>\n\t\t\t\t\t<div style="padding-bottom: 2px; padding-right: 15px; text-align: right; width: 100%;">\n\t\t\t\t\t\t\n\t\t\t\t\t</div>\n\t\t\t\t\t',path:path.join(__dirname,l),timeout:0})];case 5:return t.sent(),[4,e.close()];case 6:if(t.sent(),!fs.existsSync(path.join(__dirname,l)))throw console.log("No tmp file ",l),new Error("Error in Generate PDF No Page Number: No tmp file");try{return f=fs.readFileSync(path.join(__dirname,l)),fs.unlinkSync(path.join(__dirname,l)),h?(c="data:application/pdf;base64,"+Buffer.from(f).toString("base64"),[2,this.callMethod("uploadFileAndSave",p,c,4*Math.ceil(c.length/3),null!==b?b:-1,w,!1)]):[2,"data:application/pdf;base64,"+Buffer.from(f).toString("base64")]}catch(t){throw t.message="Error in Generate PDF No Page Number: No file - "+t.message,t}return[2]}})})},workerTaskWeight:3},mergePDFResolve:{check:new simpl_schema_1.default({fileKeys:{type:Array},"fileKeys.$":{type:String},fileName:{type:String},fileType:{type:String,optional:!0}}),function:function(g,u,h){return __awaiter(this,void 0,void 0,function(){var e,n,a,r,i,s,o,l,f,c,d,p=this;return __generator(this,function(t){switch(t.label){case 0:return t.trys.push([0,25,,26]),[4,this.callMethod("getSignedUrls",g,900)];case 1:return(c=t.sent())&&c.length?(e=[],c.forEach(function(t){e.push(p.callMethod("getDataURIfromURL",t))}),[4,Promise.all(e)]):[3,24];case 2:return n=t.sent(),[4,pdf_lib_1.PDFDocument.create()];case 3:a=t.sent(),r=0,t.label=4;case 4:if(!(r<n.length))return[3,22];if(!(i=n[r]))return[3,20];t.label=5;case 5:return(t.trys.push([5,18,,19]),i.startsWith("data:application/pdf;base64,"))?[4,pdf_lib_1.PDFDocument.load(i,{updateMetadata:!1,parseSpeed:pdf_lib_1.ParseSpeeds.Fastest,ignoreEncryption:!0})]:[3,8];case 6:return s=t.sent(),[4,a.copyPages(s,s.getPageIndices())];case 7:return t.sent().forEach(function(t){a.addPage(t)}),[3,17];case 8:return i.startsWith("data:image/jpeg;base64,/9j/")||i.startsWith("data:image/png;base64,/9j/")?[4,pdf_lib_1.PDFDocument.create()]:[3,12];case 9:return[4,(s=t.sent()).embedJpg(i)];case 10:return o=t.sent(),l=s.addPage(),f=o.scaleToFit(.75*l.getWidth(),.75*l.getHeight()),l.drawImage(o,{x:l.getWidth()/2-f.width/2,y:l.getHeight()/2-f.height/2,width:f.width,height:f.height}),[4,a.copyPages(s,s.getPageIndices())];case 11:return t.sent().forEach(function(t){a.addPage(t)}),[3,17];case 12:return i.startsWith("data:image/png;base64,iVBOR")?[4,pdf_lib_1.PDFDocument.create()]:[3,16];case 13:return[4,(s=t.sent()).embedPng(i)];case 14:return o=t.sent(),l=s.addPage(),f=o.scaleToFit(.75*l.getWidth(),.75*l.getHeight()),l.drawImage(o,{x:l.getWidth()/2-f.width/2,y:l.getHeight()/2-f.height/2,width:f.width,height:f.height}),[4,a.copyPages(s,s.getPageIndices())];case 15:return t.sent().forEach(function(t){a.addPage(t)}),[3,17];case 16:throw console.log("Error - unsupported!!",i.slice(0,60)),new Error("Error in Merge PDF Resolve: Unsupported document type - "+i.slice(0,60));case 17:return[3,19];case 18:throw c=t.sent(),console.log("Error processing fileData:",i.slice(0,60),c.message),c.message="Error in Merge PDF Resolve: Error processing fileData: ".concat(i.slice(0,60)," - ").concat(c.message),c;case 19:return[3,21];case 20:throw console.log("Error - no filedata!!",i),new Error("Error in Merge PDF Resolve: No File Data");case 21:return r++,[3,4];case 22:return[4,a.save()];case 23:return d=t.sent(),d="data:application/pdf;base64,"+Buffer.from(d).toString("base64"),[2,this.callMethod("uploadFileAndSave",u,d,4*Math.ceil(d.length/3),-1,h,!1)];case 24:return[3,26];case 25:throw(d=t.sent()).message="Error in Merge PDF Resolve: PDF Merge - Get Signed URLs - "+d.message,d;case 26:return[2]}})})},workerTaskWeight:3},mergePDFResolveNoSave:{check:new simpl_schema_1.default({fileKeys:{type:Array},"fileKeys.$":{type:String}}),function:function(g){return __awaiter(this,void 0,void 0,function(){var e,n,a,r,i,s,o,l,f,c,d,p=this;return __generator(this,function(t){switch(t.label){case 0:return t.trys.push([0,26,,27]),[4,this.callMethod("getSignedUrls",g,900)];case 1:return(c=t.sent())&&c.length?(e=[],c.forEach(function(t){e.push(p.callMethod("getDataURIfromURL",t))}),[4,Promise.all(e)]):[3,24];case 2:return n=t.sent(),[4,pdf_lib_1.PDFDocument.create()];case 3:a=t.sent(),r=0,t.label=4;case 4:if(!(r<n.length))return[3,22];if(!(i=n[r]))return[3,20];t.label=5;case 5:return(t.trys.push([5,18,,19]),i.startsWith("data:application/pdf;base64,"))?[4,pdf_lib_1.PDFDocument.load(i,{updateMetadata:!1,parseSpeed:pdf_lib_1.ParseSpeeds.Fastest,ignoreEncryption:!0})]:[3,8];case 6:return s=t.sent(),[4,a.copyPages(s,s.getPageIndices())];case 7:return t.sent().forEach(function(t){a.addPage(t)}),[3,17];case 8:return i.startsWith("data:image/jpeg;base64,/9j/")||i.startsWith("data:image/png;base64,/9j/")?[4,pdf_lib_1.PDFDocument.create()]:[3,12];case 9:return[4,(s=t.sent()).embedJpg(i)];case 10:return o=t.sent(),l=s.addPage(),f=o.scaleToFit(.75*l.getWidth(),.75*l.getHeight()),l.drawImage(o,{x:l.getWidth()/2-f.width/2,y:l.getHeight()/2-f.height/2,width:f.width,height:f.height}),[4,a.copyPages(s,s.getPageIndices())];case 11:return t.sent().forEach(function(t){a.addPage(t)}),[3,17];case 12:return i.startsWith("data:image/png;base64,iVBOR")?[4,pdf_lib_1.PDFDocument.create()]:[3,16];case 13:return[4,(s=t.sent()).embedPng(i)];case 14:return o=t.sent(),l=s.addPage(),f=o.scaleToFit(.75*l.getWidth(),.75*l.getHeight()),l.drawImage(o,{x:l.getWidth()/2-f.width/2,y:l.getHeight()/2-f.height/2,width:f.width,height:f.height}),[4,a.copyPages(s,s.getPageIndices())];case 15:return t.sent().forEach(function(t){a.addPage(t)}),[3,17];case 16:console.log("Error - unsupported!!",i.slice(0,60)),t.label=17;case 17:return[3,19];case 18:return c=t.sent(),console.log("Error processing fileData:",i.slice(0,60),c),[3,19];case 19:return[3,21];case 20:console.log("Error - no filedata!!",i),t.label=21;case 21:return r++,[3,4];case 22:return[4,a.save()];case 23:return d=t.sent(),[2,"data:application/pdf;base64,"+Buffer.from(d).toString("base64")];case 24:throw new Error("Error in Merge PDF Resolve No Save: No signed urls");case 25:return[3,27];case 26:throw(d=t.sent()).message="Error in Merge PDF Resolve: ".concat(d.message),d;case 27:return[2]}})})},workerTaskWeight:3},mergePDFResolveHtml:{check:new simpl_schema_1.default({htmls:{type:Array},"htmls.$":{type:String},fileName:{type:String},fileType:{type:String,optional:!0},save:{type:Boolean,optional:!0}}),function:function(c,d,p,g){return void 0===g&&(g=!0),__awaiter(this,void 0,void 0,function(){var e,n,a,r,i,s,o,l,f;return __generator(this,function(t){switch(t.label){case 0:return[4,pdf_lib_1.PDFDocument.create()];case 1:e=t.sent(),n=0,t.label=2;case 2:if(!(n<c.length))return[3,20];if(!(a=c[n]))return[3,18];t.label=3;case 3:return(t.trys.push([3,16,,17]),a.startsWith("data:application/pdf;base64,"))?[4,pdf_lib_1.PDFDocument.load(a,{updateMetadata:!1,parseSpeed:pdf_lib_1.ParseSpeeds.Fastest,ignoreEncryption:!0})]:[3,6];case 4:return r=t.sent(),[4,e.copyPages(r,r.getPageIndices())];case 5:return t.sent().forEach(function(t){e.addPage(t)}),[3,15];case 6:return a.startsWith("data:image/jpeg;base64,/9j/")||a.startsWith("data:image/png;base64,/9j/")?[4,pdf_lib_1.PDFDocument.create()]:[3,10];case 7:return[4,(r=t.sent()).embedJpg(a)];case 8:return i=t.sent(),s=r.addPage(),o=i.scaleToFit(.75*s.getWidth(),.75*s.getHeight()),s.drawImage(i,{x:s.getWidth()/2-o.width/2,y:s.getHeight()/2-o.height/2,width:o.width,height:o.height}),[4,e.copyPages(r,r.getPageIndices())];case 9:return t.sent().forEach(function(t){e.addPage(t)}),[3,15];case 10:return a.startsWith("data:image/png;base64,iVBOR")?[4,pdf_lib_1.PDFDocument.create()]:[3,14];case 11:return[4,(r=t.sent()).embedPng(a)];case 12:return i=t.sent(),s=r.addPage(),o=i.scaleToFit(.75*s.getWidth(),.75*s.getHeight()),s.drawImage(i,{x:s.getWidth()/2-o.width/2,y:s.getHeight()/2-o.height/2,width:o.width,height:o.height}),[4,e.copyPages(r,r.getPageIndices())];case 13:return t.sent().forEach(function(t){e.addPage(t)}),[3,15];case 14:throw console.log("Error - unsupported!!",a.slice(0,60)),new Error("Error in Merge PDF Resolve HTML: Unsupported file - "+a.slice(0,60));case 15:return[3,17];case 16:throw l=t.sent(),console.log("Error processing fileData:",a.slice(0,60),l),l.message="Error in Merge PDF Resolve HTML: Error processing filedata - ".concat(l.message),l;case 17:return[3,19];case 18:throw console.log("Error - no filedata!!",a),new Error("Error in Merge PDF Resolve HTML: No File data");case 19:return n++,[3,2];case 20:return[4,e.save()];case 21:return l=t.sent(),f="data:application/pdf;base64,"+Buffer.from(l).toString("base64"),g?[2,this.callMethod("uploadFileAndSave",d,f,4*Math.ceil(f.length/3),-1,p,!1)]:[2,f]}})})},workerTaskWeight:3}})}exports.loadPDFMethods=loadPDFMethods;
1
+ "use strict";var __awaiter=this&&this.__awaiter||function(t,a,r,i){return new(r=r||Promise)(function(n,e){function fulfilled(t){try{step(i.next(t))}catch(t){e(t)}}function rejected(t){try{step(i.throw(t))}catch(t){e(t)}}function step(t){var e;t.done?n(t.value):((e=t.value)instanceof r?e:new r(function(t){t(e)})).then(fulfilled,rejected)}step((i=i.apply(t,a||[])).next())})},__generator=this&&this.__generator||function(a,r){var i,s,o,l={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]},f={next:verb(0),throw:verb(1),return:verb(2)};return"function"==typeof Symbol&&(f[Symbol.iterator]=function(){return this}),f;function verb(n){return function(t){var e=[n,t];if(i)throw new TypeError("Generator is already executing.");for(;l=f&&e[f=0]?0:l;)try{if(i=1,s&&(o=2&e[0]?s.return:e[0]?s.throw||((o=s.return)&&o.call(s),0):s.next)&&!(o=o.call(s,e[1])).done)return o;switch(s=0,(e=o?[2&e[0],o.value]:e)[0]){case 0:case 1:o=e;break;case 4:return l.label++,{value:e[1],done:!1};case 5:l.label++,s=e[1],e=[0];continue;case 7:e=l.ops.pop(),l.trys.pop();continue;default:if(!(o=0<(o=l.trys).length&&o[o.length-1])&&(6===e[0]||2===e[0])){l=0;continue}if(3===e[0]&&(!o||e[1]>o[0]&&e[1]<o[3]))l.label=e[1];else if(6===e[0]&&l.label<o[1])l.label=o[1],o=e;else{if(!(o&&l.label<o[2])){o[2]&&l.ops.pop(),l.trys.pop();continue}l.label=o[2],l.ops.push(e)}}e=r.call(a,l)}catch(t){e=[6,t],s=0}finally{i=o=0}if(5&e[0])throw e[1];return{value:e[0]?e[1]:void 0,done:!0}}}},fs=(Object.defineProperty(exports,"__esModule",{value:!0}),exports.loadPDFMethods=void 0,require("fs")),path=require("path"),pdf_lib_1=require("pdf-lib"),puppeteer=require("puppeteer"),simpl_schema_1=require("simpl-schema"),flag_collection_1=require("../collections/flag.collection"),pdfCnt=0;function loadPDFMethods(t){t.methods({generatePDF:{check:new simpl_schema_1.default({html:{type:String},fileName:{type:String},orientation:{type:String,optional:!0},fontSize:{type:String,optional:!0},upload:{type:Boolean,optional:!0},uploadFileOrder:{type:Number,optional:!0},uploadFileType:{type:String,optional:!0}}),function:function(p,g,u,h,b,w,m){return void 0===u&&(u="portrait"),void 0===h&&(h="12px"),void 0===b&&(b=!1),void 0===w&&(w=-1),void 0===m&&(m=""),__awaiter(this,void 0,void 0,function(){var e,n,a,r,i,s,o,l,f,c,d;return __generator(this,function(t){switch(t.label){case 0:return e=["--disable-dev-shm-usage","--no-sandbox","--disable-setuid-sandbox","--disable-accelerated-2d-canvas","--disable-gpu","--allow-file-access-from-files","--enable-local-file-accesses","--font-render-hinting=none"],n=null,[4,flag_collection_1.Flags.findOne({type:"Enable Debug PDF"})];case 1:return(a=t.sent())&&a.value?[4,puppeteer.launch({headless:!1,devtools:!0,args:e,ignoreDefaultArgs:["--disable-extensions"]})]:[3,3];case 2:return n=t.sent(),[3,5];case 3:return[4,puppeteer.launch({headless:!0,devtools:!1,args:e,ignoreDefaultArgs:["--disable-extensions"]})];case 4:n=t.sent(),t.label=5;case 5:return[4,n.newPage()];case 6:return r=t.sent(),o="",o=fs.existsSync(path.join(__dirname,"../private/fonts/dejavuserif.woff"))?path.join(__dirname,"../private/fonts/"):fs.existsSync(path.join(this.clientDir,"./private/fonts/dejavuserif.woff"))?path.join(this.clientDir,"./private/fonts/"):"/usr/share/fonts/dejavu/",l="data:application/font-woff;base64,"+Buffer.from(fs.readFileSync(o+"dejavuserif.woff").buffer).toString("base64"),i="data:application/font-woff;base64,"+Buffer.from(fs.readFileSync(o+"dejavuserif-bold.woff").buffer).toString("base64"),s="data:application/font-woff;base64,"+Buffer.from(fs.readFileSync(o+"dejavuserif-italic.woff").buffer).toString("base64"),o="data:application/font-woff;base64,"+Buffer.from(fs.readFileSync(o+"dejavuserif-bolditalic.woff").buffer).toString("base64"),l='\n\t\t\t\t\t<head>\n\t\t\t\t\t\t<style type="text/css">\n\t\t\t\t\t\t\t@font-face {\n\t\t\t\t\t\t\t\tfont-family: \'Dejavu Serif\';\n\t\t\t\t\t\t\t\tfont-style: normal;\n\t\t\t\t\t\t\t\tfont-weight: normal;\n\t\t\t\t\t\t\t\tsrc: url("'+l+"\") format('woff');\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t@font-face {\n\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif';\n\t\t\t\t\t\t\t\tfont-style: normal;\n\t\t\t\t\t\t\t\tfont-weight: bold;\n\t\t\t\t\t\t\t\tsrc: url(\""+i+"\") format('woff');\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t@font-face {\n\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif';\n\t\t\t\t\t\t\t\tfont-style: italic;\n\t\t\t\t\t\t\t\tfont-weight: normal;\n\t\t\t\t\t\t\t\tsrc: url(\""+s+"\") format('woff');\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t@font-face {\n\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif';\n\t\t\t\t\t\t\t\tfont-style: italic;\n\t\t\t\t\t\t\t\tfont-weight: bold;\n\t\t\t\t\t\t\t\tsrc: url(\""+o+"\") format('woff');\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tbody {\n\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif', serif;\n\t\t\t\t\t\t\t\tfont-size: "+(h||"12px")+";\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t.row {\n\t\t\t\t\t\t\t\tdisplay: -webkit-flex;\n\t\t\t\t\t\t\t\tdisplay: flex;\n\t\t\t\t\t\t\t\tflex-wrap: wrap;\n\t\t\t\t\t\t\t\t-webkit-flex-wrap: wrap;\n\t\t\t\t\t\t\t\tpage-break-inside: avoid !important;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t.page-break {\n\t\t\t\t\t\t\t\tpage-break-before: always !important;\n\t\t\t\t\t\t\t\tpadding-top: 1px;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t.cell {\n\t\t\t\t\t\t\t\tbox-sizing: border-box;\n\t\t\t\t\t\t\t\tpadding : 2px;\n\t\t\t\t\t\t\t\t-webkit-flex: 1;\n\t\t\t\t\t\t\t\tword-wrap: break-word;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t.cell-no-padding {\n\t\t\t\t\t\t\t\tbox-sizing: border-box;\n\t\t\t\t\t\t\t\t-webkit-flex: 1;\n\t\t\t\t\t\t\t\tword-wrap: break-word;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t.centered {\n\t\t\t\t\t\t\t\t-webkit-justify-content: center;\n\t\t\t\t\t\t\t\t-webkit-align-items: center;\n\t\t\t\t\t\t\t\tdisplay: -webkit-flex;\n\t\t\t\t\t\t\t\ttext-align: center;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t.centered-left {\n\t\t\t\t\t\t\t\t-webkit-align-items: center;\n\t\t\t\t\t\t\t\tdisplay: -webkit-flex;\n\t\t\t\t\t\t\t\t-webkit-justify-content: flex-start;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t.centered-right {\n\t\t\t\t\t\t\t\t-webkit-justify-content: flex-end;\n\t\t\t\t\t\t\t\t-webkit-align-items: center;\n\t\t\t\t\t\t\t\tdisplay: -webkit-flex;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t.box {\n\t\t\t\t\t\t\t\tborder: 1px solid black;\n\t\t\t\t\t\t\t\tmargin: -1px 0px 0px -1px;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t.boxNoBorder {\n\t\t\t\t\t\t\t\tmargin: -1px 0px 0px -1px;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tpre {\n\t\t\t\t\t\t\t\twhite-space: pre-wrap; /* css-3 */\n\t\t\t\t\t\t\t\twhite-space: -moz-pre-wrap; /* Mozilla, since 1999 */\n\t\t\t\t\t\t\t\twhite-space: -pre-wrap; /* Opera 4-6 */\n\t\t\t\t\t\t\t\twhite-space: -o-pre-wrap; /* Opera 7 */\n\t\t\t\t\t\t\t\tword-wrap: break-word; /* Internet Explorer 5.5+ */\n\t\t\t\t\t\t\t\tfont-size: 12px;\n\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif'; \n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t</style>\n\t\t\t\t\t</head>\n\t\t\t\t\t<body>\n\t\t\t\t"+p.replace(new RegExp("flex-basis:","g"),"-webkit-flex-basis:").replace(new RegExp("flex:","g"),"-webkit-flex:")+"</body>",[4,r.setContent(l,{waitUntil:["domcontentloaded","load","networkidle0"]})];case 7:return t.sent(),[4,r.evaluateHandle("document.fonts.ready")];case 8:return t.sent(),f=pdfCnt+++"-"+g.replace(new RegExp(/[^0-9\.a-zA-Z]/g),""),[4,r.pdf({scale:1,landscape:"portrait"!==u,format:"letter",margin:{top:"1cm",bottom:"1cm",left:"1cm",right:"1cm"},printBackground:!0,displayHeaderFooter:!0,headerTemplate:"\n\t\t\t\t\t\t<style>\n\t\t\t\t\t\t\t#header { \n\t\t\t\t\t\t\t\tpadding: 0 0 10px 10px !important; \n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t</style>\n\t\t\t\t\t\t<span></span>\n\t\t\t\t\t",footerTemplate:'\n\t\t\t\t\t\t<style>\n\t\t\t\t\t\t\t#footer { \n\t\t\t\t\t\t\t\tpadding: 0 0 10px 10px !important;\n\t\t\t\t\t\t\t\tfont-size: 10px;\n\t\t\t\t\t\t\t\tfont-family: san-serif;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t</style>\n\t\t\t\t\t\t<div style="padding-bottom: 2px; padding-right: 15px; text-align: right; width: 100%;">\n\t\t\t\t\t\t\tPage&nbsp;<span class="pageNumber"></span>&nbsp;of&nbsp;<span class="totalPages"></span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t',path:path.join(__dirname,f),timeout:0})];case 9:return(t.sent(),a&&a.value)?"landscape"!==u?[3,11]:[4,r.setViewport({width:1100,height:850})]:[3,13];case 10:return t.sent(),[3,13];case 11:return[4,r.setViewport({width:850,height:1100})];case 12:t.sent(),t.label=13;case 13:return[4,n.close()];case 14:if(t.sent(),!fs.existsSync(path.join(__dirname,f)))throw console.log("No tmp file ",f),new Error("Error in Generate PDF: No tmp file");try{return c=fs.readFileSync(path.join(__dirname,f)),fs.unlinkSync(path.join(__dirname,f)),b?(d="data:application/pdf;base64,"+Buffer.from(c).toString("base64"),[2,this.callMethod("uploadFileAndSave",g,d,4*Math.ceil(d.length/3),null!==w?w:-1,m,!1)]):[2,"data:application/pdf;base64,"+Buffer.from(c).toString("base64")]}catch(t){throw t.message="Error in Generate PDF: No file - "+t.message,t}return[2]}})})},workerTaskWeight:2},generatePDFNoPageNumber:{check:new simpl_schema_1.default({html:{type:String},fileName:{type:String},orientation:{type:String,optional:!0},fontSize:{type:String,optional:!0},upload:{type:Boolean,optional:!0},uploadFileOrder:{type:Number,optional:!0},uploadFileType:{type:String,optional:!0}}),function:function(d,p,g,u,h,b,w){return void 0===g&&(g="portrait"),void 0===u&&(u="12px"),void 0===h&&(h=!1),void 0===b&&(b=-1),void 0===w&&(w=""),__awaiter(this,void 0,void 0,function(){var e,n,a,r,i,s,o,l,f,c;return __generator(this,function(t){switch(t.label){case 0:return a=["--disable-dev-shm-usage","--no-sandbox","--disable-setuid-sandbox","--disable-accelerated-2d-canvas","--disable-gpu","--allow-file-access-from-files","--enable-local-file-accesses","--font-render-hinting=none"],[4,puppeteer.launch({headless:!0,devtools:!1,args:a,ignoreDefaultArgs:["--disable-extensions"]})];case 1:return[4,(e=t.sent()).newPage()];case 2:return n=t.sent(),a="",a=fs.existsSync(path.join(__dirname,"../private/fonts/dejavuserif.woff"))?path.join(__dirname,"../private/fonts/"):fs.existsSync(path.join(this.clientDir,"./private/fonts/dejavuserif.woff"))?path.join(this.clientDir,"./private/fonts/"):"/usr/share/fonts/dejavu/",o="data:application/font-woff;base64,"+Buffer.from(fs.readFileSync(a+"dejavuserif.woff").buffer).toString("base64"),r="data:application/font-woff;base64,"+Buffer.from(fs.readFileSync(a+"dejavuserif-bold.woff").buffer).toString("base64"),i="data:application/font-woff;base64,"+Buffer.from(fs.readFileSync(a+"dejavuserif-italic.woff").buffer).toString("base64"),s="data:application/font-woff;base64,"+Buffer.from(fs.readFileSync(a+"dejavuserif-bolditalic.woff").buffer).toString("base64"),o='\n\t\t\t\t\t<head>\n\t\t\t\t\t\t<style type="text/css">\n\t\t\t\t\t\t\t@font-face {\n\t\t\t\t\t\t\t\tfont-family: \'Dejavu Serif\';\n\t\t\t\t\t\t\t\tfont-style: normal;\n\t\t\t\t\t\t\t\tfont-weight: normal;\n\t\t\t\t\t\t\t\tsrc: url("'+o+"\") format('woff');\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t@font-face {\n\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif';\n\t\t\t\t\t\t\t\tfont-style: normal;\n\t\t\t\t\t\t\t\tfont-weight: bold;\n\t\t\t\t\t\t\t\tsrc: url(\""+r+"\") format('woff');\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t@font-face {\n\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif';\n\t\t\t\t\t\t\t\tfont-style: italic;\n\t\t\t\t\t\t\t\tfont-weight: normal;\n\t\t\t\t\t\t\t\tsrc: url(\""+i+"\") format('woff');\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t@font-face {\n\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif';\n\t\t\t\t\t\t\t\tfont-style: italic;\n\t\t\t\t\t\t\t\tfont-weight: bold;\n\t\t\t\t\t\t\t\tsrc: url(\""+s+"\") format('woff');\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tbody {\n\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif', serif;\n\t\t\t\t\t\t\t\tfont-size: "+(u||"12px")+";\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t.row {\n\t\t\t\t\t\t\t\tdisplay: -webkit-flex;\n\t\t\t\t\t\t\t\tdisplay: flex;\n\t\t\t\t\t\t\t\tflex-wrap: wrap;\n\t\t\t\t\t\t\t\t-webkit-flex-wrap: wrap;\n\t\t\t\t\t\t\t\tpage-break-inside: avoid !important;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t.page-break {\n\t\t\t\t\t\t\t\tpage-break-before: always !important;\n\t\t\t\t\t\t\t\tpadding-top: 1px;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t.cell {\n\t\t\t\t\t\t\t\tbox-sizing: border-box;\n\t\t\t\t\t\t\t\tpadding : 2px;\n\t\t\t\t\t\t\t\t-webkit-flex: 1;\n\t\t\t\t\t\t\t\tword-wrap: break-word;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t.cell-no-padding {\n\t\t\t\t\t\t\t\tbox-sizing: border-box;\n\t\t\t\t\t\t\t\t-webkit-flex: 1;\n\t\t\t\t\t\t\t\tword-wrap: break-word;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t.centered {\n\t\t\t\t\t\t\t\t-webkit-justify-content: center;\n\t\t\t\t\t\t\t\t-webkit-align-items: center;\n\t\t\t\t\t\t\t\tdisplay: -webkit-flex;\n\t\t\t\t\t\t\t\ttext-align: center;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t.centered-left {\n\t\t\t\t\t\t\t\t-webkit-align-items: center;\n\t\t\t\t\t\t\t\tdisplay: -webkit-flex;\n\t\t\t\t\t\t\t\t-webkit-justify-content: flex-start;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t.centered-right {\n\t\t\t\t\t\t\t\t-webkit-justify-content: flex-end;\n\t\t\t\t\t\t\t\t-webkit-align-items: center;\n\t\t\t\t\t\t\t\tdisplay: -webkit-flex;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t.box {\n\t\t\t\t\t\t\t\tborder: 1px solid black;\n\t\t\t\t\t\t\t\tmargin: -1px 0px 0px -1px;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t.boxNoBorder {\n\t\t\t\t\t\t\t\tmargin: -1px 0px 0px -1px;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tpre {\n\t\t\t\t\t\t\t\twhite-space: pre-wrap; /* css-3 */\n\t\t\t\t\t\t\t\twhite-space: -moz-pre-wrap; /* Mozilla, since 1999 */\n\t\t\t\t\t\t\t\twhite-space: -pre-wrap; /* Opera 4-6 */\n\t\t\t\t\t\t\t\twhite-space: -o-pre-wrap; /* Opera 7 */\n\t\t\t\t\t\t\t\tword-wrap: break-word; /* Internet Explorer 5.5+ */\n\t\t\t\t\t\t\t\tfont-size: 12px;\n\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif'; \n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t</style>\n\t\t\t\t\t\t<meta charset=\"UTF-8\">\n\t\t\t\t\t</head>\n\t\t\t\t\t<body>\n\t\t\t\t"+d.replace(new RegExp("flex-basis:","g"),"-webkit-flex-basis:").replace(new RegExp("flex:","g"),"-webkit-flex:")+"</body>",[4,n.setContent(o,{waitUntil:["domcontentloaded","load","networkidle0"]})];case 3:return t.sent(),[4,n.evaluateHandle("document.fonts.ready")];case 4:return t.sent(),l=pdfCnt+++"-"+p.replace(new RegExp(/[^0-9\.a-zA-Z]/g),""),[4,n.pdf({scale:1,landscape:"portrait"!==g,format:"letter",margin:{top:"1cm",bottom:"1cm",left:"1cm",right:"1cm"},printBackground:!0,displayHeaderFooter:!0,headerTemplate:"\n\t\t\t\t\t\t<style>\n\t\t\t\t\t\t\t#header { \n\t\t\t\t\t\t\t\tpadding: 0 0 10px 10px !important; \n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t</style>\n\t\t\t\t\t\t<span></span>\n\t\t\t\t\t",footerTemplate:'\n\t\t\t\t\t<style>\n\t\t\t\t\t\t#footer { \n\t\t\t\t\t\t\tpadding: 0 0 10px 10px !important;\n\t\t\t\t\t\t\tfont-size: 10px;\n\t\t\t\t\t\t\tfont-family: san-serif;\n\t\t\t\t\t\t}\n\t\t\t\t\t</style>\n\t\t\t\t\t<div style="padding-bottom: 2px; padding-right: 15px; text-align: right; width: 100%;">\n\t\t\t\t\t\t\n\t\t\t\t\t</div>\n\t\t\t\t\t',path:path.join(__dirname,l),timeout:0})];case 5:return t.sent(),[4,e.close()];case 6:if(t.sent(),!fs.existsSync(path.join(__dirname,l)))throw console.log("No tmp file ",l),new Error("Error in Generate PDF No Page Number: No tmp file");try{return f=fs.readFileSync(path.join(__dirname,l)),fs.unlinkSync(path.join(__dirname,l)),h?(c="data:application/pdf;base64,"+Buffer.from(f).toString("base64"),[2,this.callMethod("uploadFileAndSave",p,c,4*Math.ceil(c.length/3),null!==b?b:-1,w,!1)]):[2,"data:application/pdf;base64,"+Buffer.from(f).toString("base64")]}catch(t){throw t.message="Error in Generate PDF No Page Number: No file - "+t.message,t}return[2]}})})},workerTaskWeight:2},mergePDFResolve:{check:new simpl_schema_1.default({fileKeys:{type:Array},"fileKeys.$":{type:String},fileName:{type:String},fileType:{type:String,optional:!0}}),function:function(g,u,h){return __awaiter(this,void 0,void 0,function(){var e,n,a,r,i,s,o,l,f,c,d,p=this;return __generator(this,function(t){switch(t.label){case 0:return t.trys.push([0,25,,26]),[4,this.callMethod("getSignedUrls",g,900)];case 1:return(c=t.sent())&&c.length?(e=[],c.forEach(function(t){e.push(p.callMethod("getDataURIfromURL",t))}),[4,Promise.all(e)]):[3,24];case 2:return n=t.sent(),[4,pdf_lib_1.PDFDocument.create()];case 3:a=t.sent(),r=0,t.label=4;case 4:if(!(r<n.length))return[3,22];if(!(i=n[r]))return[3,20];t.label=5;case 5:return(t.trys.push([5,18,,19]),i.startsWith("data:application/pdf;base64,"))?[4,pdf_lib_1.PDFDocument.load(i,{updateMetadata:!1,parseSpeed:pdf_lib_1.ParseSpeeds.Fastest,ignoreEncryption:!0})]:[3,8];case 6:return s=t.sent(),[4,a.copyPages(s,s.getPageIndices())];case 7:return t.sent().forEach(function(t){a.addPage(t)}),[3,17];case 8:return i.startsWith("data:image/jpeg;base64,/9j/")||i.startsWith("data:image/png;base64,/9j/")?[4,pdf_lib_1.PDFDocument.create()]:[3,12];case 9:return[4,(s=t.sent()).embedJpg(i)];case 10:return o=t.sent(),l=s.addPage(),f=o.scaleToFit(.75*l.getWidth(),.75*l.getHeight()),l.drawImage(o,{x:l.getWidth()/2-f.width/2,y:l.getHeight()/2-f.height/2,width:f.width,height:f.height}),[4,a.copyPages(s,s.getPageIndices())];case 11:return t.sent().forEach(function(t){a.addPage(t)}),[3,17];case 12:return i.startsWith("data:image/png;base64,iVBOR")?[4,pdf_lib_1.PDFDocument.create()]:[3,16];case 13:return[4,(s=t.sent()).embedPng(i)];case 14:return o=t.sent(),l=s.addPage(),f=o.scaleToFit(.75*l.getWidth(),.75*l.getHeight()),l.drawImage(o,{x:l.getWidth()/2-f.width/2,y:l.getHeight()/2-f.height/2,width:f.width,height:f.height}),[4,a.copyPages(s,s.getPageIndices())];case 15:return t.sent().forEach(function(t){a.addPage(t)}),[3,17];case 16:throw console.log("Error - unsupported!!",i.slice(0,60)),new Error("Error in Merge PDF Resolve: Unsupported document type - "+i.slice(0,60));case 17:return[3,19];case 18:throw c=t.sent(),console.log("Error processing fileData:",i.slice(0,60),c.message),c.message="Error in Merge PDF Resolve: Error processing fileData: ".concat(i.slice(0,60)," - ").concat(c.message),c;case 19:return[3,21];case 20:throw console.log("Error - no filedata!!",i),new Error("Error in Merge PDF Resolve: No File Data");case 21:return r++,[3,4];case 22:return[4,a.save()];case 23:return d=t.sent(),d="data:application/pdf;base64,"+Buffer.from(d).toString("base64"),[2,this.callMethod("uploadFileAndSave",u,d,4*Math.ceil(d.length/3),-1,h,!1)];case 24:return[3,26];case 25:throw(d=t.sent()).message="Error in Merge PDF Resolve: PDF Merge - Get Signed URLs - "+d.message,d;case 26:return[2]}})})},workerTaskWeight:2},mergePDFResolveNoSave:{check:new simpl_schema_1.default({fileKeys:{type:Array},"fileKeys.$":{type:String}}),function:function(g){return __awaiter(this,void 0,void 0,function(){var e,n,a,r,i,s,o,l,f,c,d,p=this;return __generator(this,function(t){switch(t.label){case 0:return t.trys.push([0,26,,27]),[4,this.callMethod("getSignedUrls",g,900)];case 1:return(c=t.sent())&&c.length?(e=[],c.forEach(function(t){e.push(p.callMethod("getDataURIfromURL",t))}),[4,Promise.all(e)]):[3,24];case 2:return n=t.sent(),[4,pdf_lib_1.PDFDocument.create()];case 3:a=t.sent(),r=0,t.label=4;case 4:if(!(r<n.length))return[3,22];if(!(i=n[r]))return[3,20];t.label=5;case 5:return(t.trys.push([5,18,,19]),i.startsWith("data:application/pdf;base64,"))?[4,pdf_lib_1.PDFDocument.load(i,{updateMetadata:!1,parseSpeed:pdf_lib_1.ParseSpeeds.Fastest,ignoreEncryption:!0})]:[3,8];case 6:return s=t.sent(),[4,a.copyPages(s,s.getPageIndices())];case 7:return t.sent().forEach(function(t){a.addPage(t)}),[3,17];case 8:return i.startsWith("data:image/jpeg;base64,/9j/")||i.startsWith("data:image/png;base64,/9j/")?[4,pdf_lib_1.PDFDocument.create()]:[3,12];case 9:return[4,(s=t.sent()).embedJpg(i)];case 10:return o=t.sent(),l=s.addPage(),f=o.scaleToFit(.75*l.getWidth(),.75*l.getHeight()),l.drawImage(o,{x:l.getWidth()/2-f.width/2,y:l.getHeight()/2-f.height/2,width:f.width,height:f.height}),[4,a.copyPages(s,s.getPageIndices())];case 11:return t.sent().forEach(function(t){a.addPage(t)}),[3,17];case 12:return i.startsWith("data:image/png;base64,iVBOR")?[4,pdf_lib_1.PDFDocument.create()]:[3,16];case 13:return[4,(s=t.sent()).embedPng(i)];case 14:return o=t.sent(),l=s.addPage(),f=o.scaleToFit(.75*l.getWidth(),.75*l.getHeight()),l.drawImage(o,{x:l.getWidth()/2-f.width/2,y:l.getHeight()/2-f.height/2,width:f.width,height:f.height}),[4,a.copyPages(s,s.getPageIndices())];case 15:return t.sent().forEach(function(t){a.addPage(t)}),[3,17];case 16:console.log("Error - unsupported!!",i.slice(0,60)),t.label=17;case 17:return[3,19];case 18:return c=t.sent(),console.log("Error processing fileData:",i.slice(0,60),c),[3,19];case 19:return[3,21];case 20:console.log("Error - no filedata!!",i),t.label=21;case 21:return r++,[3,4];case 22:return[4,a.save()];case 23:return d=t.sent(),[2,"data:application/pdf;base64,"+Buffer.from(d).toString("base64")];case 24:throw new Error("Error in Merge PDF Resolve No Save: No signed urls");case 25:return[3,27];case 26:throw(d=t.sent()).message="Error in Merge PDF Resolve: ".concat(d.message),d;case 27:return[2]}})})},workerTaskWeight:2},mergePDFResolveHtml:{check:new simpl_schema_1.default({htmls:{type:Array},"htmls.$":{type:String},fileName:{type:String},fileType:{type:String,optional:!0},save:{type:Boolean,optional:!0}}),function:function(c,d,p,g){return void 0===g&&(g=!0),__awaiter(this,void 0,void 0,function(){var e,n,a,r,i,s,o,l,f;return __generator(this,function(t){switch(t.label){case 0:return[4,pdf_lib_1.PDFDocument.create()];case 1:e=t.sent(),n=0,t.label=2;case 2:if(!(n<c.length))return[3,20];if(!(a=c[n]))return[3,18];t.label=3;case 3:return(t.trys.push([3,16,,17]),a.startsWith("data:application/pdf;base64,"))?[4,pdf_lib_1.PDFDocument.load(a,{updateMetadata:!1,parseSpeed:pdf_lib_1.ParseSpeeds.Fastest,ignoreEncryption:!0})]:[3,6];case 4:return r=t.sent(),[4,e.copyPages(r,r.getPageIndices())];case 5:return t.sent().forEach(function(t){e.addPage(t)}),[3,15];case 6:return a.startsWith("data:image/jpeg;base64,/9j/")||a.startsWith("data:image/png;base64,/9j/")?[4,pdf_lib_1.PDFDocument.create()]:[3,10];case 7:return[4,(r=t.sent()).embedJpg(a)];case 8:return i=t.sent(),s=r.addPage(),o=i.scaleToFit(.75*s.getWidth(),.75*s.getHeight()),s.drawImage(i,{x:s.getWidth()/2-o.width/2,y:s.getHeight()/2-o.height/2,width:o.width,height:o.height}),[4,e.copyPages(r,r.getPageIndices())];case 9:return t.sent().forEach(function(t){e.addPage(t)}),[3,15];case 10:return a.startsWith("data:image/png;base64,iVBOR")?[4,pdf_lib_1.PDFDocument.create()]:[3,14];case 11:return[4,(r=t.sent()).embedPng(a)];case 12:return i=t.sent(),s=r.addPage(),o=i.scaleToFit(.75*s.getWidth(),.75*s.getHeight()),s.drawImage(i,{x:s.getWidth()/2-o.width/2,y:s.getHeight()/2-o.height/2,width:o.width,height:o.height}),[4,e.copyPages(r,r.getPageIndices())];case 13:return t.sent().forEach(function(t){e.addPage(t)}),[3,15];case 14:throw console.log("Error - unsupported!!",a.slice(0,60)),new Error("Error in Merge PDF Resolve HTML: Unsupported file - "+a.slice(0,60));case 15:return[3,17];case 16:throw l=t.sent(),console.log("Error processing fileData:",a.slice(0,60),l),l.message="Error in Merge PDF Resolve HTML: Error processing filedata - ".concat(l.message),l;case 17:return[3,19];case 18:throw console.log("Error - no filedata!!",a),new Error("Error in Merge PDF Resolve HTML: No File data");case 19:return n++,[3,2];case 20:return[4,e.save()];case 21:return l=t.sent(),f="data:application/pdf;base64,"+Buffer.from(l).toString("base64"),g?[2,this.callMethod("uploadFileAndSave",d,f,4*Math.ceil(f.length/3),-1,p,!1)]:[2,f]}})})},workerTaskWeight:2}})}exports.loadPDFMethods=loadPDFMethods;
2
2
  //# sourceMappingURL=pdf.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/methods/pdf.ts"],"names":["fs","require","path","pdf_lib_1","puppeteer","simpl_schema_1","flag_collection_1","pdfCnt","loadPDFMethods","methodManager","methods","generatePDF","check","default","html","type","String","fileName","orientation","optional","fontSize","upload","Boolean","uploadFileOrder","Number","uploadFileType","function","args","browser","Flags","findOne","enableDebugFlag","_a","sent","value","launch","headless","devtools","ignoreDefaultArgs","newPage","page","pathToFont","existsSync","join","__dirname","this","clientDir","dejavuserif_woff","Buffer","from","readFileSync","buffer","toString","dejavuserifBold_woff","dejavuserifItalic_woff","dejavuserifBoldItalic_woff","content","replace","RegExp","setContent","waitUntil","evaluateHandle","tmpFileName","pdf","scale","landscape","format","margin","top","bottom","left","right","printBackground","displayHeaderFooter","headerTemplate","footerTemplate","timeout","setViewport","width","height","close","console","log","Error","data","unlinkSync","fileData","callMethod","Math","ceil","length","errRead","message","workerTaskWeight","generatePDFNoPageNumber","mergePDFResolve","fileKeys","Array","fileKeys.$","fileType","resSigneds","promises_1","forEach","signedUrl","push","_this","Promise","all","fileDatas","PDFDocument","create","mergedPdf_1","i","startsWith","load","updateMetadata","parseSpeed","ParseSpeeds","Fastest","ignoreEncryption","copyPages","getPageIndices","addPage","embedJpg","img","imgDim","scaleToFit","getWidth","getHeight","drawImage","x","y","embedPng","slice","error_1","concat","save","mergedPDFUint8","b64PDF","err_1","mergePDFResolveNoSave","promises_2","mergedPdf_2","error_2","err_2","mergePDFResolveHtml","htmls","htmls.$","mergedPdf","error_3","exports"],"mappings":"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","file":"pdf.js","sourcesContent":["import * as fs from 'fs';\nimport * as path from 'path';\nimport { ParseSpeeds, PDFDocument } from 'pdf-lib';\nimport * as puppeteer from 'puppeteer';\nimport SimpleSchema from 'simpl-schema';\nimport { Flags } from '../collections/flag.collection';\nimport { MethodManager } from '../managers/method.manager';\n\nlet pdfCnt = 0;\n\nexport function loadPDFMethods(methodManager: MethodManager) {\n\tmethodManager.methods({\n\t\tgeneratePDF: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\thtml: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tfileName: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\torientation: {\n\t\t\t\t\ttype: String,\n\t\t\t\t\toptional: true\n\t\t\t\t},\n\t\t\t\tfontSize: {\n\t\t\t\t\ttype: String,\n\t\t\t\t\toptional: true\n\t\t\t\t},\n\t\t\t\tupload: {\n\t\t\t\t\ttype: Boolean,\n\t\t\t\t\toptional: true\n\t\t\t\t},\n\t\t\t\tuploadFileOrder: {\n\t\t\t\t\ttype: Number,\n\t\t\t\t\toptional: true\n\t\t\t\t},\n\t\t\t\tuploadFileType: {\n\t\t\t\t\ttype: String,\n\t\t\t\t\toptional: true\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: async function(html, fileName, orientation = 'portrait', fontSize = '12px', upload = false, uploadFileOrder = -1, uploadFileType = '') {\n\t\t\t\t// console.log(new Date(), 'GENERATE PDF CALL', fileName, orientation, fontSize, upload);\n\n\t\t\t\tconst args = [\n\t\t\t\t\t\"--disable-dev-shm-usage\",\n\t\t\t\t\t\"--no-sandbox\",\n\t\t\t\t\t\"--disable-setuid-sandbox\",\n\t\t\t\t\t\"--disable-accelerated-2d-canvas\",\n\t\t\t\t\t\"--disable-gpu\",\n\t\t\t\t\t\"--allow-file-access-from-files\", \n\t\t\t\t\t\"--enable-local-file-accesses\",\n\t\t\t\t\t'--font-render-hinting=none'\n\t\t\t\t];\n\n\t\t\t\tlet browser = null;\n\n\t\t\t\tlet enableDebugFlag = await Flags.findOne({type: 'Enable Debug PDF'});\n\t\t\t\t\n\t\t\t\tif (enableDebugFlag && enableDebugFlag.value) {\n\t\t\t\t\tbrowser = await puppeteer.launch({\n\t\t\t\t\t\theadless: false, // run in headless mode\n\t\t\t\t\t\tdevtools: true, // run with dev tools\n\t\t\t\t\t\targs,\n\t\t\t\t\t\tignoreDefaultArgs: [\"--disable-extensions\"]\n\t\t\t\t\t}); // run browser\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tbrowser = await puppeteer.launch({\n\t\t\t\t\t\theadless: true, // run in headless mode\n\t\t\t\t\t\tdevtools: false, // run with dev tools\n\t\t\t\t\t\targs,\n\t\t\t\t\t\tignoreDefaultArgs: [\"--disable-extensions\"]\n\t\t\t\t\t}); // run browser\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tconst page = await browser.newPage(); // create new tab\n\n\t\t\t\tlet pathToFont = '';\n\n\t\t\t\tif (fs.existsSync(path.join(__dirname, ('../private/fonts/dejavuserif.woff')))) {\n\t\t\t\t\tpathToFont = path.join(__dirname, ('../private/fonts/'));\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tif (fs.existsSync(path.join(this.clientDir, ('./private/fonts/dejavuserif.woff')))) {\n\t\t\t\t\t\tpathToFont = path.join(this.clientDir, ('./private/fonts/'));\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tpathToFont = '/usr/share/fonts/dejavu/';\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tlet dejavuserif_woff = 'data:application/font-woff;base64,' + Buffer.from(fs.readFileSync(pathToFont + 'dejavuserif.woff').buffer).toString('base64');\n\t\t\t\tlet dejavuserifBold_woff = 'data:application/font-woff;base64,' + Buffer.from(fs.readFileSync(pathToFont + 'dejavuserif-bold.woff').buffer).toString('base64');\n\t\t\t\tlet dejavuserifItalic_woff = 'data:application/font-woff;base64,' + Buffer.from(fs.readFileSync(pathToFont + 'dejavuserif-italic.woff').buffer).toString('base64');\n\t\t\t\tlet dejavuserifBoldItalic_woff = 'data:application/font-woff;base64,' + Buffer.from(fs.readFileSync(pathToFont + 'dejavuserif-bolditalic.woff').buffer).toString('base64');\n\n\t\t\t\tlet content = `\n\t\t\t\t\t<head>\n\t\t\t\t\t\t<style type=\"text/css\">\n\t\t\t\t\t\t\t@font-face {\n\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif';\n\t\t\t\t\t\t\t\tfont-style: normal;\n\t\t\t\t\t\t\t\tfont-weight: normal;\n\t\t\t\t\t\t\t\tsrc: url(\"` + dejavuserif_woff + `\") format('woff');\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t@font-face {\n\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif';\n\t\t\t\t\t\t\t\tfont-style: normal;\n\t\t\t\t\t\t\t\tfont-weight: bold;\n\t\t\t\t\t\t\t\tsrc: url(\"` + dejavuserifBold_woff + `\") format('woff');\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t@font-face {\n\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif';\n\t\t\t\t\t\t\t\tfont-style: italic;\n\t\t\t\t\t\t\t\tfont-weight: normal;\n\t\t\t\t\t\t\t\tsrc: url(\"` + dejavuserifItalic_woff + `\") format('woff');\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t@font-face {\n\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif';\n\t\t\t\t\t\t\t\tfont-style: italic;\n\t\t\t\t\t\t\t\tfont-weight: bold;\n\t\t\t\t\t\t\t\tsrc: url(\"` + dejavuserifBoldItalic_woff + `\") format('woff');\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tbody {\n\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif', serif;\n\t\t\t\t\t\t\t\tfont-size: ` + (fontSize ? fontSize : '12px') + `;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t.row {\n\t\t\t\t\t\t\t\tdisplay: -webkit-flex;\n\t\t\t\t\t\t\t\tdisplay: flex;\n\t\t\t\t\t\t\t\tflex-wrap: wrap;\n\t\t\t\t\t\t\t\t-webkit-flex-wrap: wrap;\n\t\t\t\t\t\t\t\tpage-break-inside: avoid !important;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t.page-break {\n\t\t\t\t\t\t\t\tpage-break-before: always !important;\n\t\t\t\t\t\t\t\tpadding-top: 1px;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t.cell {\n\t\t\t\t\t\t\t\tbox-sizing: border-box;\n\t\t\t\t\t\t\t\tpadding : 2px;\n\t\t\t\t\t\t\t\t-webkit-flex: 1;\n\t\t\t\t\t\t\t\tword-wrap: break-word;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t.cell-no-padding {\n\t\t\t\t\t\t\t\tbox-sizing: border-box;\n\t\t\t\t\t\t\t\t-webkit-flex: 1;\n\t\t\t\t\t\t\t\tword-wrap: break-word;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t.centered {\n\t\t\t\t\t\t\t\t-webkit-justify-content: center;\n\t\t\t\t\t\t\t\t-webkit-align-items: center;\n\t\t\t\t\t\t\t\tdisplay: -webkit-flex;\n\t\t\t\t\t\t\t\ttext-align: center;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t.centered-left {\n\t\t\t\t\t\t\t\t-webkit-align-items: center;\n\t\t\t\t\t\t\t\tdisplay: -webkit-flex;\n\t\t\t\t\t\t\t\t-webkit-justify-content: flex-start;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t.centered-right {\n\t\t\t\t\t\t\t\t-webkit-justify-content: flex-end;\n\t\t\t\t\t\t\t\t-webkit-align-items: center;\n\t\t\t\t\t\t\t\tdisplay: -webkit-flex;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t.box {\n\t\t\t\t\t\t\t\tborder: 1px solid black;\n\t\t\t\t\t\t\t\tmargin: -1px 0px 0px -1px;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t.boxNoBorder {\n\t\t\t\t\t\t\t\tmargin: -1px 0px 0px -1px;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tpre {\n\t\t\t\t\t\t\t\twhite-space: pre-wrap; /* css-3 */\n\t\t\t\t\t\t\t\twhite-space: -moz-pre-wrap; /* Mozilla, since 1999 */\n\t\t\t\t\t\t\t\twhite-space: -pre-wrap; /* Opera 4-6 */\n\t\t\t\t\t\t\t\twhite-space: -o-pre-wrap; /* Opera 7 */\n\t\t\t\t\t\t\t\tword-wrap: break-word; /* Internet Explorer 5.5+ */\n\t\t\t\t\t\t\t\tfont-size: 12px;\n\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif'; \n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t</style>\n\t\t\t\t\t</head>\n\t\t\t\t\t<body>\n\t\t\t\t` + html.replace(new RegExp('flex-basis:', 'g'), '-webkit-flex-basis:').replace(new RegExp('flex:', 'g'), '-webkit-flex:') + '</body>';\n\n\t\t\t\tawait page.setContent(content, { waitUntil: ['domcontentloaded', 'load', 'networkidle0'] });\n\t\t\t\tawait page.evaluateHandle('document.fonts.ready');\n\t\t\t\t\n\t\t\t\tlet tmpFileName = (pdfCnt++) + '-' + fileName.replace(new RegExp(/[^0-9\\.a-zA-Z]/g), '');\t\n\t\t\t\n\t\t\t\tawait page.pdf({\n\t\t\t\t\tscale: 1,\n\t\t\t\t\tlandscape: orientation === 'portrait' ? false : true,\n\t\t\t\t\tformat: 'letter',\n\t\t\t\t\tmargin: {\n\t\t\t\t\t\ttop: '1cm',\n\t\t\t\t\t\tbottom: '1cm',\n\t\t\t\t\t\tleft: '1cm',\n\t\t\t\t\t\tright: '1cm'\n\t\t\t\t\t},\n\t\t\t\t\tprintBackground: true,\n\t\t\t\t\tdisplayHeaderFooter: true,\n\t\t\t\t\theaderTemplate: `\n\t\t\t\t\t\t<style>\n\t\t\t\t\t\t\t#header { \n\t\t\t\t\t\t\t\tpadding: 0 0 10px 10px !important; \n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t</style>\n\t\t\t\t\t\t<span></span>\n\t\t\t\t\t`,\n\t\t\t\t\tfooterTemplate: `\n\t\t\t\t\t\t<style>\n\t\t\t\t\t\t\t#footer { \n\t\t\t\t\t\t\t\tpadding: 0 0 10px 10px !important;\n\t\t\t\t\t\t\t\tfont-size: 10px;\n\t\t\t\t\t\t\t\tfont-family: san-serif;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t</style>\n\t\t\t\t\t\t<div style=\"padding-bottom: 2px; padding-right: 15px; text-align: right; width: 100%;\">\n\t\t\t\t\t\t\tPage&nbsp;<span class=\"pageNumber\"></span>&nbsp;of&nbsp;<span class=\"totalPages\"></span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t`,\n\t\t\t\t\tpath: path.join(__dirname, (tmpFileName)),\n\t\t\t\t\ttimeout: 0\n\t\t\t\t});\n\n\t\t\t\tif (enableDebugFlag && enableDebugFlag.value) {\n\t\t\t\t\t// Set viewport dimensions based on orientation\n\t\t\t\t\tif (orientation === 'landscape') {\n\t\t\t\t\t\tawait page.setViewport({ width: 1100, height: 850 });\n\t\t\t\t\t} \n\t\t\t\t\telse {\n\t\t\t\t\t\tawait page.setViewport({ width: 850, height: 1100 });\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tawait browser.close();\n\t\t\t\t\n\t\t\t\tif (fs.existsSync(path.join(__dirname, (tmpFileName)))) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tlet data = fs.readFileSync(path.join(__dirname, (tmpFileName)));\n\t\t\t\t\t\tfs.unlinkSync(path.join(__dirname, (tmpFileName)));\n\t\t\t\t\t\tif (!upload) {\n\t\t\t\t\t\t\treturn 'data:application/pdf;base64,' + Buffer.from(data).toString('base64');\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tlet fileData = 'data:application/pdf;base64,' + Buffer.from(data).toString('base64');\n\t\t\t\t\t\t\treturn this.callMethod('uploadFileAndSave', fileName, fileData, (4 * Math.ceil(fileData.length / 3)), uploadFileOrder !== null ? uploadFileOrder : -1, uploadFileType, false);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tcatch (errRead) {\n\t\t\t\t\t\terrRead.message = 'Error in Generate PDF: No file - ' + errRead.message;\n\t\t\t\t\t\tthrow errRead;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tconsole.log('No tmp file ', tmpFileName);\n\t\t\t\t\tthrow new Error('Error in Generate PDF: No tmp file');\n\t\t\t\t}\n\t\t\t},\n\t\t\tworkerTaskWeight: 3\n\t\t},\n\t\tgeneratePDFNoPageNumber: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\thtml: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tfileName: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\torientation: {\n\t\t\t\t\ttype: String,\n\t\t\t\t\toptional: true\n\t\t\t\t},\n\t\t\t\tfontSize: {\n\t\t\t\t\ttype: String,\n\t\t\t\t\toptional: true\n\t\t\t\t},\n\t\t\t\tupload: {\n\t\t\t\t\ttype: Boolean,\n\t\t\t\t\toptional: true\n\t\t\t\t},\n\t\t\t\tuploadFileOrder: {\n\t\t\t\t\ttype: Number,\n\t\t\t\t\toptional: true\n\t\t\t\t},\n\t\t\t\tuploadFileType: {\n\t\t\t\t\ttype: String,\n\t\t\t\t\toptional: true\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: async function(html, fileName, orientation = 'portrait', fontSize = '12px', upload = false, uploadFileOrder = -1, uploadFileType = '') {\n\t\t\t\t// console.log(new Date(), 'GENERATE PDF CALL', fileName, orientation, fontSize, upload);\n\n\t\t\t\tconst args = [\n\t\t\t\t\t\"--disable-dev-shm-usage\",\n\t\t\t\t\t\"--no-sandbox\",\n\t\t\t\t\t\"--disable-setuid-sandbox\",\n\t\t\t\t\t\"--disable-accelerated-2d-canvas\",\n\t\t\t\t\t\"--disable-gpu\",\n\t\t\t\t\t\"--allow-file-access-from-files\", \n\t\t\t\t\t\"--enable-local-file-accesses\",\n\t\t\t\t\t'--font-render-hinting=none'\n\t\t\t\t];\n\n\t\t\t\tconst browser = await puppeteer.launch({\n\t\t\t\t\theadless: true, // run in headless mode\n\t\t\t\t\tdevtools: false, // run with dev tools\n\t\t\t\t\targs,\n\t\t\t\t\tignoreDefaultArgs: [\"--disable-extensions\"]\n\t\t\t\t}); // run browser\n\t\t\t\t\n\t\t\t\tconst page = await browser.newPage(); // create new tab\n\n\t\t\t\tlet pathToFont = '';\n\n\t\t\t\tif (fs.existsSync(path.join(__dirname, ('../private/fonts/dejavuserif.woff')))) {\n\t\t\t\t\tpathToFont = path.join(__dirname, ('../private/fonts/'));\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tif (fs.existsSync(path.join(this.clientDir, ('./private/fonts/dejavuserif.woff')))) {\n\t\t\t\t\t\tpathToFont = path.join(this.clientDir, ('./private/fonts/'));\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tpathToFont = '/usr/share/fonts/dejavu/';\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tlet dejavuserif_woff = 'data:application/font-woff;base64,' + Buffer.from(fs.readFileSync(pathToFont + 'dejavuserif.woff').buffer).toString('base64');\n\t\t\t\tlet dejavuserifBold_woff = 'data:application/font-woff;base64,' + Buffer.from(fs.readFileSync(pathToFont + 'dejavuserif-bold.woff').buffer).toString('base64');\n\t\t\t\tlet dejavuserifItalic_woff = 'data:application/font-woff;base64,' + Buffer.from(fs.readFileSync(pathToFont + 'dejavuserif-italic.woff').buffer).toString('base64');\n\t\t\t\tlet dejavuserifBoldItalic_woff = 'data:application/font-woff;base64,' + Buffer.from(fs.readFileSync(pathToFont + 'dejavuserif-bolditalic.woff').buffer).toString('base64');\n\n\t\t\t\tlet content = `\n\t\t\t\t\t<head>\n\t\t\t\t\t\t<style type=\"text/css\">\n\t\t\t\t\t\t\t@font-face {\n\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif';\n\t\t\t\t\t\t\t\tfont-style: normal;\n\t\t\t\t\t\t\t\tfont-weight: normal;\n\t\t\t\t\t\t\t\tsrc: url(\"` + dejavuserif_woff + `\") format('woff');\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t@font-face {\n\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif';\n\t\t\t\t\t\t\t\tfont-style: normal;\n\t\t\t\t\t\t\t\tfont-weight: bold;\n\t\t\t\t\t\t\t\tsrc: url(\"` + dejavuserifBold_woff + `\") format('woff');\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t@font-face {\n\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif';\n\t\t\t\t\t\t\t\tfont-style: italic;\n\t\t\t\t\t\t\t\tfont-weight: normal;\n\t\t\t\t\t\t\t\tsrc: url(\"` + dejavuserifItalic_woff + `\") format('woff');\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t@font-face {\n\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif';\n\t\t\t\t\t\t\t\tfont-style: italic;\n\t\t\t\t\t\t\t\tfont-weight: bold;\n\t\t\t\t\t\t\t\tsrc: url(\"` + dejavuserifBoldItalic_woff + `\") format('woff');\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tbody {\n\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif', serif;\n\t\t\t\t\t\t\t\tfont-size: ` + (fontSize ? fontSize : '12px') + `;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t.row {\n\t\t\t\t\t\t\t\tdisplay: -webkit-flex;\n\t\t\t\t\t\t\t\tdisplay: flex;\n\t\t\t\t\t\t\t\tflex-wrap: wrap;\n\t\t\t\t\t\t\t\t-webkit-flex-wrap: wrap;\n\t\t\t\t\t\t\t\tpage-break-inside: avoid !important;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t.page-break {\n\t\t\t\t\t\t\t\tpage-break-before: always !important;\n\t\t\t\t\t\t\t\tpadding-top: 1px;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t.cell {\n\t\t\t\t\t\t\t\tbox-sizing: border-box;\n\t\t\t\t\t\t\t\tpadding : 2px;\n\t\t\t\t\t\t\t\t-webkit-flex: 1;\n\t\t\t\t\t\t\t\tword-wrap: break-word;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t.cell-no-padding {\n\t\t\t\t\t\t\t\tbox-sizing: border-box;\n\t\t\t\t\t\t\t\t-webkit-flex: 1;\n\t\t\t\t\t\t\t\tword-wrap: break-word;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t.centered {\n\t\t\t\t\t\t\t\t-webkit-justify-content: center;\n\t\t\t\t\t\t\t\t-webkit-align-items: center;\n\t\t\t\t\t\t\t\tdisplay: -webkit-flex;\n\t\t\t\t\t\t\t\ttext-align: center;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t.centered-left {\n\t\t\t\t\t\t\t\t-webkit-align-items: center;\n\t\t\t\t\t\t\t\tdisplay: -webkit-flex;\n\t\t\t\t\t\t\t\t-webkit-justify-content: flex-start;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t.centered-right {\n\t\t\t\t\t\t\t\t-webkit-justify-content: flex-end;\n\t\t\t\t\t\t\t\t-webkit-align-items: center;\n\t\t\t\t\t\t\t\tdisplay: -webkit-flex;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t.box {\n\t\t\t\t\t\t\t\tborder: 1px solid black;\n\t\t\t\t\t\t\t\tmargin: -1px 0px 0px -1px;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t.boxNoBorder {\n\t\t\t\t\t\t\t\tmargin: -1px 0px 0px -1px;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tpre {\n\t\t\t\t\t\t\t\twhite-space: pre-wrap; /* css-3 */\n\t\t\t\t\t\t\t\twhite-space: -moz-pre-wrap; /* Mozilla, since 1999 */\n\t\t\t\t\t\t\t\twhite-space: -pre-wrap; /* Opera 4-6 */\n\t\t\t\t\t\t\t\twhite-space: -o-pre-wrap; /* Opera 7 */\n\t\t\t\t\t\t\t\tword-wrap: break-word; /* Internet Explorer 5.5+ */\n\t\t\t\t\t\t\t\tfont-size: 12px;\n\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif'; \n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t</style>\n\t\t\t\t\t\t<meta charset=\"UTF-8\">\n\t\t\t\t\t</head>\n\t\t\t\t\t<body>\n\t\t\t\t` + html.replace(new RegExp('flex-basis:', 'g'), '-webkit-flex-basis:').replace(new RegExp('flex:', 'g'), '-webkit-flex:') + '</body>';\n\n\t\t\t\tawait page.setContent(content, { waitUntil: ['domcontentloaded', 'load', 'networkidle0'] });\n\t\t\t\tawait page.evaluateHandle('document.fonts.ready');\n\t\t\t\t\n\t\t\t\tlet tmpFileName = (pdfCnt++) + '-' + fileName.replace(new RegExp(/[^0-9\\.a-zA-Z]/g), '');\t\n\t\t\t\n\t\t\t\tawait page.pdf({\n\t\t\t\t\tscale: 1,\n\t\t\t\t\tlandscape: orientation === 'portrait' ? false : true,\n\t\t\t\t\tformat: 'letter',\n\t\t\t\t\tmargin: {\n\t\t\t\t\t\ttop: '1cm',\n\t\t\t\t\t\tbottom: '1cm',\n\t\t\t\t\t\tleft: '1cm',\n\t\t\t\t\t\tright: '1cm'\n\t\t\t\t\t},\n\t\t\t\t\tprintBackground: true,\n\t\t\t\t\tdisplayHeaderFooter: true,\n\t\t\t\t\theaderTemplate: `\n\t\t\t\t\t\t<style>\n\t\t\t\t\t\t\t#header { \n\t\t\t\t\t\t\t\tpadding: 0 0 10px 10px !important; \n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t</style>\n\t\t\t\t\t\t<span></span>\n\t\t\t\t\t`,\n\t\t\t\t\tfooterTemplate: `\n\t\t\t\t\t<style>\n\t\t\t\t\t\t#footer { \n\t\t\t\t\t\t\tpadding: 0 0 10px 10px !important;\n\t\t\t\t\t\t\tfont-size: 10px;\n\t\t\t\t\t\t\tfont-family: san-serif;\n\t\t\t\t\t\t}\n\t\t\t\t\t</style>\n\t\t\t\t\t<div style=\"padding-bottom: 2px; padding-right: 15px; text-align: right; width: 100%;\">\n\t\t\t\t\t\t\n\t\t\t\t\t</div>\n\t\t\t\t\t`,\n\t\t\t\t\tpath: path.join(__dirname, (tmpFileName)),\n\t\t\t\t\ttimeout: 0\n\t\t\t\t});\n\t\t\t\tawait browser.close();\n\t\t\t\t\n\t\t\t\tif (fs.existsSync(path.join(__dirname, (tmpFileName)))) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tlet data = fs.readFileSync(path.join(__dirname, (tmpFileName)))\n\t\t\t\t\t\tfs.unlinkSync(path.join(__dirname, (tmpFileName)));\n\t\t\t\t\t\tif (!upload) {\n\t\t\t\t\t\t\treturn 'data:application/pdf;base64,' + Buffer.from(data).toString('base64');\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tlet fileData = 'data:application/pdf;base64,' + Buffer.from(data).toString('base64');\n\t\t\t\t\t\t\treturn this.callMethod('uploadFileAndSave', fileName, fileData, (4 * Math.ceil(fileData.length / 3)), uploadFileOrder !== null ? uploadFileOrder : -1, uploadFileType, false);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tcatch (errRead) {\n\t\t\t\t\t\terrRead.message = 'Error in Generate PDF No Page Number: No file - ' + errRead.message;\n\t\t\t\t\t\tthrow errRead;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tconsole.log('No tmp file ', tmpFileName);\n\t\t\t\t\tthrow new Error('Error in Generate PDF No Page Number: No tmp file');\n\t\t\t\t}\n\t\t\t},\n\t\t\tworkerTaskWeight: 3\n\t\t},\n\t\tmergePDFResolve: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tfileKeys: {\n\t\t\t\t\ttype: Array\n\t\t\t\t},\n\t\t\t\t'fileKeys.$': {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tfileName: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tfileType: {\n\t\t\t\t\ttype: String,\n\t\t\t\t\toptional: true\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: async function(fileKeys: string[], fileName: string, fileType?: string) {\n\t\t\t\ttry {\n\t\t\t\t\tlet resSigneds = await this.callMethod('getSignedUrls', fileKeys, 900);\n\n\t\t\t\t\tif (resSigneds && resSigneds.length) {\n\t\t\t\t\t\tlet promises = [];\n\t\n\t\t\t\t\t\tresSigneds.forEach((signedUrl) => {\n\t\t\t\t\t\t\tpromises.push(this.callMethod('getDataURIfromURL', signedUrl));\n\t\t\t\t\t\t});\n\t\t\t\t\t\t\n\t\t\t\t\t\tlet fileDatas = await Promise.all(promises);\n\t\t\t\t\t\tconst mergedPdf = await PDFDocument.create();\n\n\t\t\t\t\t\tfor (let i = 0; i < fileDatas.length; i++) {\n\t\t\t\t\t\t\tlet fileData = fileDatas[i];\n\n\t\t\t\t\t\t\tif (fileData) {\n\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\tif (fileData.startsWith('data:application/pdf;base64,')) {\n\t\t\t\t\t\t\t\t\t\tconst pdf = await PDFDocument.load(fileData, { updateMetadata: false, parseSpeed: ParseSpeeds.Fastest, ignoreEncryption: true });\n\t\t\t\t\t\t\t\t\t\tconst copiedPages = await mergedPdf.copyPages(pdf, pdf.getPageIndices());\n\t\t\t\t\t\t\t\t\t\tcopiedPages.forEach((page) => {\n\t\t\t\t\t\t\t\t\t\t\tmergedPdf.addPage(page);\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\telse if (fileData.startsWith('data:image/jpeg;base64,/9j/') || fileData.startsWith('data:image/png;base64,/9j/')) {\n\t\t\t\t\t\t\t\t\t\tconst pdf = await PDFDocument.create();\n\t\t\t\t\t\t\t\t\t\tconst img = await pdf.embedJpg(fileData);\n\t\t\t\t\t\t\t\t\t\tconst page = pdf.addPage();\n\t\t\t\t\t\t\t\t\t\tlet imgDim = img.scaleToFit(page.getWidth() * 0.75, page.getHeight() * 0.75);\n\t\t\t\t\t\t\t\t\t\tpage.drawImage(img, {\n\t\t\t\t\t\t\t\t\t\t\tx: page.getWidth() / 2 - imgDim.width / 2,\n\t\t\t\t\t\t\t\t\t\t\ty: page.getHeight() / 2 - imgDim.height / 2,\n\t\t\t\t\t\t\t\t\t\t\twidth: imgDim.width,\n\t\t\t\t\t\t\t\t\t\t\theight: imgDim.height,\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\tconst copiedPages = await mergedPdf.copyPages(pdf, pdf.getPageIndices());\n\t\t\t\t\t\t\t\t\t\tcopiedPages.forEach((page) => {\n\t\t\t\t\t\t\t\t\t\t\tmergedPdf.addPage(page);\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\telse if (fileData.startsWith('data:image/png;base64,iVBOR')) {\n\t\t\t\t\t\t\t\t\t\tconst pdf = await PDFDocument.create();\n\t\t\t\t\t\t\t\t\t\tconst img = await pdf.embedPng(fileData);\n\t\t\t\t\t\t\t\t\t\tconst page = pdf.addPage();\n\t\t\t\t\t\t\t\t\t\tlet imgDim = img.scaleToFit(page.getWidth() * 0.75, page.getHeight() * 0.75);\n\t\t\t\t\t\t\t\t\t\tpage.drawImage(img, {\n\t\t\t\t\t\t\t\t\t\t\tx: page.getWidth() / 2 - imgDim.width / 2,\n\t\t\t\t\t\t\t\t\t\t\ty: page.getHeight() / 2 - imgDim.height / 2,\n\t\t\t\t\t\t\t\t\t\t\twidth: imgDim.width,\n\t\t\t\t\t\t\t\t\t\t\theight: imgDim.height,\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\tconst copiedPages = await mergedPdf.copyPages(pdf, pdf.getPageIndices());\n\t\t\t\t\t\t\t\t\t\tcopiedPages.forEach((page) => {\n\t\t\t\t\t\t\t\t\t\t\tmergedPdf.addPage(page);\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\tconsole.log('Error - unsupported!!', fileData.slice(0, 60));\n\t\t\t\t\t\t\t\t\t\tthrow new Error('Error in Merge PDF Resolve: Unsupported document type - ' + fileData.slice(0, 60));\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} \n\t\t\t\t\t\t\t\tcatch (error) {\n\t\t\t\t\t\t\t\t\tconsole.log('Error processing fileData:', fileData.slice(0, 60), error.message);\n\t\t\t\t\t\t\t\t\terror.message = `Error in Merge PDF Resolve: Error processing fileData: ${fileData.slice(0, 60)} - ${error.message}`;\n\t\t\t\t\t\t\t\t\tthrow error;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tconsole.log('Error - no filedata!!', fileData);\n\t\t\t\t\t\t\t\tthrow new Error('Error in Merge PDF Resolve: No File Data');\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tlet mergedPDFUint8 = await mergedPdf.save();\n\n\t\t\t\t\t\tconst b64PDF = 'data:application/pdf;base64,' + Buffer.from(mergedPDFUint8).toString('base64');\n\n\t\t\t\t\t\treturn this.callMethod('uploadFileAndSave', fileName, b64PDF, (4 * Math.ceil(b64PDF.length / 3)), -1, fileType, false);\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\t\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tcatch (err) {\n\t\t\t\t\terr.message = 'Error in Merge PDF Resolve: PDF Merge - Get Signed URLs - ' + err.message;\n\t\t\t\t\t\n\t\t\t\t\tthrow err;\n\t\t\t\t}\n\t\t\t},\n\t\t\tworkerTaskWeight: 3\n\t\t},\t\t\n\t\tmergePDFResolveNoSave: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tfileKeys: {\n\t\t\t\t\ttype: Array\n\t\t\t\t},\n\t\t\t\t'fileKeys.$': {\n\t\t\t\t\ttype: String\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: async function(fileKeys: string[]) {\n\t\t\t\ttry {\n\t\t\t\t\tlet resSigneds = await this.callMethod('getSignedUrls', fileKeys, 900);\n\t\t\t\t\tif (resSigneds && resSigneds.length) {\n\t\t\t\t\t\tlet promises = [];\n\n\t\t\t\t\t\tresSigneds.forEach((signedUrl) => {\n\t\t\t\t\t\t\tpromises.push(this.callMethod('getDataURIfromURL', signedUrl));\n\t\t\t\t\t\t});\n\t\t\t\t\t\t\n\t\t\t\t\t\tlet fileDatas = await Promise.all(promises);\n\t\t\t\t\t\tconst mergedPdf = await PDFDocument.create();\n\n\t\t\t\t\t\tfor (let i = 0; i < fileDatas.length; i++) {\n\t\t\t\t\t\t\tlet fileData = fileDatas[i];\n\n\t\t\t\t\t\t\tif (fileData) {\n\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\tif (fileData.startsWith('data:application/pdf;base64,')) {\n\t\t\t\t\t\t\t\t\t\tconst pdf = await PDFDocument.load(fileData, { updateMetadata: false, parseSpeed: ParseSpeeds.Fastest, ignoreEncryption: true});\n\t\t\t\t\t\t\t\t\t\tconst copiedPages = await mergedPdf.copyPages(pdf, pdf.getPageIndices());\n\t\t\t\t\t\t\t\t\t\tcopiedPages.forEach((page) => {\n\t\t\t\t\t\t\t\t\t\t\tmergedPdf.addPage(page);\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\telse if (fileData.startsWith('data:image/jpeg;base64,/9j/') || fileData.startsWith('data:image/png;base64,/9j/')) {\n\t\t\t\t\t\t\t\t\t\tconst pdf = await PDFDocument.create();\n\t\t\t\t\t\t\t\t\t\tconst img = await pdf.embedJpg(fileData);\n\t\t\t\t\t\t\t\t\t\tconst page = pdf.addPage();\n\t\t\t\t\t\t\t\t\t\tlet imgDim = img.scaleToFit(page.getWidth() * 0.75, page.getHeight() * 0.75);\n\t\t\t\t\t\t\t\t\t\tpage.drawImage(img, {\n\t\t\t\t\t\t\t\t\t\t\tx: page.getWidth() / 2 - imgDim.width / 2,\n\t\t\t\t\t\t\t\t\t\t\ty: page.getHeight() / 2 - imgDim.height / 2,\n\t\t\t\t\t\t\t\t\t\t\twidth: imgDim.width,\n\t\t\t\t\t\t\t\t\t\t\theight: imgDim.height,\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\tconst copiedPages = await mergedPdf.copyPages(pdf, pdf.getPageIndices());\n\t\t\t\t\t\t\t\t\t\tcopiedPages.forEach((page) => {\n\t\t\t\t\t\t\t\t\t\t\tmergedPdf.addPage(page);\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\telse if (fileData.startsWith('data:image/png;base64,iVBOR')) {\n\t\t\t\t\t\t\t\t\t\tconst pdf = await PDFDocument.create();\n\t\t\t\t\t\t\t\t\t\tconst img = await pdf.embedPng(fileData);\n\t\t\t\t\t\t\t\t\t\tconst page = pdf.addPage();\n\t\t\t\t\t\t\t\t\t\tlet imgDim = img.scaleToFit(page.getWidth() * 0.75, page.getHeight() * 0.75);\n\t\t\t\t\t\t\t\t\t\tpage.drawImage(img, {\n\t\t\t\t\t\t\t\t\t\t\tx: page.getWidth() / 2 - imgDim.width / 2,\n\t\t\t\t\t\t\t\t\t\t\ty: page.getHeight() / 2 - imgDim.height / 2,\n\t\t\t\t\t\t\t\t\t\t\twidth: imgDim.width,\n\t\t\t\t\t\t\t\t\t\t\theight: imgDim.height,\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\tconst copiedPages = await mergedPdf.copyPages(pdf, pdf.getPageIndices());\n\t\t\t\t\t\t\t\t\t\tcopiedPages.forEach((page) => {\n\t\t\t\t\t\t\t\t\t\t\tmergedPdf.addPage(page);\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\tconsole.log('Error - unsupported!!', fileData.slice(0, 60));\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcatch (error) {\n\t\t\t\t\t\t\t\t\tconsole.log('Error processing fileData:', fileData.slice(0, 60), error);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tconsole.log('Error - no filedata!!', fileData);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tlet mergedPDFUint8 = await mergedPdf.save();\n\n\t\t\t\t\t\tconst b64PDF = 'data:application/pdf;base64,' + Buffer.from(mergedPDFUint8).toString('base64');\n\t\t\t\t\t\t\n\t\t\t\t\t\treturn b64PDF;\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tthrow new Error('Error in Merge PDF Resolve No Save: No signed urls');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tcatch (err) {\n\t\t\t\t\terr.message = `Error in Merge PDF Resolve: ${err.message}`;\n\t\t\t\t\tthrow err;\n\t\t\t\t}\n\t\t\t},\n\t\t\tworkerTaskWeight: 3\n\t\t},\n\t\tmergePDFResolveHtml: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\thtmls: {\n\t\t\t\t\ttype: Array\n\t\t\t\t},\n\t\t\t\t'htmls.$': {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tfileName: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tfileType: {\n\t\t\t\t\ttype: String,\n\t\t\t\t\toptional: true\n\t\t\t\t},\n\t\t\t\tsave: {\n\t\t\t\t\ttype: Boolean,\n\t\t\t\t\toptional: true\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: async function(htmls: string[], fileName: string, fileType?: string, save = true) {\n\t\t\t\tconst mergedPdf = await PDFDocument.create();\n\n\t\t\t\tfor (let i = 0; i < htmls.length; i++) {\n\t\t\t\t\tlet fileData = htmls[i];\n\n\t\t\t\t\tif (fileData) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tif (fileData.startsWith('data:application/pdf;base64,')) {\n\t\t\t\t\t\t\t\tconst pdf = await PDFDocument.load(fileData, { updateMetadata: false, parseSpeed: ParseSpeeds.Fastest, ignoreEncryption: true });\n\t\t\t\t\t\t\t\tconst copiedPages = await mergedPdf.copyPages(pdf, pdf.getPageIndices());\n\t\t\t\t\t\t\t\tcopiedPages.forEach((page) => {\n\t\t\t\t\t\t\t\t\tmergedPdf.addPage(page);\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (fileData.startsWith('data:image/jpeg;base64,/9j/') || fileData.startsWith('data:image/png;base64,/9j/')) {\n\t\t\t\t\t\t\t\tconst pdf = await PDFDocument.create();\n\t\t\t\t\t\t\t\tconst img = await pdf.embedJpg(fileData);\n\t\t\t\t\t\t\t\tconst page = pdf.addPage();\n\t\t\t\t\t\t\t\tlet imgDim = img.scaleToFit(page.getWidth() * 0.75, page.getHeight() * 0.75);\n\t\t\t\t\t\t\t\tpage.drawImage(img, {\n\t\t\t\t\t\t\t\t\tx: page.getWidth() / 2 - imgDim.width / 2,\n\t\t\t\t\t\t\t\t\ty: page.getHeight() / 2 - imgDim.height / 2,\n\t\t\t\t\t\t\t\t\twidth: imgDim.width,\n\t\t\t\t\t\t\t\t\theight: imgDim.height,\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tconst copiedPages = await mergedPdf.copyPages(pdf, pdf.getPageIndices());\n\t\t\t\t\t\t\t\tcopiedPages.forEach((page) => {\n\t\t\t\t\t\t\t\t\tmergedPdf.addPage(page);\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (fileData.startsWith('data:image/png;base64,iVBOR')) {\n\t\t\t\t\t\t\t\tconst pdf = await PDFDocument.create();\n\t\t\t\t\t\t\t\tconst img = await pdf.embedPng(fileData);\n\t\t\t\t\t\t\t\tconst page = pdf.addPage();\n\t\t\t\t\t\t\t\tlet imgDim = img.scaleToFit(page.getWidth() * 0.75, page.getHeight() * 0.75);\n\t\t\t\t\t\t\t\tpage.drawImage(img, {\n\t\t\t\t\t\t\t\t\tx: page.getWidth() / 2 - imgDim.width / 2,\n\t\t\t\t\t\t\t\t\ty: page.getHeight() / 2 - imgDim.height / 2,\n\t\t\t\t\t\t\t\t\twidth: imgDim.width,\n\t\t\t\t\t\t\t\t\theight: imgDim.height,\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tconst copiedPages = await mergedPdf.copyPages(pdf, pdf.getPageIndices());\n\t\t\t\t\t\t\t\tcopiedPages.forEach((page) => {\n\t\t\t\t\t\t\t\t\tmergedPdf.addPage(page);\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tconsole.log('Error - unsupported!!', fileData.slice(0, 60));\n\t\t\t\t\t\t\t\tthrow new Error('Error in Merge PDF Resolve HTML: Unsupported file - ' + fileData.slice(0, 60));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcatch (error) {\n\t\t\t\t\t\t\tconsole.log('Error processing fileData:', fileData.slice(0, 60), error);\n\t\t\t\t\t\t\terror.message = `Error in Merge PDF Resolve HTML: Error processing filedata - ${error.message}`;\n\t\t\t\t\t\t\tthrow error;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tconsole.log('Error - no filedata!!', fileData);\n\t\t\t\t\t\tthrow new Error('Error in Merge PDF Resolve HTML: No File data');\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tlet mergedPDFUint8 = await mergedPdf.save();\n\n\t\t\t\tconst b64PDF = 'data:application/pdf;base64,' + Buffer.from(mergedPDFUint8).toString('base64');\n\n\t\t\t\tif (save) {\n\t\t\t\t\treturn this.callMethod('uploadFileAndSave', fileName, b64PDF, (4 * Math.ceil(b64PDF.length / 3)), -1, fileType, false);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\treturn b64PDF;\n\t\t\t\t}\n\t\t\t},\n\t\t\tworkerTaskWeight: 3\n\t\t}\n\t});\n}"]}
1
+ {"version":3,"sources":["../../src/methods/pdf.ts"],"names":["fs","require","path","pdf_lib_1","puppeteer","simpl_schema_1","flag_collection_1","pdfCnt","loadPDFMethods","methodManager","methods","generatePDF","check","default","html","type","String","fileName","orientation","optional","fontSize","upload","Boolean","uploadFileOrder","Number","uploadFileType","function","args","browser","Flags","findOne","enableDebugFlag","_a","sent","value","launch","headless","devtools","ignoreDefaultArgs","newPage","page","pathToFont","existsSync","join","__dirname","this","clientDir","dejavuserif_woff","Buffer","from","readFileSync","buffer","toString","dejavuserifBold_woff","dejavuserifItalic_woff","dejavuserifBoldItalic_woff","content","replace","RegExp","setContent","waitUntil","evaluateHandle","tmpFileName","pdf","scale","landscape","format","margin","top","bottom","left","right","printBackground","displayHeaderFooter","headerTemplate","footerTemplate","timeout","setViewport","width","height","close","console","log","Error","data","unlinkSync","fileData","callMethod","Math","ceil","length","errRead","message","workerTaskWeight","generatePDFNoPageNumber","mergePDFResolve","fileKeys","Array","fileKeys.$","fileType","resSigneds","promises_1","forEach","signedUrl","push","_this","Promise","all","fileDatas","PDFDocument","create","mergedPdf_1","i","startsWith","load","updateMetadata","parseSpeed","ParseSpeeds","Fastest","ignoreEncryption","copyPages","getPageIndices","addPage","embedJpg","img","imgDim","scaleToFit","getWidth","getHeight","drawImage","x","y","embedPng","slice","error_1","concat","save","mergedPDFUint8","b64PDF","err_1","mergePDFResolveNoSave","promises_2","mergedPdf_2","error_2","err_2","mergePDFResolveHtml","htmls","htmls.$","mergedPdf","error_3","exports"],"mappings":"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","file":"pdf.js","sourcesContent":["import * as fs from 'fs';\nimport * as path from 'path';\nimport { ParseSpeeds, PDFDocument } from 'pdf-lib';\nimport * as puppeteer from 'puppeteer';\nimport SimpleSchema from 'simpl-schema';\nimport { Flags } from '../collections/flag.collection';\nimport { MethodManager } from '../managers/method.manager';\n\nlet pdfCnt = 0;\n\nexport function loadPDFMethods(methodManager: MethodManager) {\n\tmethodManager.methods({\n\t\tgeneratePDF: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\thtml: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tfileName: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\torientation: {\n\t\t\t\t\ttype: String,\n\t\t\t\t\toptional: true\n\t\t\t\t},\n\t\t\t\tfontSize: {\n\t\t\t\t\ttype: String,\n\t\t\t\t\toptional: true\n\t\t\t\t},\n\t\t\t\tupload: {\n\t\t\t\t\ttype: Boolean,\n\t\t\t\t\toptional: true\n\t\t\t\t},\n\t\t\t\tuploadFileOrder: {\n\t\t\t\t\ttype: Number,\n\t\t\t\t\toptional: true\n\t\t\t\t},\n\t\t\t\tuploadFileType: {\n\t\t\t\t\ttype: String,\n\t\t\t\t\toptional: true\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: async function(html, fileName, orientation = 'portrait', fontSize = '12px', upload = false, uploadFileOrder = -1, uploadFileType = '') {\n\t\t\t\t// console.log(new Date(), 'GENERATE PDF CALL', fileName, orientation, fontSize, upload);\n\n\t\t\t\tconst args = [\n\t\t\t\t\t\"--disable-dev-shm-usage\",\n\t\t\t\t\t\"--no-sandbox\",\n\t\t\t\t\t\"--disable-setuid-sandbox\",\n\t\t\t\t\t\"--disable-accelerated-2d-canvas\",\n\t\t\t\t\t\"--disable-gpu\",\n\t\t\t\t\t\"--allow-file-access-from-files\", \n\t\t\t\t\t\"--enable-local-file-accesses\",\n\t\t\t\t\t'--font-render-hinting=none'\n\t\t\t\t];\n\n\t\t\t\tlet browser = null;\n\n\t\t\t\tlet enableDebugFlag = await Flags.findOne({type: 'Enable Debug PDF'});\n\t\t\t\t\n\t\t\t\tif (enableDebugFlag && enableDebugFlag.value) {\n\t\t\t\t\tbrowser = await puppeteer.launch({\n\t\t\t\t\t\theadless: false, // run in headless mode\n\t\t\t\t\t\tdevtools: true, // run with dev tools\n\t\t\t\t\t\targs,\n\t\t\t\t\t\tignoreDefaultArgs: [\"--disable-extensions\"]\n\t\t\t\t\t}); // run browser\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tbrowser = await puppeteer.launch({\n\t\t\t\t\t\theadless: true, // run in headless mode\n\t\t\t\t\t\tdevtools: false, // run with dev tools\n\t\t\t\t\t\targs,\n\t\t\t\t\t\tignoreDefaultArgs: [\"--disable-extensions\"]\n\t\t\t\t\t}); // run browser\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tconst page = await browser.newPage(); // create new tab\n\n\t\t\t\tlet pathToFont = '';\n\n\t\t\t\tif (fs.existsSync(path.join(__dirname, ('../private/fonts/dejavuserif.woff')))) {\n\t\t\t\t\tpathToFont = path.join(__dirname, ('../private/fonts/'));\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tif (fs.existsSync(path.join(this.clientDir, ('./private/fonts/dejavuserif.woff')))) {\n\t\t\t\t\t\tpathToFont = path.join(this.clientDir, ('./private/fonts/'));\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tpathToFont = '/usr/share/fonts/dejavu/';\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tlet dejavuserif_woff = 'data:application/font-woff;base64,' + Buffer.from(fs.readFileSync(pathToFont + 'dejavuserif.woff').buffer).toString('base64');\n\t\t\t\tlet dejavuserifBold_woff = 'data:application/font-woff;base64,' + Buffer.from(fs.readFileSync(pathToFont + 'dejavuserif-bold.woff').buffer).toString('base64');\n\t\t\t\tlet dejavuserifItalic_woff = 'data:application/font-woff;base64,' + Buffer.from(fs.readFileSync(pathToFont + 'dejavuserif-italic.woff').buffer).toString('base64');\n\t\t\t\tlet dejavuserifBoldItalic_woff = 'data:application/font-woff;base64,' + Buffer.from(fs.readFileSync(pathToFont + 'dejavuserif-bolditalic.woff').buffer).toString('base64');\n\n\t\t\t\tlet content = `\n\t\t\t\t\t<head>\n\t\t\t\t\t\t<style type=\"text/css\">\n\t\t\t\t\t\t\t@font-face {\n\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif';\n\t\t\t\t\t\t\t\tfont-style: normal;\n\t\t\t\t\t\t\t\tfont-weight: normal;\n\t\t\t\t\t\t\t\tsrc: url(\"` + dejavuserif_woff + `\") format('woff');\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t@font-face {\n\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif';\n\t\t\t\t\t\t\t\tfont-style: normal;\n\t\t\t\t\t\t\t\tfont-weight: bold;\n\t\t\t\t\t\t\t\tsrc: url(\"` + dejavuserifBold_woff + `\") format('woff');\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t@font-face {\n\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif';\n\t\t\t\t\t\t\t\tfont-style: italic;\n\t\t\t\t\t\t\t\tfont-weight: normal;\n\t\t\t\t\t\t\t\tsrc: url(\"` + dejavuserifItalic_woff + `\") format('woff');\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t@font-face {\n\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif';\n\t\t\t\t\t\t\t\tfont-style: italic;\n\t\t\t\t\t\t\t\tfont-weight: bold;\n\t\t\t\t\t\t\t\tsrc: url(\"` + dejavuserifBoldItalic_woff + `\") format('woff');\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tbody {\n\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif', serif;\n\t\t\t\t\t\t\t\tfont-size: ` + (fontSize ? fontSize : '12px') + `;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t.row {\n\t\t\t\t\t\t\t\tdisplay: -webkit-flex;\n\t\t\t\t\t\t\t\tdisplay: flex;\n\t\t\t\t\t\t\t\tflex-wrap: wrap;\n\t\t\t\t\t\t\t\t-webkit-flex-wrap: wrap;\n\t\t\t\t\t\t\t\tpage-break-inside: avoid !important;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t.page-break {\n\t\t\t\t\t\t\t\tpage-break-before: always !important;\n\t\t\t\t\t\t\t\tpadding-top: 1px;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t.cell {\n\t\t\t\t\t\t\t\tbox-sizing: border-box;\n\t\t\t\t\t\t\t\tpadding : 2px;\n\t\t\t\t\t\t\t\t-webkit-flex: 1;\n\t\t\t\t\t\t\t\tword-wrap: break-word;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t.cell-no-padding {\n\t\t\t\t\t\t\t\tbox-sizing: border-box;\n\t\t\t\t\t\t\t\t-webkit-flex: 1;\n\t\t\t\t\t\t\t\tword-wrap: break-word;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t.centered {\n\t\t\t\t\t\t\t\t-webkit-justify-content: center;\n\t\t\t\t\t\t\t\t-webkit-align-items: center;\n\t\t\t\t\t\t\t\tdisplay: -webkit-flex;\n\t\t\t\t\t\t\t\ttext-align: center;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t.centered-left {\n\t\t\t\t\t\t\t\t-webkit-align-items: center;\n\t\t\t\t\t\t\t\tdisplay: -webkit-flex;\n\t\t\t\t\t\t\t\t-webkit-justify-content: flex-start;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t.centered-right {\n\t\t\t\t\t\t\t\t-webkit-justify-content: flex-end;\n\t\t\t\t\t\t\t\t-webkit-align-items: center;\n\t\t\t\t\t\t\t\tdisplay: -webkit-flex;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t.box {\n\t\t\t\t\t\t\t\tborder: 1px solid black;\n\t\t\t\t\t\t\t\tmargin: -1px 0px 0px -1px;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t.boxNoBorder {\n\t\t\t\t\t\t\t\tmargin: -1px 0px 0px -1px;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tpre {\n\t\t\t\t\t\t\t\twhite-space: pre-wrap; /* css-3 */\n\t\t\t\t\t\t\t\twhite-space: -moz-pre-wrap; /* Mozilla, since 1999 */\n\t\t\t\t\t\t\t\twhite-space: -pre-wrap; /* Opera 4-6 */\n\t\t\t\t\t\t\t\twhite-space: -o-pre-wrap; /* Opera 7 */\n\t\t\t\t\t\t\t\tword-wrap: break-word; /* Internet Explorer 5.5+ */\n\t\t\t\t\t\t\t\tfont-size: 12px;\n\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif'; \n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t</style>\n\t\t\t\t\t</head>\n\t\t\t\t\t<body>\n\t\t\t\t` + html.replace(new RegExp('flex-basis:', 'g'), '-webkit-flex-basis:').replace(new RegExp('flex:', 'g'), '-webkit-flex:') + '</body>';\n\n\t\t\t\tawait page.setContent(content, { waitUntil: ['domcontentloaded', 'load', 'networkidle0'] });\n\t\t\t\tawait page.evaluateHandle('document.fonts.ready');\n\t\t\t\t\n\t\t\t\tlet tmpFileName = (pdfCnt++) + '-' + fileName.replace(new RegExp(/[^0-9\\.a-zA-Z]/g), '');\t\n\t\t\t\n\t\t\t\tawait page.pdf({\n\t\t\t\t\tscale: 1,\n\t\t\t\t\tlandscape: orientation === 'portrait' ? false : true,\n\t\t\t\t\tformat: 'letter',\n\t\t\t\t\tmargin: {\n\t\t\t\t\t\ttop: '1cm',\n\t\t\t\t\t\tbottom: '1cm',\n\t\t\t\t\t\tleft: '1cm',\n\t\t\t\t\t\tright: '1cm'\n\t\t\t\t\t},\n\t\t\t\t\tprintBackground: true,\n\t\t\t\t\tdisplayHeaderFooter: true,\n\t\t\t\t\theaderTemplate: `\n\t\t\t\t\t\t<style>\n\t\t\t\t\t\t\t#header { \n\t\t\t\t\t\t\t\tpadding: 0 0 10px 10px !important; \n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t</style>\n\t\t\t\t\t\t<span></span>\n\t\t\t\t\t`,\n\t\t\t\t\tfooterTemplate: `\n\t\t\t\t\t\t<style>\n\t\t\t\t\t\t\t#footer { \n\t\t\t\t\t\t\t\tpadding: 0 0 10px 10px !important;\n\t\t\t\t\t\t\t\tfont-size: 10px;\n\t\t\t\t\t\t\t\tfont-family: san-serif;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t</style>\n\t\t\t\t\t\t<div style=\"padding-bottom: 2px; padding-right: 15px; text-align: right; width: 100%;\">\n\t\t\t\t\t\t\tPage&nbsp;<span class=\"pageNumber\"></span>&nbsp;of&nbsp;<span class=\"totalPages\"></span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t`,\n\t\t\t\t\tpath: path.join(__dirname, (tmpFileName)),\n\t\t\t\t\ttimeout: 0\n\t\t\t\t});\n\n\t\t\t\tif (enableDebugFlag && enableDebugFlag.value) {\n\t\t\t\t\t// Set viewport dimensions based on orientation\n\t\t\t\t\tif (orientation === 'landscape') {\n\t\t\t\t\t\tawait page.setViewport({ width: 1100, height: 850 });\n\t\t\t\t\t} \n\t\t\t\t\telse {\n\t\t\t\t\t\tawait page.setViewport({ width: 850, height: 1100 });\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tawait browser.close();\n\t\t\t\t\n\t\t\t\tif (fs.existsSync(path.join(__dirname, (tmpFileName)))) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tlet data = fs.readFileSync(path.join(__dirname, (tmpFileName)));\n\t\t\t\t\t\tfs.unlinkSync(path.join(__dirname, (tmpFileName)));\n\t\t\t\t\t\tif (!upload) {\n\t\t\t\t\t\t\treturn 'data:application/pdf;base64,' + Buffer.from(data).toString('base64');\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tlet fileData = 'data:application/pdf;base64,' + Buffer.from(data).toString('base64');\n\t\t\t\t\t\t\treturn this.callMethod('uploadFileAndSave', fileName, fileData, (4 * Math.ceil(fileData.length / 3)), uploadFileOrder !== null ? uploadFileOrder : -1, uploadFileType, false);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tcatch (errRead) {\n\t\t\t\t\t\terrRead.message = 'Error in Generate PDF: No file - ' + errRead.message;\n\t\t\t\t\t\tthrow errRead;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tconsole.log('No tmp file ', tmpFileName);\n\t\t\t\t\tthrow new Error('Error in Generate PDF: No tmp file');\n\t\t\t\t}\n\t\t\t},\n\t\t\tworkerTaskWeight: 2\n\t\t},\n\t\tgeneratePDFNoPageNumber: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\thtml: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tfileName: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\torientation: {\n\t\t\t\t\ttype: String,\n\t\t\t\t\toptional: true\n\t\t\t\t},\n\t\t\t\tfontSize: {\n\t\t\t\t\ttype: String,\n\t\t\t\t\toptional: true\n\t\t\t\t},\n\t\t\t\tupload: {\n\t\t\t\t\ttype: Boolean,\n\t\t\t\t\toptional: true\n\t\t\t\t},\n\t\t\t\tuploadFileOrder: {\n\t\t\t\t\ttype: Number,\n\t\t\t\t\toptional: true\n\t\t\t\t},\n\t\t\t\tuploadFileType: {\n\t\t\t\t\ttype: String,\n\t\t\t\t\toptional: true\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: async function(html, fileName, orientation = 'portrait', fontSize = '12px', upload = false, uploadFileOrder = -1, uploadFileType = '') {\n\t\t\t\t// console.log(new Date(), 'GENERATE PDF CALL', fileName, orientation, fontSize, upload);\n\n\t\t\t\tconst args = [\n\t\t\t\t\t\"--disable-dev-shm-usage\",\n\t\t\t\t\t\"--no-sandbox\",\n\t\t\t\t\t\"--disable-setuid-sandbox\",\n\t\t\t\t\t\"--disable-accelerated-2d-canvas\",\n\t\t\t\t\t\"--disable-gpu\",\n\t\t\t\t\t\"--allow-file-access-from-files\", \n\t\t\t\t\t\"--enable-local-file-accesses\",\n\t\t\t\t\t'--font-render-hinting=none'\n\t\t\t\t];\n\n\t\t\t\tconst browser = await puppeteer.launch({\n\t\t\t\t\theadless: true, // run in headless mode\n\t\t\t\t\tdevtools: false, // run with dev tools\n\t\t\t\t\targs,\n\t\t\t\t\tignoreDefaultArgs: [\"--disable-extensions\"]\n\t\t\t\t}); // run browser\n\t\t\t\t\n\t\t\t\tconst page = await browser.newPage(); // create new tab\n\n\t\t\t\tlet pathToFont = '';\n\n\t\t\t\tif (fs.existsSync(path.join(__dirname, ('../private/fonts/dejavuserif.woff')))) {\n\t\t\t\t\tpathToFont = path.join(__dirname, ('../private/fonts/'));\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tif (fs.existsSync(path.join(this.clientDir, ('./private/fonts/dejavuserif.woff')))) {\n\t\t\t\t\t\tpathToFont = path.join(this.clientDir, ('./private/fonts/'));\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tpathToFont = '/usr/share/fonts/dejavu/';\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tlet dejavuserif_woff = 'data:application/font-woff;base64,' + Buffer.from(fs.readFileSync(pathToFont + 'dejavuserif.woff').buffer).toString('base64');\n\t\t\t\tlet dejavuserifBold_woff = 'data:application/font-woff;base64,' + Buffer.from(fs.readFileSync(pathToFont + 'dejavuserif-bold.woff').buffer).toString('base64');\n\t\t\t\tlet dejavuserifItalic_woff = 'data:application/font-woff;base64,' + Buffer.from(fs.readFileSync(pathToFont + 'dejavuserif-italic.woff').buffer).toString('base64');\n\t\t\t\tlet dejavuserifBoldItalic_woff = 'data:application/font-woff;base64,' + Buffer.from(fs.readFileSync(pathToFont + 'dejavuserif-bolditalic.woff').buffer).toString('base64');\n\n\t\t\t\tlet content = `\n\t\t\t\t\t<head>\n\t\t\t\t\t\t<style type=\"text/css\">\n\t\t\t\t\t\t\t@font-face {\n\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif';\n\t\t\t\t\t\t\t\tfont-style: normal;\n\t\t\t\t\t\t\t\tfont-weight: normal;\n\t\t\t\t\t\t\t\tsrc: url(\"` + dejavuserif_woff + `\") format('woff');\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t@font-face {\n\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif';\n\t\t\t\t\t\t\t\tfont-style: normal;\n\t\t\t\t\t\t\t\tfont-weight: bold;\n\t\t\t\t\t\t\t\tsrc: url(\"` + dejavuserifBold_woff + `\") format('woff');\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t@font-face {\n\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif';\n\t\t\t\t\t\t\t\tfont-style: italic;\n\t\t\t\t\t\t\t\tfont-weight: normal;\n\t\t\t\t\t\t\t\tsrc: url(\"` + dejavuserifItalic_woff + `\") format('woff');\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t@font-face {\n\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif';\n\t\t\t\t\t\t\t\tfont-style: italic;\n\t\t\t\t\t\t\t\tfont-weight: bold;\n\t\t\t\t\t\t\t\tsrc: url(\"` + dejavuserifBoldItalic_woff + `\") format('woff');\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tbody {\n\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif', serif;\n\t\t\t\t\t\t\t\tfont-size: ` + (fontSize ? fontSize : '12px') + `;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t.row {\n\t\t\t\t\t\t\t\tdisplay: -webkit-flex;\n\t\t\t\t\t\t\t\tdisplay: flex;\n\t\t\t\t\t\t\t\tflex-wrap: wrap;\n\t\t\t\t\t\t\t\t-webkit-flex-wrap: wrap;\n\t\t\t\t\t\t\t\tpage-break-inside: avoid !important;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t.page-break {\n\t\t\t\t\t\t\t\tpage-break-before: always !important;\n\t\t\t\t\t\t\t\tpadding-top: 1px;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t.cell {\n\t\t\t\t\t\t\t\tbox-sizing: border-box;\n\t\t\t\t\t\t\t\tpadding : 2px;\n\t\t\t\t\t\t\t\t-webkit-flex: 1;\n\t\t\t\t\t\t\t\tword-wrap: break-word;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t.cell-no-padding {\n\t\t\t\t\t\t\t\tbox-sizing: border-box;\n\t\t\t\t\t\t\t\t-webkit-flex: 1;\n\t\t\t\t\t\t\t\tword-wrap: break-word;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t.centered {\n\t\t\t\t\t\t\t\t-webkit-justify-content: center;\n\t\t\t\t\t\t\t\t-webkit-align-items: center;\n\t\t\t\t\t\t\t\tdisplay: -webkit-flex;\n\t\t\t\t\t\t\t\ttext-align: center;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t.centered-left {\n\t\t\t\t\t\t\t\t-webkit-align-items: center;\n\t\t\t\t\t\t\t\tdisplay: -webkit-flex;\n\t\t\t\t\t\t\t\t-webkit-justify-content: flex-start;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t.centered-right {\n\t\t\t\t\t\t\t\t-webkit-justify-content: flex-end;\n\t\t\t\t\t\t\t\t-webkit-align-items: center;\n\t\t\t\t\t\t\t\tdisplay: -webkit-flex;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t.box {\n\t\t\t\t\t\t\t\tborder: 1px solid black;\n\t\t\t\t\t\t\t\tmargin: -1px 0px 0px -1px;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t.boxNoBorder {\n\t\t\t\t\t\t\t\tmargin: -1px 0px 0px -1px;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tpre {\n\t\t\t\t\t\t\t\twhite-space: pre-wrap; /* css-3 */\n\t\t\t\t\t\t\t\twhite-space: -moz-pre-wrap; /* Mozilla, since 1999 */\n\t\t\t\t\t\t\t\twhite-space: -pre-wrap; /* Opera 4-6 */\n\t\t\t\t\t\t\t\twhite-space: -o-pre-wrap; /* Opera 7 */\n\t\t\t\t\t\t\t\tword-wrap: break-word; /* Internet Explorer 5.5+ */\n\t\t\t\t\t\t\t\tfont-size: 12px;\n\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif'; \n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t</style>\n\t\t\t\t\t\t<meta charset=\"UTF-8\">\n\t\t\t\t\t</head>\n\t\t\t\t\t<body>\n\t\t\t\t` + html.replace(new RegExp('flex-basis:', 'g'), '-webkit-flex-basis:').replace(new RegExp('flex:', 'g'), '-webkit-flex:') + '</body>';\n\n\t\t\t\tawait page.setContent(content, { waitUntil: ['domcontentloaded', 'load', 'networkidle0'] });\n\t\t\t\tawait page.evaluateHandle('document.fonts.ready');\n\t\t\t\t\n\t\t\t\tlet tmpFileName = (pdfCnt++) + '-' + fileName.replace(new RegExp(/[^0-9\\.a-zA-Z]/g), '');\t\n\t\t\t\n\t\t\t\tawait page.pdf({\n\t\t\t\t\tscale: 1,\n\t\t\t\t\tlandscape: orientation === 'portrait' ? false : true,\n\t\t\t\t\tformat: 'letter',\n\t\t\t\t\tmargin: {\n\t\t\t\t\t\ttop: '1cm',\n\t\t\t\t\t\tbottom: '1cm',\n\t\t\t\t\t\tleft: '1cm',\n\t\t\t\t\t\tright: '1cm'\n\t\t\t\t\t},\n\t\t\t\t\tprintBackground: true,\n\t\t\t\t\tdisplayHeaderFooter: true,\n\t\t\t\t\theaderTemplate: `\n\t\t\t\t\t\t<style>\n\t\t\t\t\t\t\t#header { \n\t\t\t\t\t\t\t\tpadding: 0 0 10px 10px !important; \n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t</style>\n\t\t\t\t\t\t<span></span>\n\t\t\t\t\t`,\n\t\t\t\t\tfooterTemplate: `\n\t\t\t\t\t<style>\n\t\t\t\t\t\t#footer { \n\t\t\t\t\t\t\tpadding: 0 0 10px 10px !important;\n\t\t\t\t\t\t\tfont-size: 10px;\n\t\t\t\t\t\t\tfont-family: san-serif;\n\t\t\t\t\t\t}\n\t\t\t\t\t</style>\n\t\t\t\t\t<div style=\"padding-bottom: 2px; padding-right: 15px; text-align: right; width: 100%;\">\n\t\t\t\t\t\t\n\t\t\t\t\t</div>\n\t\t\t\t\t`,\n\t\t\t\t\tpath: path.join(__dirname, (tmpFileName)),\n\t\t\t\t\ttimeout: 0\n\t\t\t\t});\n\t\t\t\tawait browser.close();\n\t\t\t\t\n\t\t\t\tif (fs.existsSync(path.join(__dirname, (tmpFileName)))) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tlet data = fs.readFileSync(path.join(__dirname, (tmpFileName)))\n\t\t\t\t\t\tfs.unlinkSync(path.join(__dirname, (tmpFileName)));\n\t\t\t\t\t\tif (!upload) {\n\t\t\t\t\t\t\treturn 'data:application/pdf;base64,' + Buffer.from(data).toString('base64');\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tlet fileData = 'data:application/pdf;base64,' + Buffer.from(data).toString('base64');\n\t\t\t\t\t\t\treturn this.callMethod('uploadFileAndSave', fileName, fileData, (4 * Math.ceil(fileData.length / 3)), uploadFileOrder !== null ? uploadFileOrder : -1, uploadFileType, false);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tcatch (errRead) {\n\t\t\t\t\t\terrRead.message = 'Error in Generate PDF No Page Number: No file - ' + errRead.message;\n\t\t\t\t\t\tthrow errRead;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tconsole.log('No tmp file ', tmpFileName);\n\t\t\t\t\tthrow new Error('Error in Generate PDF No Page Number: No tmp file');\n\t\t\t\t}\n\t\t\t},\n\t\t\tworkerTaskWeight: 2\n\t\t},\n\t\tmergePDFResolve: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tfileKeys: {\n\t\t\t\t\ttype: Array\n\t\t\t\t},\n\t\t\t\t'fileKeys.$': {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tfileName: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tfileType: {\n\t\t\t\t\ttype: String,\n\t\t\t\t\toptional: true\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: async function(fileKeys: string[], fileName: string, fileType?: string) {\n\t\t\t\ttry {\n\t\t\t\t\tlet resSigneds = await this.callMethod('getSignedUrls', fileKeys, 900);\n\n\t\t\t\t\tif (resSigneds && resSigneds.length) {\n\t\t\t\t\t\tlet promises = [];\n\t\n\t\t\t\t\t\tresSigneds.forEach((signedUrl) => {\n\t\t\t\t\t\t\tpromises.push(this.callMethod('getDataURIfromURL', signedUrl));\n\t\t\t\t\t\t});\n\t\t\t\t\t\t\n\t\t\t\t\t\tlet fileDatas = await Promise.all(promises);\n\t\t\t\t\t\tconst mergedPdf = await PDFDocument.create();\n\n\t\t\t\t\t\tfor (let i = 0; i < fileDatas.length; i++) {\n\t\t\t\t\t\t\tlet fileData = fileDatas[i];\n\n\t\t\t\t\t\t\tif (fileData) {\n\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\tif (fileData.startsWith('data:application/pdf;base64,')) {\n\t\t\t\t\t\t\t\t\t\tconst pdf = await PDFDocument.load(fileData, { updateMetadata: false, parseSpeed: ParseSpeeds.Fastest, ignoreEncryption: true });\n\t\t\t\t\t\t\t\t\t\tconst copiedPages = await mergedPdf.copyPages(pdf, pdf.getPageIndices());\n\t\t\t\t\t\t\t\t\t\tcopiedPages.forEach((page) => {\n\t\t\t\t\t\t\t\t\t\t\tmergedPdf.addPage(page);\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\telse if (fileData.startsWith('data:image/jpeg;base64,/9j/') || fileData.startsWith('data:image/png;base64,/9j/')) {\n\t\t\t\t\t\t\t\t\t\tconst pdf = await PDFDocument.create();\n\t\t\t\t\t\t\t\t\t\tconst img = await pdf.embedJpg(fileData);\n\t\t\t\t\t\t\t\t\t\tconst page = pdf.addPage();\n\t\t\t\t\t\t\t\t\t\tlet imgDim = img.scaleToFit(page.getWidth() * 0.75, page.getHeight() * 0.75);\n\t\t\t\t\t\t\t\t\t\tpage.drawImage(img, {\n\t\t\t\t\t\t\t\t\t\t\tx: page.getWidth() / 2 - imgDim.width / 2,\n\t\t\t\t\t\t\t\t\t\t\ty: page.getHeight() / 2 - imgDim.height / 2,\n\t\t\t\t\t\t\t\t\t\t\twidth: imgDim.width,\n\t\t\t\t\t\t\t\t\t\t\theight: imgDim.height,\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\tconst copiedPages = await mergedPdf.copyPages(pdf, pdf.getPageIndices());\n\t\t\t\t\t\t\t\t\t\tcopiedPages.forEach((page) => {\n\t\t\t\t\t\t\t\t\t\t\tmergedPdf.addPage(page);\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\telse if (fileData.startsWith('data:image/png;base64,iVBOR')) {\n\t\t\t\t\t\t\t\t\t\tconst pdf = await PDFDocument.create();\n\t\t\t\t\t\t\t\t\t\tconst img = await pdf.embedPng(fileData);\n\t\t\t\t\t\t\t\t\t\tconst page = pdf.addPage();\n\t\t\t\t\t\t\t\t\t\tlet imgDim = img.scaleToFit(page.getWidth() * 0.75, page.getHeight() * 0.75);\n\t\t\t\t\t\t\t\t\t\tpage.drawImage(img, {\n\t\t\t\t\t\t\t\t\t\t\tx: page.getWidth() / 2 - imgDim.width / 2,\n\t\t\t\t\t\t\t\t\t\t\ty: page.getHeight() / 2 - imgDim.height / 2,\n\t\t\t\t\t\t\t\t\t\t\twidth: imgDim.width,\n\t\t\t\t\t\t\t\t\t\t\theight: imgDim.height,\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\tconst copiedPages = await mergedPdf.copyPages(pdf, pdf.getPageIndices());\n\t\t\t\t\t\t\t\t\t\tcopiedPages.forEach((page) => {\n\t\t\t\t\t\t\t\t\t\t\tmergedPdf.addPage(page);\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\tconsole.log('Error - unsupported!!', fileData.slice(0, 60));\n\t\t\t\t\t\t\t\t\t\tthrow new Error('Error in Merge PDF Resolve: Unsupported document type - ' + fileData.slice(0, 60));\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} \n\t\t\t\t\t\t\t\tcatch (error) {\n\t\t\t\t\t\t\t\t\tconsole.log('Error processing fileData:', fileData.slice(0, 60), error.message);\n\t\t\t\t\t\t\t\t\terror.message = `Error in Merge PDF Resolve: Error processing fileData: ${fileData.slice(0, 60)} - ${error.message}`;\n\t\t\t\t\t\t\t\t\tthrow error;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tconsole.log('Error - no filedata!!', fileData);\n\t\t\t\t\t\t\t\tthrow new Error('Error in Merge PDF Resolve: No File Data');\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tlet mergedPDFUint8 = await mergedPdf.save();\n\n\t\t\t\t\t\tconst b64PDF = 'data:application/pdf;base64,' + Buffer.from(mergedPDFUint8).toString('base64');\n\n\t\t\t\t\t\treturn this.callMethod('uploadFileAndSave', fileName, b64PDF, (4 * Math.ceil(b64PDF.length / 3)), -1, fileType, false);\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\t\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tcatch (err) {\n\t\t\t\t\terr.message = 'Error in Merge PDF Resolve: PDF Merge - Get Signed URLs - ' + err.message;\n\t\t\t\t\t\n\t\t\t\t\tthrow err;\n\t\t\t\t}\n\t\t\t},\n\t\t\tworkerTaskWeight: 2\n\t\t},\t\t\n\t\tmergePDFResolveNoSave: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tfileKeys: {\n\t\t\t\t\ttype: Array\n\t\t\t\t},\n\t\t\t\t'fileKeys.$': {\n\t\t\t\t\ttype: String\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: async function(fileKeys: string[]) {\n\t\t\t\ttry {\n\t\t\t\t\tlet resSigneds = await this.callMethod('getSignedUrls', fileKeys, 900);\n\t\t\t\t\tif (resSigneds && resSigneds.length) {\n\t\t\t\t\t\tlet promises = [];\n\n\t\t\t\t\t\tresSigneds.forEach((signedUrl) => {\n\t\t\t\t\t\t\tpromises.push(this.callMethod('getDataURIfromURL', signedUrl));\n\t\t\t\t\t\t});\n\t\t\t\t\t\t\n\t\t\t\t\t\tlet fileDatas = await Promise.all(promises);\n\t\t\t\t\t\tconst mergedPdf = await PDFDocument.create();\n\n\t\t\t\t\t\tfor (let i = 0; i < fileDatas.length; i++) {\n\t\t\t\t\t\t\tlet fileData = fileDatas[i];\n\n\t\t\t\t\t\t\tif (fileData) {\n\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\tif (fileData.startsWith('data:application/pdf;base64,')) {\n\t\t\t\t\t\t\t\t\t\tconst pdf = await PDFDocument.load(fileData, { updateMetadata: false, parseSpeed: ParseSpeeds.Fastest, ignoreEncryption: true});\n\t\t\t\t\t\t\t\t\t\tconst copiedPages = await mergedPdf.copyPages(pdf, pdf.getPageIndices());\n\t\t\t\t\t\t\t\t\t\tcopiedPages.forEach((page) => {\n\t\t\t\t\t\t\t\t\t\t\tmergedPdf.addPage(page);\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\telse if (fileData.startsWith('data:image/jpeg;base64,/9j/') || fileData.startsWith('data:image/png;base64,/9j/')) {\n\t\t\t\t\t\t\t\t\t\tconst pdf = await PDFDocument.create();\n\t\t\t\t\t\t\t\t\t\tconst img = await pdf.embedJpg(fileData);\n\t\t\t\t\t\t\t\t\t\tconst page = pdf.addPage();\n\t\t\t\t\t\t\t\t\t\tlet imgDim = img.scaleToFit(page.getWidth() * 0.75, page.getHeight() * 0.75);\n\t\t\t\t\t\t\t\t\t\tpage.drawImage(img, {\n\t\t\t\t\t\t\t\t\t\t\tx: page.getWidth() / 2 - imgDim.width / 2,\n\t\t\t\t\t\t\t\t\t\t\ty: page.getHeight() / 2 - imgDim.height / 2,\n\t\t\t\t\t\t\t\t\t\t\twidth: imgDim.width,\n\t\t\t\t\t\t\t\t\t\t\theight: imgDim.height,\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\tconst copiedPages = await mergedPdf.copyPages(pdf, pdf.getPageIndices());\n\t\t\t\t\t\t\t\t\t\tcopiedPages.forEach((page) => {\n\t\t\t\t\t\t\t\t\t\t\tmergedPdf.addPage(page);\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\telse if (fileData.startsWith('data:image/png;base64,iVBOR')) {\n\t\t\t\t\t\t\t\t\t\tconst pdf = await PDFDocument.create();\n\t\t\t\t\t\t\t\t\t\tconst img = await pdf.embedPng(fileData);\n\t\t\t\t\t\t\t\t\t\tconst page = pdf.addPage();\n\t\t\t\t\t\t\t\t\t\tlet imgDim = img.scaleToFit(page.getWidth() * 0.75, page.getHeight() * 0.75);\n\t\t\t\t\t\t\t\t\t\tpage.drawImage(img, {\n\t\t\t\t\t\t\t\t\t\t\tx: page.getWidth() / 2 - imgDim.width / 2,\n\t\t\t\t\t\t\t\t\t\t\ty: page.getHeight() / 2 - imgDim.height / 2,\n\t\t\t\t\t\t\t\t\t\t\twidth: imgDim.width,\n\t\t\t\t\t\t\t\t\t\t\theight: imgDim.height,\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\tconst copiedPages = await mergedPdf.copyPages(pdf, pdf.getPageIndices());\n\t\t\t\t\t\t\t\t\t\tcopiedPages.forEach((page) => {\n\t\t\t\t\t\t\t\t\t\t\tmergedPdf.addPage(page);\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\tconsole.log('Error - unsupported!!', fileData.slice(0, 60));\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcatch (error) {\n\t\t\t\t\t\t\t\t\tconsole.log('Error processing fileData:', fileData.slice(0, 60), error);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tconsole.log('Error - no filedata!!', fileData);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tlet mergedPDFUint8 = await mergedPdf.save();\n\n\t\t\t\t\t\tconst b64PDF = 'data:application/pdf;base64,' + Buffer.from(mergedPDFUint8).toString('base64');\n\t\t\t\t\t\t\n\t\t\t\t\t\treturn b64PDF;\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tthrow new Error('Error in Merge PDF Resolve No Save: No signed urls');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tcatch (err) {\n\t\t\t\t\terr.message = `Error in Merge PDF Resolve: ${err.message}`;\n\t\t\t\t\tthrow err;\n\t\t\t\t}\n\t\t\t},\n\t\t\tworkerTaskWeight: 2\n\t\t},\n\t\tmergePDFResolveHtml: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\thtmls: {\n\t\t\t\t\ttype: Array\n\t\t\t\t},\n\t\t\t\t'htmls.$': {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tfileName: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tfileType: {\n\t\t\t\t\ttype: String,\n\t\t\t\t\toptional: true\n\t\t\t\t},\n\t\t\t\tsave: {\n\t\t\t\t\ttype: Boolean,\n\t\t\t\t\toptional: true\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: async function(htmls: string[], fileName: string, fileType?: string, save = true) {\n\t\t\t\tconst mergedPdf = await PDFDocument.create();\n\n\t\t\t\tfor (let i = 0; i < htmls.length; i++) {\n\t\t\t\t\tlet fileData = htmls[i];\n\n\t\t\t\t\tif (fileData) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tif (fileData.startsWith('data:application/pdf;base64,')) {\n\t\t\t\t\t\t\t\tconst pdf = await PDFDocument.load(fileData, { updateMetadata: false, parseSpeed: ParseSpeeds.Fastest, ignoreEncryption: true });\n\t\t\t\t\t\t\t\tconst copiedPages = await mergedPdf.copyPages(pdf, pdf.getPageIndices());\n\t\t\t\t\t\t\t\tcopiedPages.forEach((page) => {\n\t\t\t\t\t\t\t\t\tmergedPdf.addPage(page);\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (fileData.startsWith('data:image/jpeg;base64,/9j/') || fileData.startsWith('data:image/png;base64,/9j/')) {\n\t\t\t\t\t\t\t\tconst pdf = await PDFDocument.create();\n\t\t\t\t\t\t\t\tconst img = await pdf.embedJpg(fileData);\n\t\t\t\t\t\t\t\tconst page = pdf.addPage();\n\t\t\t\t\t\t\t\tlet imgDim = img.scaleToFit(page.getWidth() * 0.75, page.getHeight() * 0.75);\n\t\t\t\t\t\t\t\tpage.drawImage(img, {\n\t\t\t\t\t\t\t\t\tx: page.getWidth() / 2 - imgDim.width / 2,\n\t\t\t\t\t\t\t\t\ty: page.getHeight() / 2 - imgDim.height / 2,\n\t\t\t\t\t\t\t\t\twidth: imgDim.width,\n\t\t\t\t\t\t\t\t\theight: imgDim.height,\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tconst copiedPages = await mergedPdf.copyPages(pdf, pdf.getPageIndices());\n\t\t\t\t\t\t\t\tcopiedPages.forEach((page) => {\n\t\t\t\t\t\t\t\t\tmergedPdf.addPage(page);\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (fileData.startsWith('data:image/png;base64,iVBOR')) {\n\t\t\t\t\t\t\t\tconst pdf = await PDFDocument.create();\n\t\t\t\t\t\t\t\tconst img = await pdf.embedPng(fileData);\n\t\t\t\t\t\t\t\tconst page = pdf.addPage();\n\t\t\t\t\t\t\t\tlet imgDim = img.scaleToFit(page.getWidth() * 0.75, page.getHeight() * 0.75);\n\t\t\t\t\t\t\t\tpage.drawImage(img, {\n\t\t\t\t\t\t\t\t\tx: page.getWidth() / 2 - imgDim.width / 2,\n\t\t\t\t\t\t\t\t\ty: page.getHeight() / 2 - imgDim.height / 2,\n\t\t\t\t\t\t\t\t\twidth: imgDim.width,\n\t\t\t\t\t\t\t\t\theight: imgDim.height,\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tconst copiedPages = await mergedPdf.copyPages(pdf, pdf.getPageIndices());\n\t\t\t\t\t\t\t\tcopiedPages.forEach((page) => {\n\t\t\t\t\t\t\t\t\tmergedPdf.addPage(page);\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tconsole.log('Error - unsupported!!', fileData.slice(0, 60));\n\t\t\t\t\t\t\t\tthrow new Error('Error in Merge PDF Resolve HTML: Unsupported file - ' + fileData.slice(0, 60));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcatch (error) {\n\t\t\t\t\t\t\tconsole.log('Error processing fileData:', fileData.slice(0, 60), error);\n\t\t\t\t\t\t\terror.message = `Error in Merge PDF Resolve HTML: Error processing filedata - ${error.message}`;\n\t\t\t\t\t\t\tthrow error;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tconsole.log('Error - no filedata!!', fileData);\n\t\t\t\t\t\tthrow new Error('Error in Merge PDF Resolve HTML: No File data');\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tlet mergedPDFUint8 = await mergedPdf.save();\n\n\t\t\t\tconst b64PDF = 'data:application/pdf;base64,' + Buffer.from(mergedPDFUint8).toString('base64');\n\n\t\t\t\tif (save) {\n\t\t\t\t\treturn this.callMethod('uploadFileAndSave', fileName, b64PDF, (4 * Math.ceil(b64PDF.length / 3)), -1, fileType, false);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\treturn b64PDF;\n\t\t\t\t}\n\t\t\t},\n\t\t\tworkerTaskWeight: 2\n\t\t}\n\t});\n}"]}
@@ -1,2 +1,2 @@
1
- "use strict";var __awaiter=this&&this.__awaiter||function(e,r,t,n){return new(t=t||Promise)(function(l,i){function fulfilled(e){try{step(n.next(e))}catch(e){i(e)}}function rejected(e){try{step(n.throw(e))}catch(e){i(e)}}function step(e){var i;e.done?l(e.value):((i=e.value)instanceof t?i:new t(function(e){e(i)})).then(fulfilled,rejected)}step((n=n.apply(e,r||[])).next())})},__generator=this&&this.__generator||function(r,t){var n,o,a,u={label:0,sent:function(){if(1&a[0])throw a[1];return a[1]},trys:[],ops:[]},d={next:verb(0),throw:verb(1),return:verb(2)};return"function"==typeof Symbol&&(d[Symbol.iterator]=function(){return this}),d;function verb(l){return function(e){var i=[l,e];if(n)throw new TypeError("Generator is already executing.");for(;u=d&&i[d=0]?0:u;)try{if(n=1,o&&(a=2&i[0]?o.return:i[0]?o.throw||((a=o.return)&&a.call(o),0):o.next)&&!(a=a.call(o,i[1])).done)return a;switch(o=0,(i=a?[2&i[0],a.value]:i)[0]){case 0:case 1:a=i;break;case 4:return u.label++,{value:i[1],done:!1};case 5:u.label++,o=i[1],i=[0];continue;case 7:i=u.ops.pop(),u.trys.pop();continue;default:if(!(a=0<(a=u.trys).length&&a[a.length-1])&&(6===i[0]||2===i[0])){u=0;continue}if(3===i[0]&&(!a||i[1]>a[0]&&i[1]<a[3]))u.label=i[1];else if(6===i[0]&&u.label<a[1])u.label=a[1],a=i;else{if(!(a&&u.label<a[2])){a[2]&&u.ops.pop(),u.trys.pop();continue}u.label=a[2],u.ops.push(i)}}i=t.call(r,u)}catch(e){i=[6,e],o=0}finally{n=a=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}}},simpl_schema_1=(Object.defineProperty(exports,"__esModule",{value:!0}),exports.loadReportBuilderMethods=void 0,require("simpl-schema")),pagination_model_1=require("../models/pagination.model"),resolveio_server_app_1=require("../resolveio-server-app"),common_1=require("../util/common"),schema_report_builder_1=require("../util/schema-report-builder");function loadReportBuilderMethods(e){e.methods({reportBuilderBuildTree:{check:new simpl_schema_1.default({collection_root:{type:String}}),function:function(e){var r=(0,schema_report_builder_1.getReportLookupSchemas)(e).sort(function(e,i){return e.collection_name.localeCompare(i.collection_name)}),t=r.find(function(e){return!0===e.is_root}).tree,n=(0,schema_report_builder_1.buildTree)(e,t);return Object.keys(t).filter(function(e){return e.endsWith("(Lookup)")}).forEach(function(i){var e=i.split("."),l=null;e.forEach(function(i){l=l?l.children.find(function(e){return e.fieldName===i}):n.find(function(e){return e.fieldName===i})}),l.children=(0,schema_report_builder_1.buildTree)(t[i].lookup_collection,r.find(function(e){return e.collection_name===t[i].lookup_collection}).tree,l)}),Promise.resolve({isLeaf:!1,children:n})}},reportBuilderGetDistinctValue:{check:new simpl_schema_1.default({treeLeaf:{type:Object,blackbox:!0}}),function:function(i){return __awaiter(this,void 0,void 0,function(){return __generator(this,function(e){return"String"===i.fieldType?i.fieldPath.includes("(Lookup)")?[2,(0,schema_report_builder_1.mongoCommand)("distinct",i.collection_name,i.fieldPath.replace(/^.+\(.+\) \(Lookup\)\.\$\./g,"").replace(/\.\$/g,""))]:[2,(0,schema_report_builder_1.mongoCommand)("distinct",i.collection_name,i.fieldPath.replace(/\.\$/g,""))]:[2,[]]})})}},reportBuilderGetResults:{check:new simpl_schema_1.default({reportType:{type:String},rootCollectionName:{type:String},options:{type:pagination_model_1.PaginationOptionsSchema},filters:{type:Array,optional:!0},"filters.$":{type:Object,blackbox:!0,optional:!0},filterArrays:{type:Array,optional:!0},"filterArrays.$":{type:Object,blackbox:!0,optional:!0},filterArrayFields:{type:Array,optional:!0},"filterArrayFields.$":{type:Object,blackbox:!0,optional:!0},selectedFields:{type:Array,optional:!0},"selectedFields.$":{type:Object,optional:!0,blackbox:!0},customFields:{type:Array,optional:!0},"customFields.$":{type:Object,optional:!0,blackbox:!0},groupsRow:{type:Array},"groupsRow.$":{type:Object,blackbox:!0},fieldsTotal:{type:Array},"fieldsTotal.$":{type:Object,blackbox:!0},fieldsLink:{type:Array},"fieldsLink.$":{type:Object,blackbox:!0},date_field:{type:String,optional:!0},date_interval:{type:String,optional:!0},displayType:{type:String,optional:!0}}),function:function(h,_,g,m,y,v,k,T,F,E,I,b,C,A){return void 0===m&&(m=[]),void 0===y&&(y=[]),void 0===v&&(v=[]),void 0===k&&(k=[]),void 0===T&&(T=[]),void 0===F&&(F=[]),void 0===E&&(E=[]),void 0===I&&(I=[]),void 0===b&&(b=""),void 0===C&&(C=""),void 0===A&&(A=""),__awaiter(this,void 0,void 0,function(){var i,u,l,o,r,t,n,a,d,c,s,p,f,$;return __generator(this,function(e){switch(e.label){case 0:if(i=resolveio_server_app_1.ResolveIOServer.getMongoManager().collection(_))return[3,1];throw new Error("Error in Report builder get results: Invalid collection");case 1:if(u=[],l={$and:[]},m.filter(function(e){return!e.$or&&!Object.keys(e).some(function(e){return e.includes("(Lookup)")})||e.$or&&!e.$or.some(function(e){return Object.keys(e).some(function(e){return e.includes("(Lookup)")})})}).length&&m.filter(function(e){return!e.$or&&!Object.keys(e).some(function(e){return e.includes("(Lookup)")})||e.$or&&!e.$or.some(function(e){return Object.keys(e).some(function(e){return e.includes("(Lookup)")})})}).forEach(function(e){l.$and.push(e)}),m.filter(function(e){return!e.$or&&!Object.keys(e).some(function(e){return e.includes("(Lookup)")})||e.$or&&!e.$or.some(function(e){return Object.keys(e).some(function(e){return e.includes("(Lookup)")})})}).length&&u.push({$match:l}),u.push({$addFields:{count:{$sum:1}}}),o=[],v.filter(function(e){return e.fieldPath}).forEach(function(i){for(var e,l=i.fieldPath.split(".$"),r="",t=0;t<l.length-1;t++)(r+=l[t]).split(".$")[r.split(".$").length-1].includes("(Lookup)")?u.some(function(e){return e.$lookup&&e.$lookup.as===i.lookup_as.replace(/\.\$/g,"")})||(u.push({$lookup:{from:i.lookup_collection,localField:i.lookup_local_key,foreignField:i.lookup_foreign_key,as:i.lookup_as.replace(/\.\$/g,"")}}),o.push(i.lookup_as.replace(/\.\$\./g,"_").replace(/\./g,"_")),u.push({$addFields:((e={})["size_"+i.lookup_as.replace(/\.\$\./g,"_").replace(/\./g,"_")]={$size:{$ifNull:["$"+i.lookup_as.replace(/\.\$/g,"").replace(/\./g,"_"),[]]}},e)}),u.push({$unwind:{path:"$"+i.lookup_as.replace(/\.\$/g,""),preserveNullAndEmptyArrays:!0}})):u.some(function(e){return e.$addFields&&Object.keys(e.$addFields).includes("size_"+r.replace(/\./g,"_"))})||(o.push(r.replace(/\./g,"_")),u.push({$addFields:((e={})["size_"+r.replace(/\./g,"_")]={$size:{$ifNull:["$"+r,[]]}},e)}),u.push({$unwind:{path:"$"+r,preserveNullAndEmptyArrays:!0}}))}),F.forEach(function(i){var e;if(i.field.includes("$"))for(var l=i.field.split(".$"),r="",t=0;t<l.length-1;t++)(r+=l[t]).split(".$")[r.split(".$").length-1].includes("(Lookup)")?u.some(function(e){return e.$lookup&&e.$lookup.as===i.treeItem.lookup_as.replace(/\.\$/g,"")})||(u.push({$lookup:{from:i.treeItem.lookup_collection,localField:i.treeItem.lookup_local_key,foreignField:i.treeItem.lookup_foreign_key,as:i.treeItem.lookup_as.replace(/\.\$/g,"")}}),o.push(i.treeItem.lookup_as.replace(/\.\$\./g,"_").replace(/\./g,"_")),u.push({$addFields:((e={})["size_"+i.treeItem.lookup_as.replace(/\.\$\./g,"_").replace(/\./g,"_")]={$size:{$ifNull:["$"+i.treeItem.lookup_as.replace(/\.\$/g,"").replace(/\./g,"_"),[]]}},e)}),u.push({$unwind:{path:"$"+i.treeItem.lookup_as.replace(/\.\$/g,""),preserveNullAndEmptyArrays:!0}})):u.some(function(e){return e.$addFields&&Object.keys(e.$addFields).includes("size_"+r.replace(/\.\$\./g,".").replace(/\./g,"_"))})||(o.push(r.replace(/\.\$\./g,".").replace(/\./g,"_")),u.push({$addFields:((e={})["size_"+r.replace(/\.\$\./g,".").replace(/\./g,"_")]={$size:{$ifNull:["$"+r.replace(/\.\$\./g,"."),[]]}},e)}),u.push({$unwind:{path:"$"+r.replace(/\.\$\./g,"."),preserveNullAndEmptyArrays:!0}})),r+=".$"}),k.forEach(function(i){var e,l;if(i.fieldPath.includes("$"))for(var r=i.fieldPath.split(".$"),t="",n=0;n<r.length-1;n++)(t+=r[n]).split(".$")[t.split(".$").length-1].includes("(Lookup)")?u.some(function(e){return e.$lookup&&e.$lookup.as===i.lookup_as.replace(/\.\$/g,"")})?r[n].includes("(Lookup)")||u.some(function(e){return e.$addFields&&Object.keys(e.$addFields).includes("size_"+t.replace(/\./g,"_"))})||(o.push(t.replace(/\./g,"_")),u.push({$addFields:((e={})["size_"+t.replace(/\./g,"_")]={$size:{$ifNull:["$"+t,[]]}},e)}),u.push({$unwind:{path:"$"+t,preserveNullAndEmptyArrays:!0}})):(u.push({$lookup:{from:i.lookup_collection,localField:i.lookup_local_key,foreignField:i.lookup_foreign_key,as:i.lookup_as.replace(/\.\$/g,"")}}),o.push(i.lookup_as.replace(/\.\$\./g,"_").replace(/\./g,"_")),u.push({$addFields:((e={})["size_"+i.lookup_as.replace(/\.\$\./g,"_").replace(/\./g,"_")]={$size:{$ifNull:["$"+i.lookup_as.replace(/\.\$/g,"").replace(/\./g,"_"),[]]}},e)}),u.push({$unwind:{path:"$"+i.lookup_as.replace(/\.\$/g,""),preserveNullAndEmptyArrays:!0}})):(u.some(function(e){return e.$addFields&&Object.keys(e.$addFields).includes("size_"+t.replace(/\./g,"_"))})||(o.push(t.replace(/\./g,"_")),u.push({$addFields:((l={})["size_"+t.replace(/\./g,"_")]={$size:{$ifNull:["$"+t,[]]}},l)})),"Count"===i.leafValueType||u.some(function(e){return e.$unwind&&e.$unwind.path==="$"+t})||u.push({$unwind:{path:"$"+t,preserveNullAndEmptyArrays:!0}}))}),r={$addFields:{}},E.filter(function(e){return"sum"===e.type}).forEach(function(l){k.filter(function(e){return"Number"===e.fieldType||"Count"===e.leafValueType}).forEach(function(e){var i=[];e.fieldPath.includes(".$")?o.filter(function(i){return!e.fieldPath.replace(/\.\$\./g,"_").replace(/\./g,"_").includes(i)&&!v.filter(function(e){return e.fieldPath}).some(function(e){return e.fieldPath.replace(/\.\$\./g,"_").replace(/\./g,"_").includes(i)})&&!I.some(function(e){return e.field_first.replace(/\.\$\./g,"_").replace(/\./g,"_").includes(i)||e.field_second.replace(/\.\$\./g,"_").replace(/\./g,"_").includes(i)})}).forEach(function(e){i.push({$cond:{if:{$gt:["$size_"+e,0]},then:"$size_"+e,else:1}})}):o.forEach(function(e){i.push({$cond:{if:{$gt:["$size_"+e,0]},then:"$size_"+e,else:1}})}),i.length?"Count"===e.leafValueType?r.$addFields[l.id+"_"+e.id]={$divide:["$count",{$multiply:i}]}:r.$addFields[l.id+"_"+e.id]={$divide:["$"+e.fieldPath.replace(/\.\$/g,""),{$multiply:i}]}:"Count"===e.leafValueType?r.$addFields[l.id+"_"+e.id]="$count":r.$addFields[l.id+"_"+e.id]="$"+e.fieldPath.replace(/\.\$/g,"")})}),k.filter(function(e){return"Number"===e.fieldType&&"Sum"===e.leafValueType}).forEach(function(e){var i=[];o.filter(function(i){return!(e.fieldPath.replace(/\.\$\./g,"_").replace(/\./g,"_").includes(i)||F.some(function(e){return e.field.replace(/\.\$\./g,"_").replace(/\./g,"_").includes(i)})||v.filter(function(e){return e.fieldPath}).some(function(e){return e.fieldPath.replace(/\.\$\./g,"_").replace(/\./g,"_").includes(i)})||I.some(function(e){return e.field_first.replace(/\.\$\./g,"_").replace(/\./g,"_").includes(i)||e.field_second.replace(/\.\$\./g,"_").replace(/\./g,"_").includes(i)}))}).forEach(function(e){i.push({$cond:{if:{$gt:["$size_"+e,0]},then:"$size_"+e,else:1}})}),i.length&&(r.$addFields[e.fieldPath.replace(/\.\$/g,"")]={$divide:["$"+e.fieldPath.replace(/\.\$/g,""),{$multiply:i}]})}),k.filter(function(e){return"Count"===e.leafValueType}).forEach(function(l){var i=[];o.filter(function(i){return!(l.fieldPath.replace(/\.\$\./g,"_").replace(/\./g,"_").includes(i)||F.some(function(e){return e.field.replace(/\.\$\./g,"_").replace(/\./g,"_").includes(i)})||v.filter(function(e){return e.fieldPath}).some(function(e){return e.fieldPath.replace(/\.\$\./g,"_").replace(/\./g,"_").includes(i)})||I.some(function(e){return e.field_first.replace(/\.\$\./g,"_").replace(/\./g,"_").includes(i)||e.field_second.replace(/\.\$\./g,"_").replace(/\./g,"_").includes(i)}))}).forEach(function(e){i.push({$cond:{if:{$gt:["$size_"+e,0]},then:"$size_"+e,else:1}})}),i.length?r.$addFields["count_"+l.fieldPath.replace(/\.\$/g,"")]={$divide:["$count",{$multiply:i}]}:"Dated"!==h&&o.filter(function(e){return l.fieldPath.replace(/\.\$\./g,"_").includes(e)}).length?o.filter(function(e){return l.fieldPath.replace(/\.\$\./g,"_").includes(e)}).forEach(function(e){r.$addFields["count_"+l.fieldPath.replace(/\.\$/g,"")]="$size_"+e}):r.$addFields["count_"+l.fieldPath.replace(/\.\$/g,"")]="$count"}),E.filter(function(e){return"avg"===e.type}).forEach(function(i){k.filter(function(e){return"Number"===e.fieldType||"Count"===e.leafValueType}).forEach(function(e){r.$addFields[i.id+"_"+e.id]="$"+e.fieldPath.replace(/\.\$/g,"")})}),0<Object.keys(r.$addFields).length&&u.push(r),I.filter(function(e){return e.field_first&&e.field_second}).forEach(function(e){var i;u.push({$addFields:((i={})[e.id]={$cmp:["$"+e.field_first.replace(/\.\$/g,""),"$"+e.field_second.replace(/\.\$/g,"")]},i)}),u.push({$match:((i={})[e.id]=0,i)})}),T.forEach(function(a){a.operations.filter(function(e){return e.operation&&!e.fields.some(function(e){return(null===e.field||""===e.field)&&null===e.value})}).forEach(function(i,e){var l,r,t,n,o={};"divide"===i.operation?(r=[],i.fields.filter(function(e){return e.field||null!==e.value}).forEach(function(e){e.field?(r.push({$eq:["$"+e.field.replace(/\.\$/g,""),0]}),r.push({$eq:["$"+e.field.replace(/\.\$/g,""),null]})):(r.push({$eq:[e.value,0]}),r.push({$eq:[e.value,null]}))}),0<e&&(r.push({$eq:["$"+a.selFieldId,0]}),r.push({$eq:["$"+a.selFieldId,null]})),t=[],0<e&&t.push("$"+a.selFieldId),i.fields.filter(function(e){return e.field||null!==e.value}).forEach(function(e){e.field?t.push("$"+e.field.replace(/\.\$/g,"")):t.push(e.value)}),o[a.selFieldId]={$cond:{if:{$or:r},then:0,else:((l={})["$"+i.operation]=t,l)}}):(o[a.selFieldId]=((l={})["$"+i.operation]=[],l),0<e&&o[a.selFieldId]["$"+i.operation].push({$cond:{if:{$eq:["$"+a.selFieldId,null]},then:0,else:"$"+a.selFieldId}}),n=[],i.fields.filter(function(e){return e.field||null!==e.value}).forEach(function(e){e.field?n.push({$eq:["$"+e.field.replace(/\.\$/g,""),null]}):n.push({$eq:[e.value,null]})}),i.fields.filter(function(e){return e.field||null!==e.value}).forEach(function(e){e.field?o[a.selFieldId]["$"+i.operation].push({$cond:{if:{$or:n},then:0,else:"$"+e.field.replace(/\.\$/g,"")}}):o[a.selFieldId]["$"+i.operation].push({$cond:{if:{$or:n},then:0,else:e.value}})})),u.push({$addFields:o})})}),E.forEach(function(l){T.forEach(function(e){var i;u.push({$addFields:((i={})[l.id+"_"+e.selFieldId]="$"+e.selFieldId,i)})})}),t={$and:[]},m.filter(function(e){return!e.$or&&Object.keys(e).some(function(e){return e.includes("(Lookup)")})||e.$or&&e.$or.some(function(e){return Object.keys(e).some(function(e){return e.includes("(Lookup)")})})}).length&&m.filter(function(e){return!e.$or&&Object.keys(e).some(function(e){return e.includes("(Lookup)")})||e.$or&&e.$or.some(function(e){return Object.keys(e).some(function(e){return e.includes("(Lookup)")})})}).forEach(function(e){t.$and.push(e)}),y.forEach(function(e){t.$and.push(e)}),t.$and.length&&u.push({$match:t}),n={_id:{}},F.length||!A||"grouped"===A?(F.length?g.sort&&(a={},Object.keys(g.sort).forEach(function(i){var e=k.find(function(e){return e.id===i});e&&(a[e.fieldPath.replace(/\.\$/g,"")]=g.sort[i])}),0<Object.keys(a).length)&&u.push({$sort:a}):n._id="$_id",F.forEach(function(e){n._id[e.id]="$"+e.field.replace(/\.\$/g,""),b&&C&&("Seconds"===C?(n._id.second={$second:{date:"$"+b.replace(/\.\$/g,""),timezone:process.env.TZ_CLIENT||"America/Chicago"}},n._id.minute={$minute:{date:"$"+b.replace(/\.\$/g,""),timezone:process.env.TZ_CLIENT||"America/Chicago"}},n._id.hour={$hour:{date:"$"+b.replace(/\.\$/g,""),timezone:process.env.TZ_CLIENT||"America/Chicago"}},n._id.day={$dayOfMonth:{date:"$"+b.replace(/\.\$/g,""),timezone:process.env.TZ_CLIENT||"America/Chicago"}},n._id.month={$month:{date:"$"+b.replace(/\.\$/g,""),timezone:process.env.TZ_CLIENT||"America/Chicago"}},n._id.year={$year:{date:"$"+b.replace(/\.\$/g,""),timezone:process.env.TZ_CLIENT||"America/Chicago"}}):"Minutes"===C?(n._id.minute={$minute:{date:"$"+b.replace(/\.\$/g,""),timezone:process.env.TZ_CLIENT||"America/Chicago"}},n._id.hour={$hour:{date:"$"+b.replace(/\.\$/g,""),timezone:process.env.TZ_CLIENT||"America/Chicago"}},n._id.day={$dayOfMonth:{date:"$"+b.replace(/\.\$/g,""),timezone:process.env.TZ_CLIENT||"America/Chicago"}},n._id.month={$month:{date:"$"+b.replace(/\.\$/g,""),timezone:process.env.TZ_CLIENT||"America/Chicago"}},n._id.year={$year:{date:"$"+b.replace(/\.\$/g,""),timezone:process.env.TZ_CLIENT||"America/Chicago"}}):"Hours"===C?(n._id.hour={$hour:{date:"$"+b.replace(/\.\$/g,""),timezone:process.env.TZ_CLIENT||"America/Chicago"}},n._id.day={$dayOfMonth:{date:"$"+b.replace(/\.\$/g,""),timezone:process.env.TZ_CLIENT||"America/Chicago"}},n._id.month={$month:{date:"$"+b.replace(/\.\$/g,""),timezone:process.env.TZ_CLIENT||"America/Chicago"}},n._id.year={$year:{date:"$"+b.replace(/\.\$/g,""),timezone:process.env.TZ_CLIENT||"America/Chicago"}}):"Daily"===C?(n._id.day={$dayOfMonth:{date:"$"+b.replace(/\.\$/g,""),timezone:process.env.TZ_CLIENT||"America/Chicago"}},n._id.month={$month:{date:"$"+b.replace(/\.\$/g,""),timezone:process.env.TZ_CLIENT||"America/Chicago"}},n._id.year={$year:{date:"$"+b.replace(/\.\$/g,""),timezone:process.env.TZ_CLIENT||"America/Chicago"}}):"Weekly"===C?(n._id.week={$isoWeek:{date:"$"+b.replace(/\.\$/g,""),timezone:process.env.TZ_CLIENT||"America/Chicago"}},n._id.year={$isoWeekYear:{date:"$"+b.replace(/\.\$/g,""),timezone:process.env.TZ_CLIENT||"America/Chicago"}}):"Monthly"===C||"Quarterly"===C?(n._id.month={$month:{date:"$"+b.replace(/\.\$/g,""),timezone:process.env.TZ_CLIENT||"America/Chicago"}},n._id.year={$year:{date:"$"+b.replace(/\.\$/g,""),timezone:process.env.TZ_CLIENT||"America/Chicago"}}):"Yearly"===C&&(n._id.year={$year:{date:"$"+b.replace(/\.\$/g,""),timezone:process.env.TZ_CLIENT||"America/Chicago"}}))}),k.forEach(function(e){"Average"===e.leafValueType?n[e.id]={$avg:"$"+e.fieldPath.replace(/\.\$/g,"")}:"Sum"===e.leafValueType?n[e.id]={$sum:"$"+e.fieldPath.replace(/\.\$/g,"")}:"Count"===e.leafValueType?n[e.id]={$sum:"$count_"+e.fieldPath.replace(/\.\$/g,"")}:"Minimum"===e.leafValueType?n[e.id]={$min:"$"+e.fieldPath.replace(/\.\$/g,"")}:"Maximum"===e.leafValueType?n[e.id]={$max:"$"+e.fieldPath.replace(/\.\$/g,"")}:"First"===e.leafValueType?n[e.id]={$first:"$"+e.fieldPath.replace(/\.\$/g,"")}:"Last"===e.leafValueType?n[e.id]={$last:"$"+e.fieldPath.replace(/\.\$/g,"")}:"Unique"===e.leafValueType?n[e.id]={$addToSet:"$"+e.fieldPath.replace(/\.\$/g,"")}:n[e.id]={$push:{$ifNull:["$"+e.fieldPath.replace(/\.\$/g,""),null]}}}),T.forEach(function(e){"Average"===e.leafValueType?n[e.selFieldId]={$avg:"$"+e.selFieldId}:"Sum"===e.leafValueType?n[e.selFieldId]={$sum:"$"+e.selFieldId}:"Count"===e.leafValueType?n[e.selFieldId]="Dated"===h?{$sum:"$count_"+e.selFieldId}:{$push:"$count_"+e.selFieldId}:"Minimum"===e.leafValueType?n[e.selFieldId]={$min:"$"+e.selFieldId}:"Maximum"===e.leafValueType?n[e.selFieldId]={$max:"$"+e.selFieldId}:"First"===e.leafValueType?n[e.selFieldId]={$first:"$"+e.selFieldId}:"Last"===e.leafValueType?n[e.selFieldId]={$last:"$"+e.selFieldId}:"Unique"===e.leafValueType?n[e.selFieldId]={$addToSet:"$"+e.selFieldId}:n[e.selFieldId]={$push:{$ifNull:["$"+e.selFieldId,null]}}}),E.length&&E.forEach(function(l){k.filter(function(e){return"Number"===e.fieldType||"Count"===e.leafValueType}).forEach(function(e){var i;n[l.id+"_"+e.id]=((i={})["$"+l.type]="$"+l.id+"_"+e.id,i)}),T.forEach(function(e){var i;n[l.id+"_"+e.selFieldId]=((i={})["$"+l.type]="$"+l.id+"_"+e.selFieldId,i)})}),u.push({$group:n})):(d={_id:1},k.forEach(function(e){"Average"===e.leafValueType?d[e.id]={$avg:"$"+e.fieldPath.replace(/\.\$/g,"")}:"Sum"===e.leafValueType?d[e.id]={$sum:"$"+e.fieldPath.replace(/\.\$/g,"")}:"Count"===e.leafValueType?d[e.id]={$sum:1}:"Minimum"===e.leafValueType?d[e.id]={$min:"$"+e.fieldPath.replace(/\.\$/g,"")}:"Maximum"===e.leafValueType?d[e.id]={$max:"$"+e.fieldPath.replace(/\.\$/g,"")}:d[e.id]="$"+e.fieldPath.replace(/\.\$/g,"")}),T.forEach(function(e){d[e.selFieldId]="Average"===e?{$avg:"$"+e.selFieldId}:"Sum"===e?{$sum:"$"+e.selFieldId}:"Count"===e?{$sum:1}:"Minimum"===e?{$min:"$"+e.selFieldId}:"Maximum"===e?{$max:"$"+e.selFieldId}:"$"+e.selFieldId}),!E.length||"List"!==h&&"Dated"!==h||E.forEach(function(l){k.filter(function(e){return"Number"===e.fieldType||"Count"===e.leafValueType}).forEach(function(e){var i;d[l.id+"_"+e.id]=((i={})["$"+l.type]="$"+l.id+"_"+e.id,i)}),T.forEach(function(e){var i;d[l.id+"_"+e.selFieldId]=((i={})["$"+l.type]="$"+l.id+"_"+e.selFieldId,i)})}),u.push({$project:d})),g.sort&&u.push({$sort:g.sort}),"Group"===h&&1<F.length)for(c=function(l){for(var e,r,t,n,o={_id:1},a=(o[F[l].id]={_id:((e={})[F[l].id]="$_id."+F[l].id,e)},l===F.length-1?(k.forEach(function(e){o[F[l].id][e.id]="$"+e.id}),T.forEach(function(e){o[F[l].id][e.selFieldId]="$"+e.selFieldId})):o[F[l].id][F[l+1].id]="$"+F[l+1].id,E.forEach(function(i){k.filter(function(e){return"Number"===e.fieldType||"Count"===e.leafValueType}).forEach(function(e){o[i.id+"_"+e.id]=1,o[F[l].id][i.id+"_"+e.id]="$"+i.id+"_"+e.id}),T.forEach(function(e){o[F[l].id][i.id+"_"+e.selFieldId]="$"+i.id+"_"+e.selFieldId})}),u.push({$project:o}),{_id:{}}),i=0;i<l;i++)a._id[F[i].id]="$_id."+F[i].id;a[F[l].id]={$push:"$"+F[l].id},E.forEach(function(l){k.filter(function(e){return"Number"===e.fieldType||"Count"===e.leafValueType}).forEach(function(e){var i;a[l.id+"_"+e.id]=((i={})["$"+l.type]="$"+l.id+"_"+e.id,i)}),T.forEach(function(e){var i;a[l.id+"_"+e.selFieldId]=((i={})["$"+l.type]="$"+l.id+"_"+e.selFieldId,i)})}),u.push({$group:a}),g.sort&&(r=Object.keys(g.sort),t={},n="",F.forEach(function(e,i){0<i&&(n+="gr_"+(i+1)+"."),r.includes("_id.gr_"+(i+1))?t[n+"_id.gr_"+(i+1)]=g.sort["_id.gr_"+(i+1)]:t[n+"_id.gr_"+(i+1)]=1}),r.filter(function(e){return!e.startsWith("_id.gr_")}).forEach(function(e){t[n+e]=g.sort[e]}),u.push({$sort:t}))},s=F.length-1;1<=s;s--)c(s);p=null,e.label=2;case 2:return e.trys.push([2,4,,5]),[4,i.aggregate(u,{allowDiskUse:!0,readPreference:"http://localhost:4200"!==this.serverConfig.ROOT_URL?"secondary":"primary"},!0)];case 3:return p=e.sent(),[3,5];case 4:return f=e.sent(),console.log(f),[3,5];case 5:return $={},p&&E.forEach(function(l){k.filter(function(e){return"Number"===e.fieldType||"Count"===e.leafValueType}).forEach(function(i){"sum"===l.type?$[l.id+"_"+i.id]=p.map(function(e){return e[l.id+"_"+i.id]||0}).reduce(function(e,i){return e+i},0):"avg"===l.type&&($[l.id+"_"+i.id]=(0,common_1.round)(p.map(function(e){return e[l.id+"_"+i.id]||0}).reduce(function(e,i){return e+i},0)/p.length))}),T.forEach(function(i){"sum"===l.type?$[l.id+"_"+i.selFieldId]=p.map(function(e){return e[l.id+"_"+i.selFieldId]||0}).reduce(function(e,i){return e+i},0):"avg"===l.type&&($[l.id+"_"+i.selFieldId]=(0,common_1.round)(p.map(function(e){return e[l.id+"_"+i.selFieldId]||0}).reduce(function(e,i){return e+i},0)/p.length))})}),[2,[{count:p?p.length:0,results:p?g.limit?p.splice(0,g.limit):p:[],totals:$}]]}})})},workerTaskWeight:3}})}exports.loadReportBuilderMethods=loadReportBuilderMethods;
1
+ "use strict";var __awaiter=this&&this.__awaiter||function(e,r,t,n){return new(t=t||Promise)(function(l,i){function fulfilled(e){try{step(n.next(e))}catch(e){i(e)}}function rejected(e){try{step(n.throw(e))}catch(e){i(e)}}function step(e){var i;e.done?l(e.value):((i=e.value)instanceof t?i:new t(function(e){e(i)})).then(fulfilled,rejected)}step((n=n.apply(e,r||[])).next())})},__generator=this&&this.__generator||function(r,t){var n,o,a,u={label:0,sent:function(){if(1&a[0])throw a[1];return a[1]},trys:[],ops:[]},d={next:verb(0),throw:verb(1),return:verb(2)};return"function"==typeof Symbol&&(d[Symbol.iterator]=function(){return this}),d;function verb(l){return function(e){var i=[l,e];if(n)throw new TypeError("Generator is already executing.");for(;u=d&&i[d=0]?0:u;)try{if(n=1,o&&(a=2&i[0]?o.return:i[0]?o.throw||((a=o.return)&&a.call(o),0):o.next)&&!(a=a.call(o,i[1])).done)return a;switch(o=0,(i=a?[2&i[0],a.value]:i)[0]){case 0:case 1:a=i;break;case 4:return u.label++,{value:i[1],done:!1};case 5:u.label++,o=i[1],i=[0];continue;case 7:i=u.ops.pop(),u.trys.pop();continue;default:if(!(a=0<(a=u.trys).length&&a[a.length-1])&&(6===i[0]||2===i[0])){u=0;continue}if(3===i[0]&&(!a||i[1]>a[0]&&i[1]<a[3]))u.label=i[1];else if(6===i[0]&&u.label<a[1])u.label=a[1],a=i;else{if(!(a&&u.label<a[2])){a[2]&&u.ops.pop(),u.trys.pop();continue}u.label=a[2],u.ops.push(i)}}i=t.call(r,u)}catch(e){i=[6,e],o=0}finally{n=a=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}}},simpl_schema_1=(Object.defineProperty(exports,"__esModule",{value:!0}),exports.loadReportBuilderMethods=void 0,require("simpl-schema")),pagination_model_1=require("../models/pagination.model"),resolveio_server_app_1=require("../resolveio-server-app"),common_1=require("../util/common"),schema_report_builder_1=require("../util/schema-report-builder");function loadReportBuilderMethods(e){e.methods({reportBuilderBuildTree:{check:new simpl_schema_1.default({collection_root:{type:String}}),function:function(e){var r=(0,schema_report_builder_1.getReportLookupSchemas)(e).sort(function(e,i){return e.collection_name.localeCompare(i.collection_name)}),t=r.find(function(e){return!0===e.is_root}).tree,n=(0,schema_report_builder_1.buildTree)(e,t);return Object.keys(t).filter(function(e){return e.endsWith("(Lookup)")}).forEach(function(i){var e=i.split("."),l=null;e.forEach(function(i){l=l?l.children.find(function(e){return e.fieldName===i}):n.find(function(e){return e.fieldName===i})}),l.children=(0,schema_report_builder_1.buildTree)(t[i].lookup_collection,r.find(function(e){return e.collection_name===t[i].lookup_collection}).tree,l)}),Promise.resolve({isLeaf:!1,children:n})}},reportBuilderGetDistinctValue:{check:new simpl_schema_1.default({treeLeaf:{type:Object,blackbox:!0}}),function:function(i){return __awaiter(this,void 0,void 0,function(){return __generator(this,function(e){return"String"===i.fieldType?i.fieldPath.includes("(Lookup)")?[2,(0,schema_report_builder_1.mongoCommand)("distinct",i.collection_name,i.fieldPath.replace(/^.+\(.+\) \(Lookup\)\.\$\./g,"").replace(/\.\$/g,""))]:[2,(0,schema_report_builder_1.mongoCommand)("distinct",i.collection_name,i.fieldPath.replace(/\.\$/g,""))]:[2,[]]})})}},reportBuilderGetResults:{check:new simpl_schema_1.default({reportType:{type:String},rootCollectionName:{type:String},options:{type:pagination_model_1.PaginationOptionsSchema},filters:{type:Array,optional:!0},"filters.$":{type:Object,blackbox:!0,optional:!0},filterArrays:{type:Array,optional:!0},"filterArrays.$":{type:Object,blackbox:!0,optional:!0},filterArrayFields:{type:Array,optional:!0},"filterArrayFields.$":{type:Object,blackbox:!0,optional:!0},selectedFields:{type:Array,optional:!0},"selectedFields.$":{type:Object,optional:!0,blackbox:!0},customFields:{type:Array,optional:!0},"customFields.$":{type:Object,optional:!0,blackbox:!0},groupsRow:{type:Array},"groupsRow.$":{type:Object,blackbox:!0},fieldsTotal:{type:Array},"fieldsTotal.$":{type:Object,blackbox:!0},fieldsLink:{type:Array},"fieldsLink.$":{type:Object,blackbox:!0},date_field:{type:String,optional:!0},date_interval:{type:String,optional:!0},displayType:{type:String,optional:!0}}),function:function(h,_,g,m,y,v,k,T,F,E,I,b,C,A){return void 0===m&&(m=[]),void 0===y&&(y=[]),void 0===v&&(v=[]),void 0===k&&(k=[]),void 0===T&&(T=[]),void 0===F&&(F=[]),void 0===E&&(E=[]),void 0===I&&(I=[]),void 0===b&&(b=""),void 0===C&&(C=""),void 0===A&&(A=""),__awaiter(this,void 0,void 0,function(){var i,u,l,o,r,t,n,a,d,c,s,p,f,$;return __generator(this,function(e){switch(e.label){case 0:if(i=resolveio_server_app_1.ResolveIOServer.getMongoManager().collection(_))return[3,1];throw new Error("Error in Report builder get results: Invalid collection");case 1:if(u=[],l={$and:[]},m.filter(function(e){return!e.$or&&!Object.keys(e).some(function(e){return e.includes("(Lookup)")})||e.$or&&!e.$or.some(function(e){return Object.keys(e).some(function(e){return e.includes("(Lookup)")})})}).length&&m.filter(function(e){return!e.$or&&!Object.keys(e).some(function(e){return e.includes("(Lookup)")})||e.$or&&!e.$or.some(function(e){return Object.keys(e).some(function(e){return e.includes("(Lookup)")})})}).forEach(function(e){l.$and.push(e)}),m.filter(function(e){return!e.$or&&!Object.keys(e).some(function(e){return e.includes("(Lookup)")})||e.$or&&!e.$or.some(function(e){return Object.keys(e).some(function(e){return e.includes("(Lookup)")})})}).length&&u.push({$match:l}),u.push({$addFields:{count:{$sum:1}}}),o=[],v.filter(function(e){return e.fieldPath}).forEach(function(i){for(var e,l=i.fieldPath.split(".$"),r="",t=0;t<l.length-1;t++)(r+=l[t]).split(".$")[r.split(".$").length-1].includes("(Lookup)")?u.some(function(e){return e.$lookup&&e.$lookup.as===i.lookup_as.replace(/\.\$/g,"")})||(u.push({$lookup:{from:i.lookup_collection,localField:i.lookup_local_key,foreignField:i.lookup_foreign_key,as:i.lookup_as.replace(/\.\$/g,"")}}),o.push(i.lookup_as.replace(/\.\$\./g,"_").replace(/\./g,"_")),u.push({$addFields:((e={})["size_"+i.lookup_as.replace(/\.\$\./g,"_").replace(/\./g,"_")]={$size:{$ifNull:["$"+i.lookup_as.replace(/\.\$/g,"").replace(/\./g,"_"),[]]}},e)}),u.push({$unwind:{path:"$"+i.lookup_as.replace(/\.\$/g,""),preserveNullAndEmptyArrays:!0}})):u.some(function(e){return e.$addFields&&Object.keys(e.$addFields).includes("size_"+r.replace(/\./g,"_"))})||(o.push(r.replace(/\./g,"_")),u.push({$addFields:((e={})["size_"+r.replace(/\./g,"_")]={$size:{$ifNull:["$"+r,[]]}},e)}),u.push({$unwind:{path:"$"+r,preserveNullAndEmptyArrays:!0}}))}),F.forEach(function(i){var e;if(i.field.includes("$"))for(var l=i.field.split(".$"),r="",t=0;t<l.length-1;t++)(r+=l[t]).split(".$")[r.split(".$").length-1].includes("(Lookup)")?u.some(function(e){return e.$lookup&&e.$lookup.as===i.treeItem.lookup_as.replace(/\.\$/g,"")})||(u.push({$lookup:{from:i.treeItem.lookup_collection,localField:i.treeItem.lookup_local_key,foreignField:i.treeItem.lookup_foreign_key,as:i.treeItem.lookup_as.replace(/\.\$/g,"")}}),o.push(i.treeItem.lookup_as.replace(/\.\$\./g,"_").replace(/\./g,"_")),u.push({$addFields:((e={})["size_"+i.treeItem.lookup_as.replace(/\.\$\./g,"_").replace(/\./g,"_")]={$size:{$ifNull:["$"+i.treeItem.lookup_as.replace(/\.\$/g,"").replace(/\./g,"_"),[]]}},e)}),u.push({$unwind:{path:"$"+i.treeItem.lookup_as.replace(/\.\$/g,""),preserveNullAndEmptyArrays:!0}})):u.some(function(e){return e.$addFields&&Object.keys(e.$addFields).includes("size_"+r.replace(/\.\$\./g,".").replace(/\./g,"_"))})||(o.push(r.replace(/\.\$\./g,".").replace(/\./g,"_")),u.push({$addFields:((e={})["size_"+r.replace(/\.\$\./g,".").replace(/\./g,"_")]={$size:{$ifNull:["$"+r.replace(/\.\$\./g,"."),[]]}},e)}),u.push({$unwind:{path:"$"+r.replace(/\.\$\./g,"."),preserveNullAndEmptyArrays:!0}})),r+=".$"}),k.forEach(function(i){var e,l;if(i.fieldPath.includes("$"))for(var r=i.fieldPath.split(".$"),t="",n=0;n<r.length-1;n++)(t+=r[n]).split(".$")[t.split(".$").length-1].includes("(Lookup)")?u.some(function(e){return e.$lookup&&e.$lookup.as===i.lookup_as.replace(/\.\$/g,"")})?r[n].includes("(Lookup)")||u.some(function(e){return e.$addFields&&Object.keys(e.$addFields).includes("size_"+t.replace(/\./g,"_"))})||(o.push(t.replace(/\./g,"_")),u.push({$addFields:((e={})["size_"+t.replace(/\./g,"_")]={$size:{$ifNull:["$"+t,[]]}},e)}),u.push({$unwind:{path:"$"+t,preserveNullAndEmptyArrays:!0}})):(u.push({$lookup:{from:i.lookup_collection,localField:i.lookup_local_key,foreignField:i.lookup_foreign_key,as:i.lookup_as.replace(/\.\$/g,"")}}),o.push(i.lookup_as.replace(/\.\$\./g,"_").replace(/\./g,"_")),u.push({$addFields:((e={})["size_"+i.lookup_as.replace(/\.\$\./g,"_").replace(/\./g,"_")]={$size:{$ifNull:["$"+i.lookup_as.replace(/\.\$/g,"").replace(/\./g,"_"),[]]}},e)}),u.push({$unwind:{path:"$"+i.lookup_as.replace(/\.\$/g,""),preserveNullAndEmptyArrays:!0}})):(u.some(function(e){return e.$addFields&&Object.keys(e.$addFields).includes("size_"+t.replace(/\./g,"_"))})||(o.push(t.replace(/\./g,"_")),u.push({$addFields:((l={})["size_"+t.replace(/\./g,"_")]={$size:{$ifNull:["$"+t,[]]}},l)})),"Count"===i.leafValueType||u.some(function(e){return e.$unwind&&e.$unwind.path==="$"+t})||u.push({$unwind:{path:"$"+t,preserveNullAndEmptyArrays:!0}}))}),r={$addFields:{}},E.filter(function(e){return"sum"===e.type}).forEach(function(l){k.filter(function(e){return"Number"===e.fieldType||"Count"===e.leafValueType}).forEach(function(e){var i=[];e.fieldPath.includes(".$")?o.filter(function(i){return!e.fieldPath.replace(/\.\$\./g,"_").replace(/\./g,"_").includes(i)&&!v.filter(function(e){return e.fieldPath}).some(function(e){return e.fieldPath.replace(/\.\$\./g,"_").replace(/\./g,"_").includes(i)})&&!I.some(function(e){return e.field_first.replace(/\.\$\./g,"_").replace(/\./g,"_").includes(i)||e.field_second.replace(/\.\$\./g,"_").replace(/\./g,"_").includes(i)})}).forEach(function(e){i.push({$cond:{if:{$gt:["$size_"+e,0]},then:"$size_"+e,else:1}})}):o.forEach(function(e){i.push({$cond:{if:{$gt:["$size_"+e,0]},then:"$size_"+e,else:1}})}),i.length?"Count"===e.leafValueType?r.$addFields[l.id+"_"+e.id]={$divide:["$count",{$multiply:i}]}:r.$addFields[l.id+"_"+e.id]={$divide:["$"+e.fieldPath.replace(/\.\$/g,""),{$multiply:i}]}:"Count"===e.leafValueType?r.$addFields[l.id+"_"+e.id]="$count":r.$addFields[l.id+"_"+e.id]="$"+e.fieldPath.replace(/\.\$/g,"")})}),k.filter(function(e){return"Number"===e.fieldType&&"Sum"===e.leafValueType}).forEach(function(e){var i=[];o.filter(function(i){return!(e.fieldPath.replace(/\.\$\./g,"_").replace(/\./g,"_").includes(i)||F.some(function(e){return e.field.replace(/\.\$\./g,"_").replace(/\./g,"_").includes(i)})||v.filter(function(e){return e.fieldPath}).some(function(e){return e.fieldPath.replace(/\.\$\./g,"_").replace(/\./g,"_").includes(i)})||I.some(function(e){return e.field_first.replace(/\.\$\./g,"_").replace(/\./g,"_").includes(i)||e.field_second.replace(/\.\$\./g,"_").replace(/\./g,"_").includes(i)}))}).forEach(function(e){i.push({$cond:{if:{$gt:["$size_"+e,0]},then:"$size_"+e,else:1}})}),i.length&&(r.$addFields[e.fieldPath.replace(/\.\$/g,"")]={$divide:["$"+e.fieldPath.replace(/\.\$/g,""),{$multiply:i}]})}),k.filter(function(e){return"Count"===e.leafValueType}).forEach(function(l){var i=[];o.filter(function(i){return!(l.fieldPath.replace(/\.\$\./g,"_").replace(/\./g,"_").includes(i)||F.some(function(e){return e.field.replace(/\.\$\./g,"_").replace(/\./g,"_").includes(i)})||v.filter(function(e){return e.fieldPath}).some(function(e){return e.fieldPath.replace(/\.\$\./g,"_").replace(/\./g,"_").includes(i)})||I.some(function(e){return e.field_first.replace(/\.\$\./g,"_").replace(/\./g,"_").includes(i)||e.field_second.replace(/\.\$\./g,"_").replace(/\./g,"_").includes(i)}))}).forEach(function(e){i.push({$cond:{if:{$gt:["$size_"+e,0]},then:"$size_"+e,else:1}})}),i.length?r.$addFields["count_"+l.fieldPath.replace(/\.\$/g,"")]={$divide:["$count",{$multiply:i}]}:"Dated"!==h&&o.filter(function(e){return l.fieldPath.replace(/\.\$\./g,"_").includes(e)}).length?o.filter(function(e){return l.fieldPath.replace(/\.\$\./g,"_").includes(e)}).forEach(function(e){r.$addFields["count_"+l.fieldPath.replace(/\.\$/g,"")]="$size_"+e}):r.$addFields["count_"+l.fieldPath.replace(/\.\$/g,"")]="$count"}),E.filter(function(e){return"avg"===e.type}).forEach(function(i){k.filter(function(e){return"Number"===e.fieldType||"Count"===e.leafValueType}).forEach(function(e){r.$addFields[i.id+"_"+e.id]="$"+e.fieldPath.replace(/\.\$/g,"")})}),0<Object.keys(r.$addFields).length&&u.push(r),I.filter(function(e){return e.field_first&&e.field_second}).forEach(function(e){var i;u.push({$addFields:((i={})[e.id]={$cmp:["$"+e.field_first.replace(/\.\$/g,""),"$"+e.field_second.replace(/\.\$/g,"")]},i)}),u.push({$match:((i={})[e.id]=0,i)})}),T.forEach(function(a){a.operations.filter(function(e){return e.operation&&!e.fields.some(function(e){return(null===e.field||""===e.field)&&null===e.value})}).forEach(function(i,e){var l,r,t,n,o={};"divide"===i.operation?(r=[],i.fields.filter(function(e){return e.field||null!==e.value}).forEach(function(e){e.field?(r.push({$eq:["$"+e.field.replace(/\.\$/g,""),0]}),r.push({$eq:["$"+e.field.replace(/\.\$/g,""),null]})):(r.push({$eq:[e.value,0]}),r.push({$eq:[e.value,null]}))}),0<e&&(r.push({$eq:["$"+a.selFieldId,0]}),r.push({$eq:["$"+a.selFieldId,null]})),t=[],0<e&&t.push("$"+a.selFieldId),i.fields.filter(function(e){return e.field||null!==e.value}).forEach(function(e){e.field?t.push("$"+e.field.replace(/\.\$/g,"")):t.push(e.value)}),o[a.selFieldId]={$cond:{if:{$or:r},then:0,else:((l={})["$"+i.operation]=t,l)}}):(o[a.selFieldId]=((l={})["$"+i.operation]=[],l),0<e&&o[a.selFieldId]["$"+i.operation].push({$cond:{if:{$eq:["$"+a.selFieldId,null]},then:0,else:"$"+a.selFieldId}}),n=[],i.fields.filter(function(e){return e.field||null!==e.value}).forEach(function(e){e.field?n.push({$eq:["$"+e.field.replace(/\.\$/g,""),null]}):n.push({$eq:[e.value,null]})}),i.fields.filter(function(e){return e.field||null!==e.value}).forEach(function(e){e.field?o[a.selFieldId]["$"+i.operation].push({$cond:{if:{$or:n},then:0,else:"$"+e.field.replace(/\.\$/g,"")}}):o[a.selFieldId]["$"+i.operation].push({$cond:{if:{$or:n},then:0,else:e.value}})})),u.push({$addFields:o})})}),E.forEach(function(l){T.forEach(function(e){var i;u.push({$addFields:((i={})[l.id+"_"+e.selFieldId]="$"+e.selFieldId,i)})})}),t={$and:[]},m.filter(function(e){return!e.$or&&Object.keys(e).some(function(e){return e.includes("(Lookup)")})||e.$or&&e.$or.some(function(e){return Object.keys(e).some(function(e){return e.includes("(Lookup)")})})}).length&&m.filter(function(e){return!e.$or&&Object.keys(e).some(function(e){return e.includes("(Lookup)")})||e.$or&&e.$or.some(function(e){return Object.keys(e).some(function(e){return e.includes("(Lookup)")})})}).forEach(function(e){t.$and.push(e)}),y.forEach(function(e){t.$and.push(e)}),t.$and.length&&u.push({$match:t}),n={_id:{}},F.length||!A||"grouped"===A?(F.length?g.sort&&(a={},Object.keys(g.sort).forEach(function(i){var e=k.find(function(e){return e.id===i});e&&(a[e.fieldPath.replace(/\.\$/g,"")]=g.sort[i])}),0<Object.keys(a).length)&&u.push({$sort:a}):n._id="$_id",F.forEach(function(e){n._id[e.id]="$"+e.field.replace(/\.\$/g,""),b&&C&&("Seconds"===C?(n._id.second={$second:{date:"$"+b.replace(/\.\$/g,""),timezone:process.env.TZ_CLIENT||"America/Chicago"}},n._id.minute={$minute:{date:"$"+b.replace(/\.\$/g,""),timezone:process.env.TZ_CLIENT||"America/Chicago"}},n._id.hour={$hour:{date:"$"+b.replace(/\.\$/g,""),timezone:process.env.TZ_CLIENT||"America/Chicago"}},n._id.day={$dayOfMonth:{date:"$"+b.replace(/\.\$/g,""),timezone:process.env.TZ_CLIENT||"America/Chicago"}},n._id.month={$month:{date:"$"+b.replace(/\.\$/g,""),timezone:process.env.TZ_CLIENT||"America/Chicago"}},n._id.year={$year:{date:"$"+b.replace(/\.\$/g,""),timezone:process.env.TZ_CLIENT||"America/Chicago"}}):"Minutes"===C?(n._id.minute={$minute:{date:"$"+b.replace(/\.\$/g,""),timezone:process.env.TZ_CLIENT||"America/Chicago"}},n._id.hour={$hour:{date:"$"+b.replace(/\.\$/g,""),timezone:process.env.TZ_CLIENT||"America/Chicago"}},n._id.day={$dayOfMonth:{date:"$"+b.replace(/\.\$/g,""),timezone:process.env.TZ_CLIENT||"America/Chicago"}},n._id.month={$month:{date:"$"+b.replace(/\.\$/g,""),timezone:process.env.TZ_CLIENT||"America/Chicago"}},n._id.year={$year:{date:"$"+b.replace(/\.\$/g,""),timezone:process.env.TZ_CLIENT||"America/Chicago"}}):"Hours"===C?(n._id.hour={$hour:{date:"$"+b.replace(/\.\$/g,""),timezone:process.env.TZ_CLIENT||"America/Chicago"}},n._id.day={$dayOfMonth:{date:"$"+b.replace(/\.\$/g,""),timezone:process.env.TZ_CLIENT||"America/Chicago"}},n._id.month={$month:{date:"$"+b.replace(/\.\$/g,""),timezone:process.env.TZ_CLIENT||"America/Chicago"}},n._id.year={$year:{date:"$"+b.replace(/\.\$/g,""),timezone:process.env.TZ_CLIENT||"America/Chicago"}}):"Daily"===C?(n._id.day={$dayOfMonth:{date:"$"+b.replace(/\.\$/g,""),timezone:process.env.TZ_CLIENT||"America/Chicago"}},n._id.month={$month:{date:"$"+b.replace(/\.\$/g,""),timezone:process.env.TZ_CLIENT||"America/Chicago"}},n._id.year={$year:{date:"$"+b.replace(/\.\$/g,""),timezone:process.env.TZ_CLIENT||"America/Chicago"}}):"Weekly"===C?(n._id.week={$isoWeek:{date:"$"+b.replace(/\.\$/g,""),timezone:process.env.TZ_CLIENT||"America/Chicago"}},n._id.year={$isoWeekYear:{date:"$"+b.replace(/\.\$/g,""),timezone:process.env.TZ_CLIENT||"America/Chicago"}}):"Monthly"===C||"Quarterly"===C?(n._id.month={$month:{date:"$"+b.replace(/\.\$/g,""),timezone:process.env.TZ_CLIENT||"America/Chicago"}},n._id.year={$year:{date:"$"+b.replace(/\.\$/g,""),timezone:process.env.TZ_CLIENT||"America/Chicago"}}):"Yearly"===C&&(n._id.year={$year:{date:"$"+b.replace(/\.\$/g,""),timezone:process.env.TZ_CLIENT||"America/Chicago"}}))}),k.forEach(function(e){"Average"===e.leafValueType?n[e.id]={$avg:"$"+e.fieldPath.replace(/\.\$/g,"")}:"Sum"===e.leafValueType?n[e.id]={$sum:"$"+e.fieldPath.replace(/\.\$/g,"")}:"Count"===e.leafValueType?n[e.id]={$sum:"$count_"+e.fieldPath.replace(/\.\$/g,"")}:"Minimum"===e.leafValueType?n[e.id]={$min:"$"+e.fieldPath.replace(/\.\$/g,"")}:"Maximum"===e.leafValueType?n[e.id]={$max:"$"+e.fieldPath.replace(/\.\$/g,"")}:"First"===e.leafValueType?n[e.id]={$first:"$"+e.fieldPath.replace(/\.\$/g,"")}:"Last"===e.leafValueType?n[e.id]={$last:"$"+e.fieldPath.replace(/\.\$/g,"")}:"Unique"===e.leafValueType?n[e.id]={$addToSet:"$"+e.fieldPath.replace(/\.\$/g,"")}:n[e.id]={$push:{$ifNull:["$"+e.fieldPath.replace(/\.\$/g,""),null]}}}),T.forEach(function(e){"Average"===e.leafValueType?n[e.selFieldId]={$avg:"$"+e.selFieldId}:"Sum"===e.leafValueType?n[e.selFieldId]={$sum:"$"+e.selFieldId}:"Count"===e.leafValueType?n[e.selFieldId]="Dated"===h?{$sum:"$count_"+e.selFieldId}:{$push:"$count_"+e.selFieldId}:"Minimum"===e.leafValueType?n[e.selFieldId]={$min:"$"+e.selFieldId}:"Maximum"===e.leafValueType?n[e.selFieldId]={$max:"$"+e.selFieldId}:"First"===e.leafValueType?n[e.selFieldId]={$first:"$"+e.selFieldId}:"Last"===e.leafValueType?n[e.selFieldId]={$last:"$"+e.selFieldId}:"Unique"===e.leafValueType?n[e.selFieldId]={$addToSet:"$"+e.selFieldId}:n[e.selFieldId]={$push:{$ifNull:["$"+e.selFieldId,null]}}}),E.length&&E.forEach(function(l){k.filter(function(e){return"Number"===e.fieldType||"Count"===e.leafValueType}).forEach(function(e){var i;n[l.id+"_"+e.id]=((i={})["$"+l.type]="$"+l.id+"_"+e.id,i)}),T.forEach(function(e){var i;n[l.id+"_"+e.selFieldId]=((i={})["$"+l.type]="$"+l.id+"_"+e.selFieldId,i)})}),u.push({$group:n})):(d={_id:1},k.forEach(function(e){"Average"===e.leafValueType?d[e.id]={$avg:"$"+e.fieldPath.replace(/\.\$/g,"")}:"Sum"===e.leafValueType?d[e.id]={$sum:"$"+e.fieldPath.replace(/\.\$/g,"")}:"Count"===e.leafValueType?d[e.id]={$sum:1}:"Minimum"===e.leafValueType?d[e.id]={$min:"$"+e.fieldPath.replace(/\.\$/g,"")}:"Maximum"===e.leafValueType?d[e.id]={$max:"$"+e.fieldPath.replace(/\.\$/g,"")}:d[e.id]="$"+e.fieldPath.replace(/\.\$/g,"")}),T.forEach(function(e){d[e.selFieldId]="Average"===e?{$avg:"$"+e.selFieldId}:"Sum"===e?{$sum:"$"+e.selFieldId}:"Count"===e?{$sum:1}:"Minimum"===e?{$min:"$"+e.selFieldId}:"Maximum"===e?{$max:"$"+e.selFieldId}:"$"+e.selFieldId}),!E.length||"List"!==h&&"Dated"!==h||E.forEach(function(l){k.filter(function(e){return"Number"===e.fieldType||"Count"===e.leafValueType}).forEach(function(e){var i;d[l.id+"_"+e.id]=((i={})["$"+l.type]="$"+l.id+"_"+e.id,i)}),T.forEach(function(e){var i;d[l.id+"_"+e.selFieldId]=((i={})["$"+l.type]="$"+l.id+"_"+e.selFieldId,i)})}),u.push({$project:d})),g.sort&&u.push({$sort:g.sort}),"Group"===h&&1<F.length)for(c=function(l){for(var e,r,t,n,o={_id:1},a=(o[F[l].id]={_id:((e={})[F[l].id]="$_id."+F[l].id,e)},l===F.length-1?(k.forEach(function(e){o[F[l].id][e.id]="$"+e.id}),T.forEach(function(e){o[F[l].id][e.selFieldId]="$"+e.selFieldId})):o[F[l].id][F[l+1].id]="$"+F[l+1].id,E.forEach(function(i){k.filter(function(e){return"Number"===e.fieldType||"Count"===e.leafValueType}).forEach(function(e){o[i.id+"_"+e.id]=1,o[F[l].id][i.id+"_"+e.id]="$"+i.id+"_"+e.id}),T.forEach(function(e){o[F[l].id][i.id+"_"+e.selFieldId]="$"+i.id+"_"+e.selFieldId})}),u.push({$project:o}),{_id:{}}),i=0;i<l;i++)a._id[F[i].id]="$_id."+F[i].id;a[F[l].id]={$push:"$"+F[l].id},E.forEach(function(l){k.filter(function(e){return"Number"===e.fieldType||"Count"===e.leafValueType}).forEach(function(e){var i;a[l.id+"_"+e.id]=((i={})["$"+l.type]="$"+l.id+"_"+e.id,i)}),T.forEach(function(e){var i;a[l.id+"_"+e.selFieldId]=((i={})["$"+l.type]="$"+l.id+"_"+e.selFieldId,i)})}),u.push({$group:a}),g.sort&&(r=Object.keys(g.sort),t={},n="",F.forEach(function(e,i){0<i&&(n+="gr_"+(i+1)+"."),r.includes("_id.gr_"+(i+1))?t[n+"_id.gr_"+(i+1)]=g.sort["_id.gr_"+(i+1)]:t[n+"_id.gr_"+(i+1)]=1}),r.filter(function(e){return!e.startsWith("_id.gr_")}).forEach(function(e){t[n+e]=g.sort[e]}),u.push({$sort:t}))},s=F.length-1;1<=s;s--)c(s);p=null,e.label=2;case 2:return e.trys.push([2,4,,5]),[4,i.aggregate(u,{allowDiskUse:!0,readPreference:"http://localhost:4200"!==this.serverConfig.ROOT_URL?"secondary":"primary"},!0)];case 3:return p=e.sent(),[3,5];case 4:return f=e.sent(),console.log(f),[3,5];case 5:return $={},p&&E.forEach(function(l){k.filter(function(e){return"Number"===e.fieldType||"Count"===e.leafValueType}).forEach(function(i){"sum"===l.type?$[l.id+"_"+i.id]=p.map(function(e){return e[l.id+"_"+i.id]||0}).reduce(function(e,i){return e+i},0):"avg"===l.type&&($[l.id+"_"+i.id]=(0,common_1.round)(p.map(function(e){return e[l.id+"_"+i.id]||0}).reduce(function(e,i){return e+i},0)/p.length))}),T.forEach(function(i){"sum"===l.type?$[l.id+"_"+i.selFieldId]=p.map(function(e){return e[l.id+"_"+i.selFieldId]||0}).reduce(function(e,i){return e+i},0):"avg"===l.type&&($[l.id+"_"+i.selFieldId]=(0,common_1.round)(p.map(function(e){return e[l.id+"_"+i.selFieldId]||0}).reduce(function(e,i){return e+i},0)/p.length))})}),[2,[{count:p?p.length:0,results:p?g.limit?p.splice(0,g.limit):p:[],totals:$}]]}})})},workerTaskWeight:2}})}exports.loadReportBuilderMethods=loadReportBuilderMethods;
2
2
  //# sourceMappingURL=report-builder.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/methods/report-builder.ts"],"names":["simpl_schema_1","require","pagination_model_1","resolveio_server_app_1","common_1","schema_report_builder_1","loadReportBuilderMethods","methodManager","methods","reportBuilderBuildTree","check","default","collection_root","type","String","function","lookupSchemaData","getReportLookupSchemas","sort","a","b","collection_name","localeCompare","lookupSchemaTree","find","is_root","tree","treeItems","buildTree","Object","keys","filter","endsWith","forEach","lookup","fieldPath","split","field","path","children","fieldName","lookup_collection","Promise","resolve","isLeaf","reportBuilderGetDistinctValue","treeLeaf","blackbox","fieldType","includes","mongoCommand","replace","reportBuilderGetResults","reportType","rootCollectionName","options","PaginationOptionsSchema","filters","Array","optional","filters.$","filterArrays","filterArrays.$","filterArrayFields","filterArrayFields.$","selectedFields","selectedFields.$","customFields","customFields.$","groupsRow","groupsRow.$","fieldsTotal","fieldsTotal.$","fieldsLink","fieldsLink.$","date_field","date_interval","displayType","rootOptions","modelCollection","ResolveIOServer","getMongoManager","collection","Error","query_1","initialQueryMatchCondition_1","$and","some","c","length","push","$match","$addFields","count","$sum","sizes_1","filterField","fieldData","i","$lookup","as","lookup_as","from","localField","lookup_local_key","foreignField","lookup_foreign_key","_a","$size","$ifNull","$unwind","preserveNullAndEmptyArrays","_b","row","fieldPath_1","treeItem","fieldPath_2","_c","leafValueType","divFields_1","total","multFields","field_first","field_second","size","$cond","if","$gt","then","else","id","$divide","$multiply","link","$cmp","cust","operations","operation","fields","value","opIndex","condCheck_1","tmpOperationFields_1","condOr_1","custFieldGroup","$eq","selFieldId","$or","queryMatchConditionLookup_1","queryGroup_1","_id","groupedSorts_1","sortField","selField","$sort","$second","date","timezone","process","env","TZ_CLIENT","$minute","$hour","$dayOfMonth","$month","$year","$isoWeek","$isoWeekYear","$avg","$min","$max","$first","$last","$addToSet","$push","$group","queryProjection_1","$project","sortKeys_1","sort_1","groupString_1","projQuery","grQuery","totField","j","groupIndex","startsWith","key","res_1","aggregate","allowDiskUse","readPreference","this","serverConfig","sent","console","log","err_1","tmpTotals_1","map","reduce","round","custField","results","limit","splice","totals","workerTaskWeight","exports"],"mappings":"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","file":"report-builder.js","sourcesContent":["import SimpleSchema from 'simpl-schema';\nimport { MethodManager } from '../managers/method.manager';\nimport { PaginationOptions, PaginationOptionsSchema } from '../models/pagination.model';\nimport { ResolveIOServer } from '../resolveio-server-app';\nimport { round } from '../util/common';\nimport { buildTree, getReportLookupSchemas, mongoCommand } from '../util/schema-report-builder';\n\nexport function loadReportBuilderMethods(methodManager: MethodManager) {\n\tmethodManager.methods({\n\t\treportBuilderBuildTree: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tcollection_root: {\n\t\t\t\t\ttype: String\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: function(collection_root: string) {\n\t\t\t\tlet lookupSchemaData = getReportLookupSchemas(collection_root).sort((a, b) => a.collection_name.localeCompare(b.collection_name));\n\t\t\t\tlet lookupSchemaTree = lookupSchemaData.find(a => a.is_root === true).tree;\n\n\t\t\t\tlet treeItems = buildTree(collection_root, lookupSchemaTree);\n\n\t\t\t\tObject.keys(lookupSchemaTree).filter(a => a.endsWith('(Lookup)')).forEach(lookup => {\n\t\t\t\t\tlet fieldPath = lookup.split('.');\n\t\t\t\t\tlet field = null;\n\t\t\t\t\tfieldPath.forEach(path => {\n\t\t\t\t\t\tif (!field) {\n\t\t\t\t\t\t\tfield = treeItems.find(a => a.fieldName === path);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tfield = field.children.find(a => a.fieldName === path);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tfield.children = buildTree(lookupSchemaTree[lookup].lookup_collection, lookupSchemaData.find(a => a.collection_name === lookupSchemaTree[lookup].lookup_collection).tree, field);\n\t\t\t\t});\n\n\t\t\t\t// console.log('----------- Tree Items -----------', treeItems);\n\n\t\t\t\treturn Promise.resolve({isLeaf: false, children: treeItems});\n\t\t\t}\n\t\t},\n\t\treportBuilderGetDistinctValue: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\ttreeLeaf: {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\tblackbox: true\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: async function(treeLeaf) {\n\t\t\t\tif (treeLeaf.fieldType === 'String') {\n\t\t\t\t\tif (treeLeaf.fieldPath.includes('(Lookup)')) {\n\t\t\t\t\t\treturn mongoCommand('distinct', treeLeaf.collection_name, treeLeaf.fieldPath.replace(/^.+\\(.+\\) \\(Lookup\\)\\.\\$\\./g, '').replace(/\\.\\$/g, ''));\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\treturn mongoCommand('distinct', treeLeaf.collection_name, treeLeaf.fieldPath.replace(/\\.\\$/g, ''));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\treturn [];\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\treportBuilderGetResults: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\treportType: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\trootCollectionName: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\toptions: {\n\t\t\t\t\ttype: PaginationOptionsSchema\n\t\t\t\t},\n\t\t\t\tfilters: {\n\t\t\t\t\ttype: Array,\n\t\t\t\t\toptional: true\n\t\t\t\t},\n\t\t\t\t'filters.$': {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\tblackbox: true,\n\t\t\t\t\toptional: true\n\t\t\t\t},\n\t\t\t\tfilterArrays: {\n\t\t\t\t\ttype: Array,\n\t\t\t\t\toptional: true\n\t\t\t\t},\n\t\t\t\t'filterArrays.$': {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\tblackbox: true,\n\t\t\t\t\toptional: true\n\t\t\t\t},\n\t\t\t\tfilterArrayFields: {\n\t\t\t\t\ttype: Array,\n\t\t\t\t\toptional: true\n\t\t\t\t},\n\t\t\t\t'filterArrayFields.$': {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\tblackbox: true,\n\t\t\t\t\toptional: true\n\t\t\t\t},\n\t\t\t\tselectedFields: {\n\t\t\t\t\ttype: Array,\n\t\t\t\t\toptional: true\n\t\t\t\t},\n\t\t\t\t'selectedFields.$': {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\toptional: true,\n\t\t\t\t\tblackbox: true\n\t\t\t\t},\n\t\t\t\tcustomFields: {\n\t\t\t\t\ttype: Array,\n\t\t\t\t\toptional: true\n\t\t\t\t},\n\t\t\t\t'customFields.$': {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\toptional: true,\n\t\t\t\t\tblackbox: true\n\t\t\t\t},\n\t\t\t\tgroupsRow: {\n\t\t\t\t\ttype: Array\n\t\t\t\t},\n\t\t\t\t'groupsRow.$': {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\tblackbox: true\n\t\t\t\t},\n\t\t\t\tfieldsTotal: {\n\t\t\t\t\ttype: Array\n\t\t\t\t},\n\t\t\t\t'fieldsTotal.$': {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\tblackbox: true\n\t\t\t\t},\n\t\t\t\tfieldsLink: {\n\t\t\t\t\ttype: Array\n\t\t\t\t},\n\t\t\t\t'fieldsLink.$': {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\tblackbox: true\n\t\t\t\t},\n\t\t\t\tdate_field: {\n\t\t\t\t\ttype: String,\n\t\t\t\t\toptional: true\n\t\t\t\t},\n\t\t\t\tdate_interval: {\n\t\t\t\t\ttype: String,\n\t\t\t\t\toptional: true\n\t\t\t\t},\n\t\t\t\tdisplayType: {\n\t\t\t\t\ttype: String,\n\t\t\t\t\toptional: true\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: async function(reportType: string, rootCollectionName: string, rootOptions: PaginationOptions, filters: any[] = [], filterArrays: any[] = [], filterArrayFields: any[] = [], selectedFields: any[] = [], customFields: any[] = [], groupsRow: any[] = [], fieldsTotal: any[] = [], fieldsLink: any[] = [], date_field = '', date_interval = '', displayType = '') {\n\t\t\t\tlet modelCollection = ResolveIOServer.getMongoManager().collection(rootCollectionName);\n\n\t\t\t\tif (!modelCollection) {\n\t\t\t\t\tthrow new Error('Error in Report builder get results: Invalid collection');\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\t// Query\n\t\t\t\t\tlet query = [];\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t// Non-Lookup Match Filters\n\t\t\t\t\tlet initialQueryMatchCondition = {\n\t\t\t\t\t\t$and: []\n\t\t\t\t\t};\n\n\t\t\t\t\t// selectedFields.filter(a => a.collection_name === rootCollectionName).forEach(field => {\n\t\t\t\t\t// \tinitialQueryMatchCondition['$and'].push({\n\t\t\t\t\t// \t\t$and: [\n\t\t\t\t\t// \t\t\t{[field.fieldPath.replace(/\\.\\$/g, '')]: {$exists: 1}},\n\t\t\t\t\t// \t\t\t// {[field.fieldPath.replace(/\\.\\$/g, '')]: {$ne: ''}},\n\t\t\t\t\t// \t\t\t{[field.fieldPath.replace(/\\.\\$/g, '')]: {$ne: null}},\n\t\t\t\t\t// \t\t]\n\t\t\t\t\t// \t});\n\t\t\t\t\t// });\n\n\t\t\t\t\tif (filters.filter(a => (!a['$or'] && !Object.keys(a).some(b => b.includes('(Lookup)'))) || (a['$or'] && !a['$or'].some(b => Object.keys(b).some(c => c.includes('(Lookup)'))))).length) {\n\t\t\t\t\t\tfilters.filter(a => (!a['$or'] && !Object.keys(a).some(b => b.includes('(Lookup)'))) || (a['$or'] && !a['$or'].some(b => Object.keys(b).some(c => c.includes('(Lookup)'))))).forEach(filter => {\n\t\t\t\t\t\t\tinitialQueryMatchCondition['$and'].push(filter);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\t// Add filter to query\n\t\t\t\t\t// if (filters.filter(a => (!a['$or'] && !Object.keys(a).some(b => b.includes('(Lookup)'))) || (a['$or'] && !a['$or'].some(b => Object.keys(b).some(c => c.includes('(Lookup)'))))).length || selectedFields.filter(a => !a.fieldPath.includes('(Lookup')).length) {\n\t\t\t\t\tif (filters.filter(a => (!a['$or'] && !Object.keys(a).some(b => b.includes('(Lookup)'))) || (a['$or'] && !a['$or'].some(b => Object.keys(b).some(c => c.includes('(Lookup)'))))).length) {\n\t\t\t\t\t\tquery.push({\n\t\t\t\t\t\t\t$match: initialQueryMatchCondition\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\t// Add count\n\t\t\t\t\tquery.push({ $addFields: { count: { $sum: 1} } });\n\n\t\t\t\t\tlet sizes = [];\n\n\t\t\t\t\tfilterArrayFields.filter(a => a.fieldPath).forEach(filterField => {\n\t\t\t\t\t\tlet fieldData = filterField.fieldPath.split('.$');\n\n\t\t\t\t\t\tlet fieldPath = '';\n\n\t\t\t\t\t\tfor (let i = 0; i < fieldData.length - 1; i++) {\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tfieldPath += fieldData[i];\n\n\t\t\t\t\t\t\tif (fieldPath.split('.$')[fieldPath.split('.$').length - 1].includes('(Lookup)')) {\n\t\t\t\t\t\t\t\tif (!query.some(a => a.$lookup && a.$lookup.as === filterField.lookup_as.replace(/\\.\\$/g, ''))) {\n\t\t\t\t\t\t\t\t\tquery.push({$lookup: {\n\t\t\t\t\t\t\t\t\t\tfrom: filterField.lookup_collection,\n\t\t\t\t\t\t\t\t\t\tlocalField: filterField.lookup_local_key,\n\t\t\t\t\t\t\t\t\t\tforeignField: filterField.lookup_foreign_key,\n\t\t\t\t\t\t\t\t\t\tas: filterField.lookup_as.replace(/\\.\\$/g, '')\n\t\t\t\t\t\t\t\t\t}});\n\n\t\t\t\t\t\t\t\t\tsizes.push(filterField.lookup_as.replace(/\\.\\$\\./g, '_').replace(/\\./g, '_'));\n\t\t\t\t\t\t\t\t\tquery.push({$addFields: {['size_' + filterField.lookup_as.replace(/\\.\\$\\./g, '_').replace(/\\./g, '_')]: {$size: {$ifNull: ['$' + filterField.lookup_as.replace(/\\.\\$/g, '').replace(/\\./g, '_'), []]}}}});\n\t\t\n\t\t\t\t\t\t\t\t\tquery.push({'$unwind': {path: '$' + filterField.lookup_as.replace(/\\.\\$/g, ''), preserveNullAndEmptyArrays: true}});\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tif (!query.some(a => a.$addFields && Object.keys(a.$addFields).includes('size_' + fieldPath.replace(/\\./g, '_')))) {\n\t\t\t\t\t\t\t\t\tsizes.push(fieldPath.replace(/\\./g, '_'));\n\t\t\t\t\t\t\t\t\tquery.push({$addFields: {['size_' + fieldPath.replace(/\\./g, '_')]: {$size: {$ifNull: ['$' + fieldPath, []]}}}});\n\t\t\n\t\t\t\t\t\t\t\t\tquery.push({'$unwind': {path: '$' + fieldPath, preserveNullAndEmptyArrays: true}});\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\t// Groups - Lookups / Sizes / Unwinds\n\t\t\t\t\tgroupsRow.forEach(row => {\n\t\t\t\t\t\tif (row.field.includes('$')) {\n\t\t\t\t\t\t\tlet fieldData = row.field.split('.$');\n\n\t\t\t\t\t\t\tlet fieldPath = '';\n\n\t\t\t\t\t\t\tfor (let i = 0; i < fieldData.length - 1; i++) {\n\t\t\t\t\t\t\t\tfieldPath += fieldData[i];\n\n\t\t\t\t\t\t\t\tif (fieldPath.split('.$')[fieldPath.split('.$').length - 1].includes('(Lookup)')) {\n\t\t\t\t\t\t\t\t\tif (!query.some(a => a.$lookup && a.$lookup.as === row.treeItem.lookup_as.replace(/\\.\\$/g, ''))) {\n\t\t\t\t\t\t\t\t\t\tquery.push({$lookup: {\n\t\t\t\t\t\t\t\t\t\t\tfrom: row.treeItem.lookup_collection,\n\t\t\t\t\t\t\t\t\t\t\tlocalField: row.treeItem.lookup_local_key,\n\t\t\t\t\t\t\t\t\t\t\tforeignField: row.treeItem.lookup_foreign_key,\n\t\t\t\t\t\t\t\t\t\t\tas: row.treeItem.lookup_as.replace(/\\.\\$/g, '')\n\t\t\t\t\t\t\t\t\t\t}});\n\n\t\t\t\t\t\t\t\t\t\tsizes.push(row.treeItem.lookup_as.replace(/\\.\\$\\./g, '_').replace(/\\./g, '_'));\n\t\t\t\t\t\t\t\t\t\tquery.push({$addFields: {['size_' + row.treeItem.lookup_as.replace(/\\.\\$\\./g, '_').replace(/\\./g, '_')]: {$size: {$ifNull: ['$' + row.treeItem.lookup_as.replace(/\\.\\$/g, '').replace(/\\./g, '_'), []]}}}});\n\t\t\t\n\t\t\t\t\t\t\t\t\t\tquery.push({'$unwind': {path: '$' + row.treeItem.lookup_as.replace(/\\.\\$/g, ''), preserveNullAndEmptyArrays: true}});\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\tif (!query.some(a => a.$addFields && Object.keys(a.$addFields).includes('size_' + fieldPath.replace(/\\.\\$\\./g, '.').replace(/\\./g, '_')))) {\n\t\t\t\t\t\t\t\t\t\tsizes.push(fieldPath.replace(/\\.\\$\\./g, '.').replace(/\\./g, '_'));\n\t\t\t\t\t\t\t\t\t\tquery.push({$addFields: {['size_' + fieldPath.replace(/\\.\\$\\./g, '.').replace(/\\./g, '_')]: {$size: {$ifNull: ['$' + fieldPath.replace(/\\.\\$\\./g, '.'), []]}}}});\n\t\t\t\t\t\t\t\t\t\tquery.push({'$unwind': {path: '$' + fieldPath.replace(/\\.\\$\\./g, '.'), preserveNullAndEmptyArrays: true}});\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tfieldPath += '.$';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\t// Selected Fields - Lookups / Sizes / Unwinds\n\t\t\t\t\tselectedFields.forEach(field => {\n\t\t\t\t\t\tif (field.fieldPath.includes('$')) {\n\t\t\t\t\t\t\tlet fieldData = field.fieldPath.split('.$');\n\n\t\t\t\t\t\t\tlet fieldPath = '';\n\n\t\t\t\t\t\t\tfor (let i = 0; i < fieldData.length - 1; i++) {\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tfieldPath += fieldData[i];\n\n\t\t\t\t\t\t\t\tif (fieldPath.split('.$')[fieldPath.split('.$').length - 1].includes('(Lookup)')) {\n\t\t\t\t\t\t\t\t\tif (!query.some(a => a.$lookup && a.$lookup.as === field.lookup_as.replace(/\\.\\$/g, ''))) {\n\t\t\t\t\t\t\t\t\t\tquery.push({$lookup: {\n\t\t\t\t\t\t\t\t\t\t\tfrom: field.lookup_collection,\n\t\t\t\t\t\t\t\t\t\t\tlocalField: field.lookup_local_key,\n\t\t\t\t\t\t\t\t\t\t\tforeignField: field.lookup_foreign_key,\n\t\t\t\t\t\t\t\t\t\t\tas: field.lookup_as.replace(/\\.\\$/g, '')\n\t\t\t\t\t\t\t\t\t\t}});\n\n\t\t\t\t\t\t\t\t\t\tsizes.push(field.lookup_as.replace(/\\.\\$\\./g, '_').replace(/\\./g, '_'));\n\t\t\t\t\t\t\t\t\t\tquery.push({$addFields: {['size_' + field.lookup_as.replace(/\\.\\$\\./g, '_').replace(/\\./g, '_')]: {$size: {$ifNull: ['$' + field.lookup_as.replace(/\\.\\$/g, '').replace(/\\./g, '_'), []]}}}});\n\t\t\t\n\t\t\t\t\t\t\t\t\t\tquery.push({'$unwind': {path: '$' + field.lookup_as.replace(/\\.\\$/g, ''), preserveNullAndEmptyArrays: true}});\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\tif (!fieldData[i].includes('(Lookup)')) {\n\t\t\t\t\t\t\t\t\t\t\tif (!query.some(a => a.$addFields && Object.keys(a.$addFields).includes('size_' + fieldPath.replace(/\\./g, '_')))) {\n\t\t\t\t\t\t\t\t\t\t\t\tsizes.push(fieldPath.replace(/\\./g, '_'));\n\t\t\t\t\t\t\t\t\t\t\t\tquery.push({$addFields: {['size_' + fieldPath.replace(/\\./g, '_')]: {$size: {$ifNull: ['$' + fieldPath, []]}}}});\n\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\tquery.push({'$unwind': {path: '$' + fieldPath, preserveNullAndEmptyArrays: true}});\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\tif (!query.some(a => a.$addFields && Object.keys(a.$addFields).includes('size_' + fieldPath.replace(/\\./g, '_')))) {\n\t\t\t\t\t\t\t\t\t\tsizes.push(fieldPath.replace(/\\./g, '_'));\n\t\t\t\t\t\t\t\t\t\tquery.push({$addFields: {['size_' + fieldPath.replace(/\\./g, '_')]: {$size: {$ifNull: ['$' + fieldPath, []]}}}});\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tif (field.leafValueType !== 'Count' && !query.some(a => a.$unwind && a.$unwind.path === '$' + fieldPath)) {\n\t\t\t\t\t\t\t\t\t\tquery.push({'$unwind': {path: '$' + fieldPath, preserveNullAndEmptyArrays: true}});\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\t// Divide all number fields by sizes\n\t\t\t\t\tlet divFields = {$addFields: {}};\n\n\t\t\t\t\tfieldsTotal.filter(a => a.type === 'sum').forEach(total => {\n\t\t\t\t\t\tselectedFields.filter(a => a.fieldType === 'Number' || a.leafValueType === 'Count').forEach(field => {\n\t\t\t\t\t\t\tlet multFields = [];\n\n\t\t\t\t\t\t\tif (!field.fieldPath.includes('.$')) {\n\t\t\t\t\t\t\t\tsizes.forEach(size => {\n\t\t\t\t\t\t\t\t\tmultFields.push({$cond: { if: { $gt: ['$size_' + size, 0 ] }, then: '$size_' + size, else: 1 }});\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tsizes.filter(a => !field.fieldPath.replace(/\\.\\$\\./g, '_').replace(/\\./g, '_').includes(a) && !filterArrayFields.filter(a => a.fieldPath).some(b => b.fieldPath.replace(/\\.\\$\\./g, '_').replace(/\\./g, '_').includes(a)) && !fieldsLink.some(b => b.field_first.replace(/\\.\\$\\./g, '_').replace(/\\./g, '_').includes(a) || b.field_second.replace(/\\.\\$\\./g, '_').replace(/\\./g, '_').includes(a))).forEach(size => {\n\t\t\t\t\t\t\t\t\tmultFields.push({$cond: { if: { $gt: ['$size_' + size, 0 ] }, then: '$size_' + size, else: 1 }});\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (multFields.length) {\n\t\t\t\t\t\t\t\tif (field.leafValueType === 'Count') {\n\t\t\t\t\t\t\t\t\tdivFields.$addFields[total.id + '_' + field.id] = {\n\t\t\t\t\t\t\t\t\t\t$divide: ['$count', {$multiply: multFields}]\n\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\tdivFields.$addFields[total.id + '_' + field.id] = {\n\t\t\t\t\t\t\t\t\t\t$divide: ['$' + field.fieldPath.replace(/\\.\\$/g, ''), {$multiply: multFields}]\n\t\t\t\t\t\t\t\t\t};\t\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tif (field.leafValueType === 'Count') {\n\t\t\t\t\t\t\t\t\tdivFields.$addFields[total.id + '_' + field.id] = '$count';\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\tdivFields.$addFields[total.id + '_' + field.id] = '$' + field.fieldPath.replace(/\\.\\$/g, '');\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\n\t\t\t\t\tselectedFields.filter(a => a.fieldType === 'Number' && a.leafValueType === 'Sum').forEach(field => {\n\t\t\t\t\t\tlet multFields = [];\n\n\t\t\t\t\t\tsizes.filter(a => !field.fieldPath.replace(/\\.\\$\\./g, '_').replace(/\\./g, '_').includes(a) && !groupsRow.some(b => b.field.replace(/\\.\\$\\./g, '_').replace(/\\./g, '_').includes(a)) && !filterArrayFields.filter(a => a.fieldPath).some(b => b.fieldPath.replace(/\\.\\$\\./g, '_').replace(/\\./g, '_').includes(a)) && !fieldsLink.some(b => b.field_first.replace(/\\.\\$\\./g, '_').replace(/\\./g, '_').includes(a) || b.field_second.replace(/\\.\\$\\./g, '_').replace(/\\./g, '_').includes(a))).forEach(size => {\n\t\t\t\t\t\t\tmultFields.push({$cond: { if: { $gt: ['$size_' + size, 0 ] }, then: '$size_' + size, else: 1 }});\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tif (multFields.length) {\n\t\t\t\t\t\t\tdivFields.$addFields[field.fieldPath.replace(/\\.\\$/g, '')] = {\n\t\t\t\t\t\t\t\t$divide: ['$' + field.fieldPath.replace(/\\.\\$/g, ''), {$multiply: multFields}]\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\tselectedFields.filter(a => a.leafValueType === 'Count').forEach(field => {\n\t\t\t\t\t\tlet multFields = [];\n\t\t\t\t\t\t\n\t\t\t\t\t\tsizes.filter(a => !field.fieldPath.replace(/\\.\\$\\./g, '_').replace(/\\./g, '_').includes(a) && !groupsRow.some(b => b.field.replace(/\\.\\$\\./g, '_').replace(/\\./g, '_').includes(a)) && !filterArrayFields.filter(a => a.fieldPath).some(b => b.fieldPath.replace(/\\.\\$\\./g, '_').replace(/\\./g, '_').includes(a)) && !fieldsLink.some(b => b.field_first.replace(/\\.\\$\\./g, '_').replace(/\\./g, '_').includes(a) || b.field_second.replace(/\\.\\$\\./g, '_').replace(/\\./g, '_').includes(a))).forEach(size => {\n\t\t\t\t\t\t\tmultFields.push({$cond: { if: { $gt: ['$size_' + size, 0 ] }, then: '$size_' + size, else: 1 }});\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tif (multFields.length) {\n\t\t\t\t\t\t\tdivFields.$addFields['count_' + field.fieldPath.replace(/\\.\\$/g, '')] = {\n\t\t\t\t\t\t\t\t$divide: ['$count', {$multiply: multFields}]\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tif (reportType !== 'Dated' && sizes.filter(a => field.fieldPath.replace(/\\.\\$\\./g, '_').includes(a)).length) {\n\t\t\t\t\t\t\t\tsizes.filter(a => field.fieldPath.replace(/\\.\\$\\./g, '_').includes(a)).forEach(size => {\n\t\t\t\t\t\t\t\t\tdivFields.$addFields['count_' + field.fieldPath.replace(/\\.\\$/g, '')] = '$size_' + size;\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tdivFields.$addFields['count_' + field.fieldPath.replace(/\\.\\$/g, '')] = '$count';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\tfieldsTotal.filter(a => a.type === 'avg').forEach(total => {\n\t\t\t\t\t\tselectedFields.filter(a => a.fieldType === 'Number' || a.leafValueType === 'Count').forEach(field => {\n\t\t\t\t\t\t\tdivFields.$addFields[total.id + '_' + field.id] = '$' + field.fieldPath.replace(/\\.\\$/g, '');\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\n\t\t\t\t\tif (Object.keys(divFields.$addFields).length > 0) {\n\t\t\t\t\t\tquery.push(divFields);\n\t\t\t\t\t}\n\n\t\t\t\t\tfieldsLink.filter(a => a.field_first && a.field_second).forEach(link => {\n\t\t\t\t\t\tquery.push({$addFields: {[link.id]: {$cmp: ['$' + link.field_first.replace(/\\.\\$/g, ''), '$' + link.field_second.replace(/\\.\\$/g, '')]}}});\n\t\t\t\t\t\tquery.push({$match: {[link.id]: 0}});\n\t\t\t\t\t});\n\n\t\t\t\t\tcustomFields.forEach(cust => {\n\t\t\t\t\t\tcust.operations.filter(a => a.operation && !a.fields.some(b => (b.field === null || b.field === '') && b.value === null)).forEach((operation, opIndex) => {\n\t\t\t\t\t\t\tlet custFieldGroup = {};\n\n\t\t\t\t\t\t\tif (operation.operation === 'divide') {\n\t\t\t\t\t\t\t\tlet condCheck = [];\n\t\t\t\t\t\t\t\toperation.fields.filter(a => a.field || a.value !== null).forEach(field => {\n\t\t\t\t\t\t\t\t\tif (field.field) {\n\t\t\t\t\t\t\t\t\t\tcondCheck.push({$eq: ['$' + field.field.replace(/\\.\\$/g, ''), 0]});\n\t\t\t\t\t\t\t\t\t\tcondCheck.push({$eq: ['$' + field.field.replace(/\\.\\$/g, ''), null]});\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\tcondCheck.push({$eq: [field.value, 0]});\n\t\t\t\t\t\t\t\t\t\tcondCheck.push({$eq: [field.value, null]});\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\tif (opIndex > 0) {\n\t\t\t\t\t\t\t\t\tcondCheck.push({$eq: ['$' + cust.selFieldId, 0]});\n\t\t\t\t\t\t\t\t\tcondCheck.push({$eq: ['$' + cust.selFieldId, null]});\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tlet tmpOperationFields = [];\n\n\t\t\t\t\t\t\t\tif (opIndex > 0) {\n\t\t\t\t\t\t\t\t\ttmpOperationFields.push('$' + cust.selFieldId);\n\t\t\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\t\t\toperation.fields.filter(a => a.field || a.value !== null).forEach(field => {\n\t\t\t\t\t\t\t\t\tif (field.field) {\n\t\t\t\t\t\t\t\t\t\ttmpOperationFields.push('$' + field.field.replace(/\\.\\$/g, ''));\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\ttmpOperationFields.push(field.value);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\tcustFieldGroup[cust.selFieldId] = {\n\t\t\t\t\t\t\t\t\t$cond: { if: { $or: condCheck }, then: 0, else: {['$' + operation.operation]: tmpOperationFields} }\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tcustFieldGroup[cust.selFieldId] = {\n\t\t\t\t\t\t\t\t\t['$' + operation.operation]: []\n\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t\tif (opIndex > 0) {\n\t\t\t\t\t\t\t\t\tcustFieldGroup[cust.selFieldId]['$' + operation.operation].push({$cond: { if: { $eq: ['$' + cust.selFieldId, null] }, then: 0, else: '$' + cust.selFieldId}});\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tlet condOr = [];\n\n\t\t\t\t\t\t\t\toperation.fields.filter(a => a.field || a.value !== null).forEach(field => {\n\t\t\t\t\t\t\t\t\tif (field.field) {\n\t\t\t\t\t\t\t\t\t\tcondOr.push({$eq: ['$' + field.field.replace(/\\.\\$/g, ''), null]});\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\tcondOr.push({$eq: [field.value, null]});\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t});\n\t\n\t\t\t\t\t\t\t\toperation.fields.filter(a => a.field || a.value !== null).forEach(field => {\n\t\t\t\t\t\t\t\t\tif (field.field) {\n\t\t\t\t\t\t\t\t\t\tcustFieldGroup[cust.selFieldId]['$' + operation.operation].push({$cond: { if: { $or: condOr }, then: 0, else: '$' + field.field.replace(/\\.\\$/g, '')}});\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\tcustFieldGroup[cust.selFieldId]['$' + operation.operation].push({$cond: { if: { $or: condOr }, then: 0, else: field.value}});\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tquery.push({$addFields: custFieldGroup});\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\n\t\t\t\t\tfieldsTotal.forEach(total => {\n\t\t\t\t\t\tcustomFields.forEach(field => {\n\t\t\t\t\t\t\tquery.push({$addFields:{[total.id + '_' + field.selFieldId]: '$' + field.selFieldId}});\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\n\t\t\t\t\t// Filters - Lookups / Arrays\n\t\t\t\t\tlet queryMatchConditionLookup = {\n\t\t\t\t\t\t$and: []\n\t\t\t\t\t};\n\n\t\t\t\t\tif (filters.filter(a => (!a['$or'] && Object.keys(a).some(b => b.includes('(Lookup)'))) || (a['$or'] && a['$or'].some(b => Object.keys(b).some(c => c.includes('(Lookup)'))))).length) {\n\t\t\t\t\t\tfilters.filter(a => (!a['$or'] && Object.keys(a).some(b => b.includes('(Lookup)'))) || (a['$or'] && a['$or'].some(b => Object.keys(b).some(c => c.includes('(Lookup)'))))).forEach(filter => {\n\t\t\t\t\t\t\tqueryMatchConditionLookup['$and'].push(filter);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tfilterArrays.forEach(filter => {\n\t\t\t\t\t\tqueryMatchConditionLookup['$and'].push(filter);\n\t\t\t\t\t});\n\n\t\t\t\t\tif (queryMatchConditionLookup.$and.length) {\n\t\t\t\t\t\tquery.push({$match: queryMatchConditionLookup});\n\t\t\t\t\t}\n\n\t\t\t\t\t// Group\n\t\t\t\t\tlet queryGroup = {\n\t\t\t\t\t\t_id: {}\n\t\t\t\t\t};\n\n\t\t\t\t\tif (groupsRow.length || !displayType || displayType === 'grouped') {\n\t\t\t\t\t\tif (!groupsRow.length) {\n\t\t\t\t\t\t\tqueryGroup._id = '$_id';\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tif (rootOptions.sort) { \n\t\t\t\t\t\t\t\tlet groupedSorts = {};\n\t\t\t\t\t\t\t\tObject.keys(rootOptions.sort).forEach(sortField => {\n\t\t\t\t\t\t\t\t\tlet selField = selectedFields.find(a => a.id === sortField);\n\n\t\t\t\t\t\t\t\t\tif (selField) {\n\t\t\t\t\t\t\t\t\t\tgroupedSorts[selField.fieldPath.replace(/\\.\\$/g, '')] = rootOptions.sort[sortField];\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tif (Object.keys(groupedSorts).length > 0) {\n\t\t\t\t\t\t\t\t\tquery.push({\n\t\t\t\t\t\t\t\t\t\t$sort: groupedSorts\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tgroupsRow.forEach(row => {\n\t\t\t\t\t\t\tqueryGroup._id[row.id] = '$' + row.field.replace(/\\.\\$/g, '');\n\n\t\t\t\t\t\t\tif (date_field && date_interval) {\n\t\t\t\t\t\t\t\tif (date_interval === 'Seconds') {\n\t\t\t\t\t\t\t\t\tqueryGroup._id['second'] = {'$second' : {'date': '$' + date_field.replace(/\\.\\$/g, ''), 'timezone': process.env.TZ_CLIENT || 'America/Chicago'}};\n\t\t\t\t\t\t\t\t\tqueryGroup._id['minute'] = {'$minute' : {'date': '$' + date_field.replace(/\\.\\$/g, ''), 'timezone': process.env.TZ_CLIENT || 'America/Chicago'}};\n\t\t\t\t\t\t\t\t\tqueryGroup._id['hour'] = {'$hour' : {'date': '$' + date_field.replace(/\\.\\$/g, ''), 'timezone': process.env.TZ_CLIENT || 'America/Chicago'}};\n\t\t\t\t\t\t\t\t\tqueryGroup._id['day'] = {'$dayOfMonth' : {'date': '$' + date_field.replace(/\\.\\$/g, ''), 'timezone': process.env.TZ_CLIENT || 'America/Chicago'}};\n\t\t\t\t\t\t\t\t\tqueryGroup._id['month'] = {'$month' : {'date': '$' + date_field.replace(/\\.\\$/g, ''), 'timezone': process.env.TZ_CLIENT || 'America/Chicago'}};\n\t\t\t\t\t\t\t\t\tqueryGroup._id['year'] = {'$year' : {'date': '$' + date_field.replace(/\\.\\$/g, ''), 'timezone': process.env.TZ_CLIENT || 'America/Chicago'}};\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse if (date_interval === 'Minutes') {\n\t\t\t\t\t\t\t\t\tqueryGroup._id['minute'] = {'$minute' : {'date': '$' + date_field.replace(/\\.\\$/g, ''), 'timezone': process.env.TZ_CLIENT || 'America/Chicago'}};\n\t\t\t\t\t\t\t\t\tqueryGroup._id['hour'] = {'$hour' : {'date': '$' + date_field.replace(/\\.\\$/g, ''), 'timezone': process.env.TZ_CLIENT || 'America/Chicago'}};\n\t\t\t\t\t\t\t\t\tqueryGroup._id['day'] = {'$dayOfMonth' : {'date': '$' + date_field.replace(/\\.\\$/g, ''), 'timezone': process.env.TZ_CLIENT || 'America/Chicago'}};\n\t\t\t\t\t\t\t\t\tqueryGroup._id['month'] = {'$month' : {'date': '$' + date_field.replace(/\\.\\$/g, ''), 'timezone': process.env.TZ_CLIENT || 'America/Chicago'}};\n\t\t\t\t\t\t\t\t\tqueryGroup._id['year'] = {'$year' : {'date': '$' + date_field.replace(/\\.\\$/g, ''), 'timezone': process.env.TZ_CLIENT || 'America/Chicago'}};\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse if (date_interval === 'Hours') {\n\t\t\t\t\t\t\t\t\tqueryGroup._id['hour'] = {'$hour' : {'date': '$' + date_field.replace(/\\.\\$/g, ''), 'timezone': process.env.TZ_CLIENT || 'America/Chicago'}};\n\t\t\t\t\t\t\t\t\tqueryGroup._id['day'] = {'$dayOfMonth' : {'date': '$' + date_field.replace(/\\.\\$/g, ''), 'timezone': process.env.TZ_CLIENT || 'America/Chicago'}};\n\t\t\t\t\t\t\t\t\tqueryGroup._id['month'] = {'$month' : {'date': '$' + date_field.replace(/\\.\\$/g, ''), 'timezone': process.env.TZ_CLIENT || 'America/Chicago'}};\n\t\t\t\t\t\t\t\t\tqueryGroup._id['year'] = {'$year' : {'date': '$' + date_field.replace(/\\.\\$/g, ''), 'timezone': process.env.TZ_CLIENT || 'America/Chicago'}};\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse if (date_interval === 'Daily') {\n\t\t\t\t\t\t\t\t\tqueryGroup._id['day'] = {'$dayOfMonth' : {'date': '$' + date_field.replace(/\\.\\$/g, ''), 'timezone': process.env.TZ_CLIENT || 'America/Chicago'}};\n\t\t\t\t\t\t\t\t\tqueryGroup._id['month'] = {'$month' : {'date': '$' + date_field.replace(/\\.\\$/g, ''), 'timezone': process.env.TZ_CLIENT || 'America/Chicago'}};\n\t\t\t\t\t\t\t\t\tqueryGroup._id['year'] = {'$year' : {'date': '$' + date_field.replace(/\\.\\$/g, ''), 'timezone': process.env.TZ_CLIENT || 'America/Chicago'}};\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse if (date_interval === 'Weekly') {\n\t\t\t\t\t\t\t\t\tqueryGroup._id['week'] = {'$isoWeek' : {'date': '$' + date_field.replace(/\\.\\$/g, ''), 'timezone': process.env.TZ_CLIENT || 'America/Chicago'}};\n\t\t\t\t\t\t\t\t\tqueryGroup._id['year'] = {'$isoWeekYear' : {'date': '$' + date_field.replace(/\\.\\$/g, ''), 'timezone': process.env.TZ_CLIENT || 'America/Chicago'}};\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse if (date_interval === 'Monthly') {\n\t\t\t\t\t\t\t\t\tqueryGroup._id['month'] = {'$month' : {'date': '$' + date_field.replace(/\\.\\$/g, ''), 'timezone': process.env.TZ_CLIENT || 'America/Chicago'}};\n\t\t\t\t\t\t\t\t\tqueryGroup._id['year'] = {'$year' : {'date': '$' + date_field.replace(/\\.\\$/g, ''), 'timezone': process.env.TZ_CLIENT || 'America/Chicago'}};\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse if (date_interval === 'Quarterly') {\n\t\t\t\t\t\t\t\t\tqueryGroup._id['month'] = {'$month' : {'date': '$' + date_field.replace(/\\.\\$/g, ''), 'timezone': process.env.TZ_CLIENT || 'America/Chicago'}};\n\t\t\t\t\t\t\t\t\tqueryGroup._id['year'] = {'$year' : {'date': '$' + date_field.replace(/\\.\\$/g, ''), 'timezone': process.env.TZ_CLIENT || 'America/Chicago'}};\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse if (date_interval === 'Yearly') {\n\t\t\t\t\t\t\t\t\tqueryGroup._id['year'] = {'$year' : {'date': '$' + date_field.replace(/\\.\\$/g, ''), 'timezone': process.env.TZ_CLIENT || 'America/Chicago'}};\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tselectedFields.forEach(field => {\n\t\t\t\t\t\t\tif (field.leafValueType === 'Average') {\n\t\t\t\t\t\t\t\tqueryGroup[field.id] = {'$avg': '$' + field.fieldPath.replace(/\\.\\$/g, '')};\t\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (field.leafValueType === 'Sum') {\n\t\t\t\t\t\t\t\tqueryGroup[field.id] = {'$sum': '$' + field.fieldPath.replace(/\\.\\$/g, '')};\t\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (field.leafValueType === 'Count') {\n\t\t\t\t\t\t\t\tqueryGroup[field.id] = { '$sum': '$count_' + field.fieldPath.replace(/\\.\\$/g, '') };\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (field.leafValueType === 'Minimum') {\n\t\t\t\t\t\t\t\tqueryGroup[field.id] = {'$min': '$' + field.fieldPath.replace(/\\.\\$/g, '')};\t\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (field.leafValueType === 'Maximum') {\n\t\t\t\t\t\t\t\tqueryGroup[field.id] = {'$max': '$' + field.fieldPath.replace(/\\.\\$/g, '')};\t\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (field.leafValueType === 'First') {\n\t\t\t\t\t\t\t\tqueryGroup[field.id] = {'$first': '$' + field.fieldPath.replace(/\\.\\$/g, '')};\t\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (field.leafValueType === 'Last') {\n\t\t\t\t\t\t\t\tqueryGroup[field.id] = {'$last': '$' + field.fieldPath.replace(/\\.\\$/g, '')};\t\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (field.leafValueType === 'Unique') {\n\t\t\t\t\t\t\t\tqueryGroup[field.id] = {'$addToSet': '$' + field.fieldPath.replace(/\\.\\$/g, '')};\t\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tqueryGroup[field.id] = {'$push': {$ifNull: ['$' + field.fieldPath.replace(/\\.\\$/g, ''), null]}};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tcustomFields.forEach(cust => {\n\t\t\t\t\t\t\tif (cust.leafValueType === 'Average') {\n\t\t\t\t\t\t\t\tqueryGroup[cust.selFieldId] = {'$avg': '$' + cust.selFieldId};\t\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (cust.leafValueType === 'Sum') {\n\t\t\t\t\t\t\t\tqueryGroup[cust.selFieldId] = {'$sum': '$' + cust.selFieldId};\t\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (cust.leafValueType === 'Count') {\n\t\t\t\t\t\t\t\tif (reportType === 'Dated') {\n\t\t\t\t\t\t\t\t\tqueryGroup[cust.selFieldId] = { '$sum': '$count_' + cust.selFieldId };\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\tqueryGroup[cust.selFieldId] = { '$push': '$count_' + cust.selFieldId };\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (cust.leafValueType === 'Minimum') {\n\t\t\t\t\t\t\t\tqueryGroup[cust.selFieldId] = {'$min': '$' + cust.selFieldId};\t\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (cust.leafValueType === 'Maximum') {\n\t\t\t\t\t\t\t\tqueryGroup[cust.selFieldId] = {'$max': '$' + cust.selFieldId};\t\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (cust.leafValueType === 'First') {\n\t\t\t\t\t\t\t\tqueryGroup[cust.selFieldId] = {'$first': '$' + cust.selFieldId};\t\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (cust.leafValueType === 'Last') {\n\t\t\t\t\t\t\t\tqueryGroup[cust.selFieldId] = {'$last': '$' + cust.selFieldId};\t\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (cust.leafValueType === 'Unique') {\n\t\t\t\t\t\t\t\tqueryGroup[cust.selFieldId] = {'$addToSet': '$' + cust.selFieldId};\t\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tqueryGroup[cust.selFieldId] = {'$push': {$ifNull: ['$' + cust.selFieldId, null]}};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\t// Totals\n\t\t\t\t\t\tif (fieldsTotal.length) {\n\t\t\t\t\t\t\tfieldsTotal.forEach(total => {\n\t\t\t\t\t\t\t\tselectedFields.filter(a => a.fieldType === 'Number' || a.leafValueType === 'Count').forEach(field => {\n\t\t\t\t\t\t\t\t\tqueryGroup[total.id + '_' + field.id] = {['$' + total.type] : '$' + total.id + '_' + field.id};\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\tcustomFields.forEach(field => {\n\t\t\t\t\t\t\t\t\tqueryGroup[total.id + '_' + field.selFieldId] = {['$' + total.type]: '$' + total.id + '_' + field.selFieldId};\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tquery.push({$group: queryGroup});\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\t//Projection\n\t\t\t\t\t\tlet queryProjection = {\n\t\t\t\t\t\t\t_id: 1\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tselectedFields.forEach(field => {\n\t\t\t\t\t\t\tif (field.leafValueType === 'Average') {\n\t\t\t\t\t\t\t\tqueryProjection[field.id] = {$avg: '$' + field.fieldPath.replace(/\\.\\$/g, '')};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (field.leafValueType === 'Sum') {\n\t\t\t\t\t\t\t\tqueryProjection[field.id] = {$sum: '$' + field.fieldPath.replace(/\\.\\$/g, '')};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (field.leafValueType === 'Count') {\n\t\t\t\t\t\t\t\tqueryProjection[field.id] = {$sum: 1};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (field.leafValueType === 'Minimum') {\n\t\t\t\t\t\t\t\tqueryProjection[field.id] = {$min: '$' + field.fieldPath.replace(/\\.\\$/g, '')};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (field.leafValueType === 'Maximum') {\n\t\t\t\t\t\t\t\tqueryProjection[field.id] = {$max: '$' + field.fieldPath.replace(/\\.\\$/g, '')};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tqueryProjection[field.id] = '$' + field.fieldPath.replace(/\\.\\$/g, '');\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tcustomFields.forEach(cust => {\n\t\t\t\t\t\t\tif (cust === 'Average') {\n\t\t\t\t\t\t\t\tqueryProjection[cust.selFieldId] = {$avg: '$' + cust.selFieldId};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (cust === 'Sum') {\n\t\t\t\t\t\t\t\tqueryProjection[cust.selFieldId] = {$sum: '$' + cust.selFieldId};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (cust === 'Count') {\n\t\t\t\t\t\t\t\tqueryProjection[cust.selFieldId] = {$sum: 1};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (cust === 'Minimum') {\n\t\t\t\t\t\t\t\tqueryProjection[cust.selFieldId] = {$min: '$' + cust.selFieldId};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (cust === 'Maximum') {\n\t\t\t\t\t\t\t\tqueryProjection[cust.selFieldId] = {$max: '$' + cust.selFieldId};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tqueryProjection[cust.selFieldId] = '$' + cust.selFieldId;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\t//Totals\n\t\t\t\t\t\tif (fieldsTotal.length && (reportType === 'List' || reportType === 'Dated')) {\n\t\t\t\t\t\t\tfieldsTotal.forEach(total => {\n\t\t\t\t\t\t\t\tselectedFields.filter(a => a.fieldType === 'Number' || a.leafValueType === 'Count').forEach(field => {\n\t\t\t\t\t\t\t\t\tqueryProjection[total.id + '_' + field.id] = {['$' + total.type]: '$' + total.id + '_' + field.id};\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\tcustomFields.forEach(field => {\n\t\t\t\t\t\t\t\t\tqueryProjection[total.id + '_' + field.selFieldId] = {['$' + total.type]: '$' + total.id + '_' + field.selFieldId};\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tquery.push({$project: queryProjection});\n\t\t\t\t\t}\n\n\t\t\t\t\t// SORT\n\t\t\t\t\tif (rootOptions.sort) {\n\t\t\t\t\t\tquery.push({\n\t\t\t\t\t\t\t$sort: rootOptions.sort\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tif (reportType === 'Group' && groupsRow.length > 1) {\n\t\t\t\t\t\tfor (let i = groupsRow.length - 1; i >= 1; i--) {\n\t\t\t\t\t\t\tlet projQuery = {_id: 1};\n\n\t\t\t\t\t\t\tprojQuery[groupsRow[i].id] = {\n\t\t\t\t\t\t\t\t_id: {[groupsRow[i].id]: '$_id.' + groupsRow[i].id}\n\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\tif (i === groupsRow.length - 1) {\n\t\t\t\t\t\t\t\tselectedFields.forEach(field => {\n\t\t\t\t\t\t\t\t\tprojQuery[groupsRow[i].id][field.id] = '$' + field.id;\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\tcustomFields.forEach(field => {\n\t\t\t\t\t\t\t\t\tprojQuery[groupsRow[i].id][field.selFieldId] = '$' + field.selFieldId;\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tprojQuery[groupsRow[i].id][groupsRow[i + 1].id] = '$' + groupsRow[i + 1].id;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tfieldsTotal.forEach(totField => {\n\t\t\t\t\t\t\t\tselectedFields.filter(b => b.fieldType === 'Number' || b.leafValueType === 'Count').forEach(selField => {\n\t\t\t\t\t\t\t\t\tprojQuery[totField.id + '_' + selField.id] = 1;\n\t\t\t\t\t\t\t\t\tprojQuery[groupsRow[i].id][totField.id + '_' + selField.id] = '$' + totField.id + '_' + selField.id;\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\tcustomFields.forEach(field => {\n\t\t\t\t\t\t\t\t\tprojQuery[groupsRow[i].id][totField.id + '_' + field.selFieldId] = '$' + totField.id + '_' + field.selFieldId;\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\tquery.push({$project: projQuery});\n\n\t\t\t\t\t\t\tlet grQuery = {\n\t\t\t\t\t\t\t\t_id: {}\n\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\tfor (let j = 0; j < i; j++) {\n\t\t\t\t\t\t\t\tgrQuery._id[groupsRow[j].id] = '$_id.' + groupsRow[j].id;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tgrQuery[groupsRow[i].id] = {\n\t\t\t\t\t\t\t\t$push: '$' + groupsRow[i].id\n\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\tfieldsTotal.forEach(totField => {\n\t\t\t\t\t\t\t\tselectedFields.filter(b => b.fieldType === 'Number' || b.leafValueType === 'Count').forEach(selField => {\n\t\t\t\t\t\t\t\t\tgrQuery[totField.id + '_' + selField.id] = {['$' + totField.type]: '$' + totField.id + '_' + selField.id};\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\tcustomFields.forEach(field => {\n\t\t\t\t\t\t\t\t\tgrQuery[totField.id + '_' + field.selFieldId] = {['$' + totField.type]: '$' + totField.id + '_' + field.selFieldId};\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\tquery.push({$group: grQuery});\n\n\t\t\t\t\t\t\tif (rootOptions.sort) {\n\t\t\t\t\t\t\t\tlet sortKeys = Object.keys(rootOptions.sort);\n\t\t\t\t\t\t\t\tlet sort = {};\n\n\t\t\t\t\t\t\t\tlet groupString = '';\n\t\t\t\t\t\t\t\tgroupsRow.forEach((row, groupIndex) => {\n\t\t\t\t\t\t\t\t\tif (groupIndex > 0) {\n\t\t\t\t\t\t\t\t\t\tgroupString += 'gr_' + (groupIndex + 1) + '.';\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tif (sortKeys.includes('_id.gr_' + (groupIndex + 1))) {\n\t\t\t\t\t\t\t\t\t\tsort[groupString + '_id.gr_' + (groupIndex + 1)] = rootOptions.sort['_id.gr_' + (groupIndex + 1)];\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\tsort[groupString + '_id.gr_' + (groupIndex + 1)] = 1;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\tsortKeys.filter(a => !a.startsWith('_id.gr_')).forEach(key => {\n\t\t\t\t\t\t\t\t\tsort[groupString + key] = rootOptions.sort[key];\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\tquery.push({$sort: sort});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// console.log('_____________ query __________'); console.log(query); console.log(JSON.stringify(query, null, 2));\n\n\t\t\t\t\tlet res = null;\n\t\t\t\t\t\n\t\t\t\t\ttry {\n\t\t\t\t\t\tres = await modelCollection.aggregate(query, {allowDiskUse: true, readPreference: this.serverConfig['ROOT_URL'] !== 'http://localhost:4200' ? 'secondary' : 'primary'}, true);\n\t\t\t\t\t}\n\t\t\t\t\tcatch (err) {\n\t\t\t\t\t\tconsole.log(err);\n\t\t\t\t\t}\n\n\t\t\t\t\tlet tmpTotals = {};\n\n\t\t\t\t\tif (res) {\n\t\t\t\t\t\tfieldsTotal.forEach(totField => {\n\t\t\t\t\t\t\tselectedFields.filter(b => b.fieldType === 'Number' || b.leafValueType === 'Count').forEach(selField => {\n\t\t\t\t\t\t\t\tif (totField.type === 'sum') {\n\t\t\t\t\t\t\t\t\ttmpTotals[totField.id + '_' + selField.id] = res.map(a => a[totField.id + '_' + selField.id] || 0).reduce((a, b) => a + b, 0);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse if (totField.type === 'avg') {\n\t\t\t\t\t\t\t\t\ttmpTotals[totField.id + '_' + selField.id] = round(res.map(a => a[totField.id + '_' + selField.id] || 0).reduce((a, b) => a + b, 0) / res.length);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\tcustomFields.forEach(custField => {\n\t\t\t\t\t\t\t\tif (totField.type === 'sum') {\n\t\t\t\t\t\t\t\t\ttmpTotals[totField.id + '_' + custField.selFieldId] = res.map(a => a[totField.id + '_' + custField.selFieldId] || 0).reduce((a, b) => a + b, 0);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse if (totField.type === 'avg') {\n\t\t\t\t\t\t\t\t\ttmpTotals[totField.id + '_' + custField.selFieldId] = round(res.map(a => a[totField.id + '_' + custField.selFieldId] || 0).reduce((a, b) => a + b, 0) / res.length);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tlet tmpRes = [{\n\t\t\t\t\t\tcount: res ? res.length : 0,\n\t\t\t\t\t\tresults: res ? (rootOptions.limit ? res.splice(0, rootOptions.limit) : res) : [],\n\t\t\t\t\t\ttotals: tmpTotals\n\t\t\t\t\t}];\n\n\t\t\t\t\treturn tmpRes;\n\t\t\t\t}\n\t\t\t},\n\t\t\tworkerTaskWeight: 3\n\t\t}\n\t});\n}"]}
1
+ {"version":3,"sources":["../../src/methods/report-builder.ts"],"names":["simpl_schema_1","require","pagination_model_1","resolveio_server_app_1","common_1","schema_report_builder_1","loadReportBuilderMethods","methodManager","methods","reportBuilderBuildTree","check","default","collection_root","type","String","function","lookupSchemaData","getReportLookupSchemas","sort","a","b","collection_name","localeCompare","lookupSchemaTree","find","is_root","tree","treeItems","buildTree","Object","keys","filter","endsWith","forEach","lookup","fieldPath","split","field","path","children","fieldName","lookup_collection","Promise","resolve","isLeaf","reportBuilderGetDistinctValue","treeLeaf","blackbox","fieldType","includes","mongoCommand","replace","reportBuilderGetResults","reportType","rootCollectionName","options","PaginationOptionsSchema","filters","Array","optional","filters.$","filterArrays","filterArrays.$","filterArrayFields","filterArrayFields.$","selectedFields","selectedFields.$","customFields","customFields.$","groupsRow","groupsRow.$","fieldsTotal","fieldsTotal.$","fieldsLink","fieldsLink.$","date_field","date_interval","displayType","rootOptions","modelCollection","ResolveIOServer","getMongoManager","collection","Error","query_1","initialQueryMatchCondition_1","$and","some","c","length","push","$match","$addFields","count","$sum","sizes_1","filterField","fieldData","i","$lookup","as","lookup_as","from","localField","lookup_local_key","foreignField","lookup_foreign_key","_a","$size","$ifNull","$unwind","preserveNullAndEmptyArrays","_b","row","fieldPath_1","treeItem","fieldPath_2","_c","leafValueType","divFields_1","total","multFields","field_first","field_second","size","$cond","if","$gt","then","else","id","$divide","$multiply","link","$cmp","cust","operations","operation","fields","value","opIndex","condCheck_1","tmpOperationFields_1","condOr_1","custFieldGroup","$eq","selFieldId","$or","queryMatchConditionLookup_1","queryGroup_1","_id","groupedSorts_1","sortField","selField","$sort","$second","date","timezone","process","env","TZ_CLIENT","$minute","$hour","$dayOfMonth","$month","$year","$isoWeek","$isoWeekYear","$avg","$min","$max","$first","$last","$addToSet","$push","$group","queryProjection_1","$project","sortKeys_1","sort_1","groupString_1","projQuery","grQuery","totField","j","groupIndex","startsWith","key","res_1","aggregate","allowDiskUse","readPreference","this","serverConfig","sent","console","log","err_1","tmpTotals_1","map","reduce","round","custField","results","limit","splice","totals","workerTaskWeight","exports"],"mappings":"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","file":"report-builder.js","sourcesContent":["import SimpleSchema from 'simpl-schema';\nimport { MethodManager } from '../managers/method.manager';\nimport { PaginationOptions, PaginationOptionsSchema } from '../models/pagination.model';\nimport { ResolveIOServer } from '../resolveio-server-app';\nimport { round } from '../util/common';\nimport { buildTree, getReportLookupSchemas, mongoCommand } from '../util/schema-report-builder';\n\nexport function loadReportBuilderMethods(methodManager: MethodManager) {\n\tmethodManager.methods({\n\t\treportBuilderBuildTree: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tcollection_root: {\n\t\t\t\t\ttype: String\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: function(collection_root: string) {\n\t\t\t\tlet lookupSchemaData = getReportLookupSchemas(collection_root).sort((a, b) => a.collection_name.localeCompare(b.collection_name));\n\t\t\t\tlet lookupSchemaTree = lookupSchemaData.find(a => a.is_root === true).tree;\n\n\t\t\t\tlet treeItems = buildTree(collection_root, lookupSchemaTree);\n\n\t\t\t\tObject.keys(lookupSchemaTree).filter(a => a.endsWith('(Lookup)')).forEach(lookup => {\n\t\t\t\t\tlet fieldPath = lookup.split('.');\n\t\t\t\t\tlet field = null;\n\t\t\t\t\tfieldPath.forEach(path => {\n\t\t\t\t\t\tif (!field) {\n\t\t\t\t\t\t\tfield = treeItems.find(a => a.fieldName === path);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tfield = field.children.find(a => a.fieldName === path);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tfield.children = buildTree(lookupSchemaTree[lookup].lookup_collection, lookupSchemaData.find(a => a.collection_name === lookupSchemaTree[lookup].lookup_collection).tree, field);\n\t\t\t\t});\n\n\t\t\t\t// console.log('----------- Tree Items -----------', treeItems);\n\n\t\t\t\treturn Promise.resolve({isLeaf: false, children: treeItems});\n\t\t\t}\n\t\t},\n\t\treportBuilderGetDistinctValue: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\ttreeLeaf: {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\tblackbox: true\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: async function(treeLeaf) {\n\t\t\t\tif (treeLeaf.fieldType === 'String') {\n\t\t\t\t\tif (treeLeaf.fieldPath.includes('(Lookup)')) {\n\t\t\t\t\t\treturn mongoCommand('distinct', treeLeaf.collection_name, treeLeaf.fieldPath.replace(/^.+\\(.+\\) \\(Lookup\\)\\.\\$\\./g, '').replace(/\\.\\$/g, ''));\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\treturn mongoCommand('distinct', treeLeaf.collection_name, treeLeaf.fieldPath.replace(/\\.\\$/g, ''));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\treturn [];\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\treportBuilderGetResults: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\treportType: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\trootCollectionName: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\toptions: {\n\t\t\t\t\ttype: PaginationOptionsSchema\n\t\t\t\t},\n\t\t\t\tfilters: {\n\t\t\t\t\ttype: Array,\n\t\t\t\t\toptional: true\n\t\t\t\t},\n\t\t\t\t'filters.$': {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\tblackbox: true,\n\t\t\t\t\toptional: true\n\t\t\t\t},\n\t\t\t\tfilterArrays: {\n\t\t\t\t\ttype: Array,\n\t\t\t\t\toptional: true\n\t\t\t\t},\n\t\t\t\t'filterArrays.$': {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\tblackbox: true,\n\t\t\t\t\toptional: true\n\t\t\t\t},\n\t\t\t\tfilterArrayFields: {\n\t\t\t\t\ttype: Array,\n\t\t\t\t\toptional: true\n\t\t\t\t},\n\t\t\t\t'filterArrayFields.$': {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\tblackbox: true,\n\t\t\t\t\toptional: true\n\t\t\t\t},\n\t\t\t\tselectedFields: {\n\t\t\t\t\ttype: Array,\n\t\t\t\t\toptional: true\n\t\t\t\t},\n\t\t\t\t'selectedFields.$': {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\toptional: true,\n\t\t\t\t\tblackbox: true\n\t\t\t\t},\n\t\t\t\tcustomFields: {\n\t\t\t\t\ttype: Array,\n\t\t\t\t\toptional: true\n\t\t\t\t},\n\t\t\t\t'customFields.$': {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\toptional: true,\n\t\t\t\t\tblackbox: true\n\t\t\t\t},\n\t\t\t\tgroupsRow: {\n\t\t\t\t\ttype: Array\n\t\t\t\t},\n\t\t\t\t'groupsRow.$': {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\tblackbox: true\n\t\t\t\t},\n\t\t\t\tfieldsTotal: {\n\t\t\t\t\ttype: Array\n\t\t\t\t},\n\t\t\t\t'fieldsTotal.$': {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\tblackbox: true\n\t\t\t\t},\n\t\t\t\tfieldsLink: {\n\t\t\t\t\ttype: Array\n\t\t\t\t},\n\t\t\t\t'fieldsLink.$': {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\tblackbox: true\n\t\t\t\t},\n\t\t\t\tdate_field: {\n\t\t\t\t\ttype: String,\n\t\t\t\t\toptional: true\n\t\t\t\t},\n\t\t\t\tdate_interval: {\n\t\t\t\t\ttype: String,\n\t\t\t\t\toptional: true\n\t\t\t\t},\n\t\t\t\tdisplayType: {\n\t\t\t\t\ttype: String,\n\t\t\t\t\toptional: true\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: async function(reportType: string, rootCollectionName: string, rootOptions: PaginationOptions, filters: any[] = [], filterArrays: any[] = [], filterArrayFields: any[] = [], selectedFields: any[] = [], customFields: any[] = [], groupsRow: any[] = [], fieldsTotal: any[] = [], fieldsLink: any[] = [], date_field = '', date_interval = '', displayType = '') {\n\t\t\t\tlet modelCollection = ResolveIOServer.getMongoManager().collection(rootCollectionName);\n\n\t\t\t\tif (!modelCollection) {\n\t\t\t\t\tthrow new Error('Error in Report builder get results: Invalid collection');\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\t// Query\n\t\t\t\t\tlet query = [];\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t// Non-Lookup Match Filters\n\t\t\t\t\tlet initialQueryMatchCondition = {\n\t\t\t\t\t\t$and: []\n\t\t\t\t\t};\n\n\t\t\t\t\t// selectedFields.filter(a => a.collection_name === rootCollectionName).forEach(field => {\n\t\t\t\t\t// \tinitialQueryMatchCondition['$and'].push({\n\t\t\t\t\t// \t\t$and: [\n\t\t\t\t\t// \t\t\t{[field.fieldPath.replace(/\\.\\$/g, '')]: {$exists: 1}},\n\t\t\t\t\t// \t\t\t// {[field.fieldPath.replace(/\\.\\$/g, '')]: {$ne: ''}},\n\t\t\t\t\t// \t\t\t{[field.fieldPath.replace(/\\.\\$/g, '')]: {$ne: null}},\n\t\t\t\t\t// \t\t]\n\t\t\t\t\t// \t});\n\t\t\t\t\t// });\n\n\t\t\t\t\tif (filters.filter(a => (!a['$or'] && !Object.keys(a).some(b => b.includes('(Lookup)'))) || (a['$or'] && !a['$or'].some(b => Object.keys(b).some(c => c.includes('(Lookup)'))))).length) {\n\t\t\t\t\t\tfilters.filter(a => (!a['$or'] && !Object.keys(a).some(b => b.includes('(Lookup)'))) || (a['$or'] && !a['$or'].some(b => Object.keys(b).some(c => c.includes('(Lookup)'))))).forEach(filter => {\n\t\t\t\t\t\t\tinitialQueryMatchCondition['$and'].push(filter);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\t// Add filter to query\n\t\t\t\t\t// if (filters.filter(a => (!a['$or'] && !Object.keys(a).some(b => b.includes('(Lookup)'))) || (a['$or'] && !a['$or'].some(b => Object.keys(b).some(c => c.includes('(Lookup)'))))).length || selectedFields.filter(a => !a.fieldPath.includes('(Lookup')).length) {\n\t\t\t\t\tif (filters.filter(a => (!a['$or'] && !Object.keys(a).some(b => b.includes('(Lookup)'))) || (a['$or'] && !a['$or'].some(b => Object.keys(b).some(c => c.includes('(Lookup)'))))).length) {\n\t\t\t\t\t\tquery.push({\n\t\t\t\t\t\t\t$match: initialQueryMatchCondition\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\t// Add count\n\t\t\t\t\tquery.push({ $addFields: { count: { $sum: 1} } });\n\n\t\t\t\t\tlet sizes = [];\n\n\t\t\t\t\tfilterArrayFields.filter(a => a.fieldPath).forEach(filterField => {\n\t\t\t\t\t\tlet fieldData = filterField.fieldPath.split('.$');\n\n\t\t\t\t\t\tlet fieldPath = '';\n\n\t\t\t\t\t\tfor (let i = 0; i < fieldData.length - 1; i++) {\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tfieldPath += fieldData[i];\n\n\t\t\t\t\t\t\tif (fieldPath.split('.$')[fieldPath.split('.$').length - 1].includes('(Lookup)')) {\n\t\t\t\t\t\t\t\tif (!query.some(a => a.$lookup && a.$lookup.as === filterField.lookup_as.replace(/\\.\\$/g, ''))) {\n\t\t\t\t\t\t\t\t\tquery.push({$lookup: {\n\t\t\t\t\t\t\t\t\t\tfrom: filterField.lookup_collection,\n\t\t\t\t\t\t\t\t\t\tlocalField: filterField.lookup_local_key,\n\t\t\t\t\t\t\t\t\t\tforeignField: filterField.lookup_foreign_key,\n\t\t\t\t\t\t\t\t\t\tas: filterField.lookup_as.replace(/\\.\\$/g, '')\n\t\t\t\t\t\t\t\t\t}});\n\n\t\t\t\t\t\t\t\t\tsizes.push(filterField.lookup_as.replace(/\\.\\$\\./g, '_').replace(/\\./g, '_'));\n\t\t\t\t\t\t\t\t\tquery.push({$addFields: {['size_' + filterField.lookup_as.replace(/\\.\\$\\./g, '_').replace(/\\./g, '_')]: {$size: {$ifNull: ['$' + filterField.lookup_as.replace(/\\.\\$/g, '').replace(/\\./g, '_'), []]}}}});\n\t\t\n\t\t\t\t\t\t\t\t\tquery.push({'$unwind': {path: '$' + filterField.lookup_as.replace(/\\.\\$/g, ''), preserveNullAndEmptyArrays: true}});\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tif (!query.some(a => a.$addFields && Object.keys(a.$addFields).includes('size_' + fieldPath.replace(/\\./g, '_')))) {\n\t\t\t\t\t\t\t\t\tsizes.push(fieldPath.replace(/\\./g, '_'));\n\t\t\t\t\t\t\t\t\tquery.push({$addFields: {['size_' + fieldPath.replace(/\\./g, '_')]: {$size: {$ifNull: ['$' + fieldPath, []]}}}});\n\t\t\n\t\t\t\t\t\t\t\t\tquery.push({'$unwind': {path: '$' + fieldPath, preserveNullAndEmptyArrays: true}});\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\t// Groups - Lookups / Sizes / Unwinds\n\t\t\t\t\tgroupsRow.forEach(row => {\n\t\t\t\t\t\tif (row.field.includes('$')) {\n\t\t\t\t\t\t\tlet fieldData = row.field.split('.$');\n\n\t\t\t\t\t\t\tlet fieldPath = '';\n\n\t\t\t\t\t\t\tfor (let i = 0; i < fieldData.length - 1; i++) {\n\t\t\t\t\t\t\t\tfieldPath += fieldData[i];\n\n\t\t\t\t\t\t\t\tif (fieldPath.split('.$')[fieldPath.split('.$').length - 1].includes('(Lookup)')) {\n\t\t\t\t\t\t\t\t\tif (!query.some(a => a.$lookup && a.$lookup.as === row.treeItem.lookup_as.replace(/\\.\\$/g, ''))) {\n\t\t\t\t\t\t\t\t\t\tquery.push({$lookup: {\n\t\t\t\t\t\t\t\t\t\t\tfrom: row.treeItem.lookup_collection,\n\t\t\t\t\t\t\t\t\t\t\tlocalField: row.treeItem.lookup_local_key,\n\t\t\t\t\t\t\t\t\t\t\tforeignField: row.treeItem.lookup_foreign_key,\n\t\t\t\t\t\t\t\t\t\t\tas: row.treeItem.lookup_as.replace(/\\.\\$/g, '')\n\t\t\t\t\t\t\t\t\t\t}});\n\n\t\t\t\t\t\t\t\t\t\tsizes.push(row.treeItem.lookup_as.replace(/\\.\\$\\./g, '_').replace(/\\./g, '_'));\n\t\t\t\t\t\t\t\t\t\tquery.push({$addFields: {['size_' + row.treeItem.lookup_as.replace(/\\.\\$\\./g, '_').replace(/\\./g, '_')]: {$size: {$ifNull: ['$' + row.treeItem.lookup_as.replace(/\\.\\$/g, '').replace(/\\./g, '_'), []]}}}});\n\t\t\t\n\t\t\t\t\t\t\t\t\t\tquery.push({'$unwind': {path: '$' + row.treeItem.lookup_as.replace(/\\.\\$/g, ''), preserveNullAndEmptyArrays: true}});\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\tif (!query.some(a => a.$addFields && Object.keys(a.$addFields).includes('size_' + fieldPath.replace(/\\.\\$\\./g, '.').replace(/\\./g, '_')))) {\n\t\t\t\t\t\t\t\t\t\tsizes.push(fieldPath.replace(/\\.\\$\\./g, '.').replace(/\\./g, '_'));\n\t\t\t\t\t\t\t\t\t\tquery.push({$addFields: {['size_' + fieldPath.replace(/\\.\\$\\./g, '.').replace(/\\./g, '_')]: {$size: {$ifNull: ['$' + fieldPath.replace(/\\.\\$\\./g, '.'), []]}}}});\n\t\t\t\t\t\t\t\t\t\tquery.push({'$unwind': {path: '$' + fieldPath.replace(/\\.\\$\\./g, '.'), preserveNullAndEmptyArrays: true}});\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tfieldPath += '.$';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\t// Selected Fields - Lookups / Sizes / Unwinds\n\t\t\t\t\tselectedFields.forEach(field => {\n\t\t\t\t\t\tif (field.fieldPath.includes('$')) {\n\t\t\t\t\t\t\tlet fieldData = field.fieldPath.split('.$');\n\n\t\t\t\t\t\t\tlet fieldPath = '';\n\n\t\t\t\t\t\t\tfor (let i = 0; i < fieldData.length - 1; i++) {\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tfieldPath += fieldData[i];\n\n\t\t\t\t\t\t\t\tif (fieldPath.split('.$')[fieldPath.split('.$').length - 1].includes('(Lookup)')) {\n\t\t\t\t\t\t\t\t\tif (!query.some(a => a.$lookup && a.$lookup.as === field.lookup_as.replace(/\\.\\$/g, ''))) {\n\t\t\t\t\t\t\t\t\t\tquery.push({$lookup: {\n\t\t\t\t\t\t\t\t\t\t\tfrom: field.lookup_collection,\n\t\t\t\t\t\t\t\t\t\t\tlocalField: field.lookup_local_key,\n\t\t\t\t\t\t\t\t\t\t\tforeignField: field.lookup_foreign_key,\n\t\t\t\t\t\t\t\t\t\t\tas: field.lookup_as.replace(/\\.\\$/g, '')\n\t\t\t\t\t\t\t\t\t\t}});\n\n\t\t\t\t\t\t\t\t\t\tsizes.push(field.lookup_as.replace(/\\.\\$\\./g, '_').replace(/\\./g, '_'));\n\t\t\t\t\t\t\t\t\t\tquery.push({$addFields: {['size_' + field.lookup_as.replace(/\\.\\$\\./g, '_').replace(/\\./g, '_')]: {$size: {$ifNull: ['$' + field.lookup_as.replace(/\\.\\$/g, '').replace(/\\./g, '_'), []]}}}});\n\t\t\t\n\t\t\t\t\t\t\t\t\t\tquery.push({'$unwind': {path: '$' + field.lookup_as.replace(/\\.\\$/g, ''), preserveNullAndEmptyArrays: true}});\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\tif (!fieldData[i].includes('(Lookup)')) {\n\t\t\t\t\t\t\t\t\t\t\tif (!query.some(a => a.$addFields && Object.keys(a.$addFields).includes('size_' + fieldPath.replace(/\\./g, '_')))) {\n\t\t\t\t\t\t\t\t\t\t\t\tsizes.push(fieldPath.replace(/\\./g, '_'));\n\t\t\t\t\t\t\t\t\t\t\t\tquery.push({$addFields: {['size_' + fieldPath.replace(/\\./g, '_')]: {$size: {$ifNull: ['$' + fieldPath, []]}}}});\n\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\tquery.push({'$unwind': {path: '$' + fieldPath, preserveNullAndEmptyArrays: true}});\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\tif (!query.some(a => a.$addFields && Object.keys(a.$addFields).includes('size_' + fieldPath.replace(/\\./g, '_')))) {\n\t\t\t\t\t\t\t\t\t\tsizes.push(fieldPath.replace(/\\./g, '_'));\n\t\t\t\t\t\t\t\t\t\tquery.push({$addFields: {['size_' + fieldPath.replace(/\\./g, '_')]: {$size: {$ifNull: ['$' + fieldPath, []]}}}});\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tif (field.leafValueType !== 'Count' && !query.some(a => a.$unwind && a.$unwind.path === '$' + fieldPath)) {\n\t\t\t\t\t\t\t\t\t\tquery.push({'$unwind': {path: '$' + fieldPath, preserveNullAndEmptyArrays: true}});\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\t// Divide all number fields by sizes\n\t\t\t\t\tlet divFields = {$addFields: {}};\n\n\t\t\t\t\tfieldsTotal.filter(a => a.type === 'sum').forEach(total => {\n\t\t\t\t\t\tselectedFields.filter(a => a.fieldType === 'Number' || a.leafValueType === 'Count').forEach(field => {\n\t\t\t\t\t\t\tlet multFields = [];\n\n\t\t\t\t\t\t\tif (!field.fieldPath.includes('.$')) {\n\t\t\t\t\t\t\t\tsizes.forEach(size => {\n\t\t\t\t\t\t\t\t\tmultFields.push({$cond: { if: { $gt: ['$size_' + size, 0 ] }, then: '$size_' + size, else: 1 }});\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tsizes.filter(a => !field.fieldPath.replace(/\\.\\$\\./g, '_').replace(/\\./g, '_').includes(a) && !filterArrayFields.filter(a => a.fieldPath).some(b => b.fieldPath.replace(/\\.\\$\\./g, '_').replace(/\\./g, '_').includes(a)) && !fieldsLink.some(b => b.field_first.replace(/\\.\\$\\./g, '_').replace(/\\./g, '_').includes(a) || b.field_second.replace(/\\.\\$\\./g, '_').replace(/\\./g, '_').includes(a))).forEach(size => {\n\t\t\t\t\t\t\t\t\tmultFields.push({$cond: { if: { $gt: ['$size_' + size, 0 ] }, then: '$size_' + size, else: 1 }});\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (multFields.length) {\n\t\t\t\t\t\t\t\tif (field.leafValueType === 'Count') {\n\t\t\t\t\t\t\t\t\tdivFields.$addFields[total.id + '_' + field.id] = {\n\t\t\t\t\t\t\t\t\t\t$divide: ['$count', {$multiply: multFields}]\n\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\tdivFields.$addFields[total.id + '_' + field.id] = {\n\t\t\t\t\t\t\t\t\t\t$divide: ['$' + field.fieldPath.replace(/\\.\\$/g, ''), {$multiply: multFields}]\n\t\t\t\t\t\t\t\t\t};\t\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tif (field.leafValueType === 'Count') {\n\t\t\t\t\t\t\t\t\tdivFields.$addFields[total.id + '_' + field.id] = '$count';\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\tdivFields.$addFields[total.id + '_' + field.id] = '$' + field.fieldPath.replace(/\\.\\$/g, '');\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\n\t\t\t\t\tselectedFields.filter(a => a.fieldType === 'Number' && a.leafValueType === 'Sum').forEach(field => {\n\t\t\t\t\t\tlet multFields = [];\n\n\t\t\t\t\t\tsizes.filter(a => !field.fieldPath.replace(/\\.\\$\\./g, '_').replace(/\\./g, '_').includes(a) && !groupsRow.some(b => b.field.replace(/\\.\\$\\./g, '_').replace(/\\./g, '_').includes(a)) && !filterArrayFields.filter(a => a.fieldPath).some(b => b.fieldPath.replace(/\\.\\$\\./g, '_').replace(/\\./g, '_').includes(a)) && !fieldsLink.some(b => b.field_first.replace(/\\.\\$\\./g, '_').replace(/\\./g, '_').includes(a) || b.field_second.replace(/\\.\\$\\./g, '_').replace(/\\./g, '_').includes(a))).forEach(size => {\n\t\t\t\t\t\t\tmultFields.push({$cond: { if: { $gt: ['$size_' + size, 0 ] }, then: '$size_' + size, else: 1 }});\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tif (multFields.length) {\n\t\t\t\t\t\t\tdivFields.$addFields[field.fieldPath.replace(/\\.\\$/g, '')] = {\n\t\t\t\t\t\t\t\t$divide: ['$' + field.fieldPath.replace(/\\.\\$/g, ''), {$multiply: multFields}]\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\tselectedFields.filter(a => a.leafValueType === 'Count').forEach(field => {\n\t\t\t\t\t\tlet multFields = [];\n\t\t\t\t\t\t\n\t\t\t\t\t\tsizes.filter(a => !field.fieldPath.replace(/\\.\\$\\./g, '_').replace(/\\./g, '_').includes(a) && !groupsRow.some(b => b.field.replace(/\\.\\$\\./g, '_').replace(/\\./g, '_').includes(a)) && !filterArrayFields.filter(a => a.fieldPath).some(b => b.fieldPath.replace(/\\.\\$\\./g, '_').replace(/\\./g, '_').includes(a)) && !fieldsLink.some(b => b.field_first.replace(/\\.\\$\\./g, '_').replace(/\\./g, '_').includes(a) || b.field_second.replace(/\\.\\$\\./g, '_').replace(/\\./g, '_').includes(a))).forEach(size => {\n\t\t\t\t\t\t\tmultFields.push({$cond: { if: { $gt: ['$size_' + size, 0 ] }, then: '$size_' + size, else: 1 }});\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tif (multFields.length) {\n\t\t\t\t\t\t\tdivFields.$addFields['count_' + field.fieldPath.replace(/\\.\\$/g, '')] = {\n\t\t\t\t\t\t\t\t$divide: ['$count', {$multiply: multFields}]\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tif (reportType !== 'Dated' && sizes.filter(a => field.fieldPath.replace(/\\.\\$\\./g, '_').includes(a)).length) {\n\t\t\t\t\t\t\t\tsizes.filter(a => field.fieldPath.replace(/\\.\\$\\./g, '_').includes(a)).forEach(size => {\n\t\t\t\t\t\t\t\t\tdivFields.$addFields['count_' + field.fieldPath.replace(/\\.\\$/g, '')] = '$size_' + size;\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tdivFields.$addFields['count_' + field.fieldPath.replace(/\\.\\$/g, '')] = '$count';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\tfieldsTotal.filter(a => a.type === 'avg').forEach(total => {\n\t\t\t\t\t\tselectedFields.filter(a => a.fieldType === 'Number' || a.leafValueType === 'Count').forEach(field => {\n\t\t\t\t\t\t\tdivFields.$addFields[total.id + '_' + field.id] = '$' + field.fieldPath.replace(/\\.\\$/g, '');\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\n\t\t\t\t\tif (Object.keys(divFields.$addFields).length > 0) {\n\t\t\t\t\t\tquery.push(divFields);\n\t\t\t\t\t}\n\n\t\t\t\t\tfieldsLink.filter(a => a.field_first && a.field_second).forEach(link => {\n\t\t\t\t\t\tquery.push({$addFields: {[link.id]: {$cmp: ['$' + link.field_first.replace(/\\.\\$/g, ''), '$' + link.field_second.replace(/\\.\\$/g, '')]}}});\n\t\t\t\t\t\tquery.push({$match: {[link.id]: 0}});\n\t\t\t\t\t});\n\n\t\t\t\t\tcustomFields.forEach(cust => {\n\t\t\t\t\t\tcust.operations.filter(a => a.operation && !a.fields.some(b => (b.field === null || b.field === '') && b.value === null)).forEach((operation, opIndex) => {\n\t\t\t\t\t\t\tlet custFieldGroup = {};\n\n\t\t\t\t\t\t\tif (operation.operation === 'divide') {\n\t\t\t\t\t\t\t\tlet condCheck = [];\n\t\t\t\t\t\t\t\toperation.fields.filter(a => a.field || a.value !== null).forEach(field => {\n\t\t\t\t\t\t\t\t\tif (field.field) {\n\t\t\t\t\t\t\t\t\t\tcondCheck.push({$eq: ['$' + field.field.replace(/\\.\\$/g, ''), 0]});\n\t\t\t\t\t\t\t\t\t\tcondCheck.push({$eq: ['$' + field.field.replace(/\\.\\$/g, ''), null]});\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\tcondCheck.push({$eq: [field.value, 0]});\n\t\t\t\t\t\t\t\t\t\tcondCheck.push({$eq: [field.value, null]});\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\tif (opIndex > 0) {\n\t\t\t\t\t\t\t\t\tcondCheck.push({$eq: ['$' + cust.selFieldId, 0]});\n\t\t\t\t\t\t\t\t\tcondCheck.push({$eq: ['$' + cust.selFieldId, null]});\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tlet tmpOperationFields = [];\n\n\t\t\t\t\t\t\t\tif (opIndex > 0) {\n\t\t\t\t\t\t\t\t\ttmpOperationFields.push('$' + cust.selFieldId);\n\t\t\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\t\t\toperation.fields.filter(a => a.field || a.value !== null).forEach(field => {\n\t\t\t\t\t\t\t\t\tif (field.field) {\n\t\t\t\t\t\t\t\t\t\ttmpOperationFields.push('$' + field.field.replace(/\\.\\$/g, ''));\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\ttmpOperationFields.push(field.value);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\tcustFieldGroup[cust.selFieldId] = {\n\t\t\t\t\t\t\t\t\t$cond: { if: { $or: condCheck }, then: 0, else: {['$' + operation.operation]: tmpOperationFields} }\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tcustFieldGroup[cust.selFieldId] = {\n\t\t\t\t\t\t\t\t\t['$' + operation.operation]: []\n\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t\tif (opIndex > 0) {\n\t\t\t\t\t\t\t\t\tcustFieldGroup[cust.selFieldId]['$' + operation.operation].push({$cond: { if: { $eq: ['$' + cust.selFieldId, null] }, then: 0, else: '$' + cust.selFieldId}});\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tlet condOr = [];\n\n\t\t\t\t\t\t\t\toperation.fields.filter(a => a.field || a.value !== null).forEach(field => {\n\t\t\t\t\t\t\t\t\tif (field.field) {\n\t\t\t\t\t\t\t\t\t\tcondOr.push({$eq: ['$' + field.field.replace(/\\.\\$/g, ''), null]});\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\tcondOr.push({$eq: [field.value, null]});\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t});\n\t\n\t\t\t\t\t\t\t\toperation.fields.filter(a => a.field || a.value !== null).forEach(field => {\n\t\t\t\t\t\t\t\t\tif (field.field) {\n\t\t\t\t\t\t\t\t\t\tcustFieldGroup[cust.selFieldId]['$' + operation.operation].push({$cond: { if: { $or: condOr }, then: 0, else: '$' + field.field.replace(/\\.\\$/g, '')}});\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\tcustFieldGroup[cust.selFieldId]['$' + operation.operation].push({$cond: { if: { $or: condOr }, then: 0, else: field.value}});\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tquery.push({$addFields: custFieldGroup});\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\n\t\t\t\t\tfieldsTotal.forEach(total => {\n\t\t\t\t\t\tcustomFields.forEach(field => {\n\t\t\t\t\t\t\tquery.push({$addFields:{[total.id + '_' + field.selFieldId]: '$' + field.selFieldId}});\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\n\t\t\t\t\t// Filters - Lookups / Arrays\n\t\t\t\t\tlet queryMatchConditionLookup = {\n\t\t\t\t\t\t$and: []\n\t\t\t\t\t};\n\n\t\t\t\t\tif (filters.filter(a => (!a['$or'] && Object.keys(a).some(b => b.includes('(Lookup)'))) || (a['$or'] && a['$or'].some(b => Object.keys(b).some(c => c.includes('(Lookup)'))))).length) {\n\t\t\t\t\t\tfilters.filter(a => (!a['$or'] && Object.keys(a).some(b => b.includes('(Lookup)'))) || (a['$or'] && a['$or'].some(b => Object.keys(b).some(c => c.includes('(Lookup)'))))).forEach(filter => {\n\t\t\t\t\t\t\tqueryMatchConditionLookup['$and'].push(filter);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tfilterArrays.forEach(filter => {\n\t\t\t\t\t\tqueryMatchConditionLookup['$and'].push(filter);\n\t\t\t\t\t});\n\n\t\t\t\t\tif (queryMatchConditionLookup.$and.length) {\n\t\t\t\t\t\tquery.push({$match: queryMatchConditionLookup});\n\t\t\t\t\t}\n\n\t\t\t\t\t// Group\n\t\t\t\t\tlet queryGroup = {\n\t\t\t\t\t\t_id: {}\n\t\t\t\t\t};\n\n\t\t\t\t\tif (groupsRow.length || !displayType || displayType === 'grouped') {\n\t\t\t\t\t\tif (!groupsRow.length) {\n\t\t\t\t\t\t\tqueryGroup._id = '$_id';\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tif (rootOptions.sort) { \n\t\t\t\t\t\t\t\tlet groupedSorts = {};\n\t\t\t\t\t\t\t\tObject.keys(rootOptions.sort).forEach(sortField => {\n\t\t\t\t\t\t\t\t\tlet selField = selectedFields.find(a => a.id === sortField);\n\n\t\t\t\t\t\t\t\t\tif (selField) {\n\t\t\t\t\t\t\t\t\t\tgroupedSorts[selField.fieldPath.replace(/\\.\\$/g, '')] = rootOptions.sort[sortField];\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tif (Object.keys(groupedSorts).length > 0) {\n\t\t\t\t\t\t\t\t\tquery.push({\n\t\t\t\t\t\t\t\t\t\t$sort: groupedSorts\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tgroupsRow.forEach(row => {\n\t\t\t\t\t\t\tqueryGroup._id[row.id] = '$' + row.field.replace(/\\.\\$/g, '');\n\n\t\t\t\t\t\t\tif (date_field && date_interval) {\n\t\t\t\t\t\t\t\tif (date_interval === 'Seconds') {\n\t\t\t\t\t\t\t\t\tqueryGroup._id['second'] = {'$second' : {'date': '$' + date_field.replace(/\\.\\$/g, ''), 'timezone': process.env.TZ_CLIENT || 'America/Chicago'}};\n\t\t\t\t\t\t\t\t\tqueryGroup._id['minute'] = {'$minute' : {'date': '$' + date_field.replace(/\\.\\$/g, ''), 'timezone': process.env.TZ_CLIENT || 'America/Chicago'}};\n\t\t\t\t\t\t\t\t\tqueryGroup._id['hour'] = {'$hour' : {'date': '$' + date_field.replace(/\\.\\$/g, ''), 'timezone': process.env.TZ_CLIENT || 'America/Chicago'}};\n\t\t\t\t\t\t\t\t\tqueryGroup._id['day'] = {'$dayOfMonth' : {'date': '$' + date_field.replace(/\\.\\$/g, ''), 'timezone': process.env.TZ_CLIENT || 'America/Chicago'}};\n\t\t\t\t\t\t\t\t\tqueryGroup._id['month'] = {'$month' : {'date': '$' + date_field.replace(/\\.\\$/g, ''), 'timezone': process.env.TZ_CLIENT || 'America/Chicago'}};\n\t\t\t\t\t\t\t\t\tqueryGroup._id['year'] = {'$year' : {'date': '$' + date_field.replace(/\\.\\$/g, ''), 'timezone': process.env.TZ_CLIENT || 'America/Chicago'}};\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse if (date_interval === 'Minutes') {\n\t\t\t\t\t\t\t\t\tqueryGroup._id['minute'] = {'$minute' : {'date': '$' + date_field.replace(/\\.\\$/g, ''), 'timezone': process.env.TZ_CLIENT || 'America/Chicago'}};\n\t\t\t\t\t\t\t\t\tqueryGroup._id['hour'] = {'$hour' : {'date': '$' + date_field.replace(/\\.\\$/g, ''), 'timezone': process.env.TZ_CLIENT || 'America/Chicago'}};\n\t\t\t\t\t\t\t\t\tqueryGroup._id['day'] = {'$dayOfMonth' : {'date': '$' + date_field.replace(/\\.\\$/g, ''), 'timezone': process.env.TZ_CLIENT || 'America/Chicago'}};\n\t\t\t\t\t\t\t\t\tqueryGroup._id['month'] = {'$month' : {'date': '$' + date_field.replace(/\\.\\$/g, ''), 'timezone': process.env.TZ_CLIENT || 'America/Chicago'}};\n\t\t\t\t\t\t\t\t\tqueryGroup._id['year'] = {'$year' : {'date': '$' + date_field.replace(/\\.\\$/g, ''), 'timezone': process.env.TZ_CLIENT || 'America/Chicago'}};\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse if (date_interval === 'Hours') {\n\t\t\t\t\t\t\t\t\tqueryGroup._id['hour'] = {'$hour' : {'date': '$' + date_field.replace(/\\.\\$/g, ''), 'timezone': process.env.TZ_CLIENT || 'America/Chicago'}};\n\t\t\t\t\t\t\t\t\tqueryGroup._id['day'] = {'$dayOfMonth' : {'date': '$' + date_field.replace(/\\.\\$/g, ''), 'timezone': process.env.TZ_CLIENT || 'America/Chicago'}};\n\t\t\t\t\t\t\t\t\tqueryGroup._id['month'] = {'$month' : {'date': '$' + date_field.replace(/\\.\\$/g, ''), 'timezone': process.env.TZ_CLIENT || 'America/Chicago'}};\n\t\t\t\t\t\t\t\t\tqueryGroup._id['year'] = {'$year' : {'date': '$' + date_field.replace(/\\.\\$/g, ''), 'timezone': process.env.TZ_CLIENT || 'America/Chicago'}};\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse if (date_interval === 'Daily') {\n\t\t\t\t\t\t\t\t\tqueryGroup._id['day'] = {'$dayOfMonth' : {'date': '$' + date_field.replace(/\\.\\$/g, ''), 'timezone': process.env.TZ_CLIENT || 'America/Chicago'}};\n\t\t\t\t\t\t\t\t\tqueryGroup._id['month'] = {'$month' : {'date': '$' + date_field.replace(/\\.\\$/g, ''), 'timezone': process.env.TZ_CLIENT || 'America/Chicago'}};\n\t\t\t\t\t\t\t\t\tqueryGroup._id['year'] = {'$year' : {'date': '$' + date_field.replace(/\\.\\$/g, ''), 'timezone': process.env.TZ_CLIENT || 'America/Chicago'}};\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse if (date_interval === 'Weekly') {\n\t\t\t\t\t\t\t\t\tqueryGroup._id['week'] = {'$isoWeek' : {'date': '$' + date_field.replace(/\\.\\$/g, ''), 'timezone': process.env.TZ_CLIENT || 'America/Chicago'}};\n\t\t\t\t\t\t\t\t\tqueryGroup._id['year'] = {'$isoWeekYear' : {'date': '$' + date_field.replace(/\\.\\$/g, ''), 'timezone': process.env.TZ_CLIENT || 'America/Chicago'}};\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse if (date_interval === 'Monthly') {\n\t\t\t\t\t\t\t\t\tqueryGroup._id['month'] = {'$month' : {'date': '$' + date_field.replace(/\\.\\$/g, ''), 'timezone': process.env.TZ_CLIENT || 'America/Chicago'}};\n\t\t\t\t\t\t\t\t\tqueryGroup._id['year'] = {'$year' : {'date': '$' + date_field.replace(/\\.\\$/g, ''), 'timezone': process.env.TZ_CLIENT || 'America/Chicago'}};\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse if (date_interval === 'Quarterly') {\n\t\t\t\t\t\t\t\t\tqueryGroup._id['month'] = {'$month' : {'date': '$' + date_field.replace(/\\.\\$/g, ''), 'timezone': process.env.TZ_CLIENT || 'America/Chicago'}};\n\t\t\t\t\t\t\t\t\tqueryGroup._id['year'] = {'$year' : {'date': '$' + date_field.replace(/\\.\\$/g, ''), 'timezone': process.env.TZ_CLIENT || 'America/Chicago'}};\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse if (date_interval === 'Yearly') {\n\t\t\t\t\t\t\t\t\tqueryGroup._id['year'] = {'$year' : {'date': '$' + date_field.replace(/\\.\\$/g, ''), 'timezone': process.env.TZ_CLIENT || 'America/Chicago'}};\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tselectedFields.forEach(field => {\n\t\t\t\t\t\t\tif (field.leafValueType === 'Average') {\n\t\t\t\t\t\t\t\tqueryGroup[field.id] = {'$avg': '$' + field.fieldPath.replace(/\\.\\$/g, '')};\t\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (field.leafValueType === 'Sum') {\n\t\t\t\t\t\t\t\tqueryGroup[field.id] = {'$sum': '$' + field.fieldPath.replace(/\\.\\$/g, '')};\t\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (field.leafValueType === 'Count') {\n\t\t\t\t\t\t\t\tqueryGroup[field.id] = { '$sum': '$count_' + field.fieldPath.replace(/\\.\\$/g, '') };\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (field.leafValueType === 'Minimum') {\n\t\t\t\t\t\t\t\tqueryGroup[field.id] = {'$min': '$' + field.fieldPath.replace(/\\.\\$/g, '')};\t\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (field.leafValueType === 'Maximum') {\n\t\t\t\t\t\t\t\tqueryGroup[field.id] = {'$max': '$' + field.fieldPath.replace(/\\.\\$/g, '')};\t\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (field.leafValueType === 'First') {\n\t\t\t\t\t\t\t\tqueryGroup[field.id] = {'$first': '$' + field.fieldPath.replace(/\\.\\$/g, '')};\t\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (field.leafValueType === 'Last') {\n\t\t\t\t\t\t\t\tqueryGroup[field.id] = {'$last': '$' + field.fieldPath.replace(/\\.\\$/g, '')};\t\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (field.leafValueType === 'Unique') {\n\t\t\t\t\t\t\t\tqueryGroup[field.id] = {'$addToSet': '$' + field.fieldPath.replace(/\\.\\$/g, '')};\t\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tqueryGroup[field.id] = {'$push': {$ifNull: ['$' + field.fieldPath.replace(/\\.\\$/g, ''), null]}};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tcustomFields.forEach(cust => {\n\t\t\t\t\t\t\tif (cust.leafValueType === 'Average') {\n\t\t\t\t\t\t\t\tqueryGroup[cust.selFieldId] = {'$avg': '$' + cust.selFieldId};\t\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (cust.leafValueType === 'Sum') {\n\t\t\t\t\t\t\t\tqueryGroup[cust.selFieldId] = {'$sum': '$' + cust.selFieldId};\t\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (cust.leafValueType === 'Count') {\n\t\t\t\t\t\t\t\tif (reportType === 'Dated') {\n\t\t\t\t\t\t\t\t\tqueryGroup[cust.selFieldId] = { '$sum': '$count_' + cust.selFieldId };\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\tqueryGroup[cust.selFieldId] = { '$push': '$count_' + cust.selFieldId };\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (cust.leafValueType === 'Minimum') {\n\t\t\t\t\t\t\t\tqueryGroup[cust.selFieldId] = {'$min': '$' + cust.selFieldId};\t\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (cust.leafValueType === 'Maximum') {\n\t\t\t\t\t\t\t\tqueryGroup[cust.selFieldId] = {'$max': '$' + cust.selFieldId};\t\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (cust.leafValueType === 'First') {\n\t\t\t\t\t\t\t\tqueryGroup[cust.selFieldId] = {'$first': '$' + cust.selFieldId};\t\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (cust.leafValueType === 'Last') {\n\t\t\t\t\t\t\t\tqueryGroup[cust.selFieldId] = {'$last': '$' + cust.selFieldId};\t\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (cust.leafValueType === 'Unique') {\n\t\t\t\t\t\t\t\tqueryGroup[cust.selFieldId] = {'$addToSet': '$' + cust.selFieldId};\t\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tqueryGroup[cust.selFieldId] = {'$push': {$ifNull: ['$' + cust.selFieldId, null]}};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\t// Totals\n\t\t\t\t\t\tif (fieldsTotal.length) {\n\t\t\t\t\t\t\tfieldsTotal.forEach(total => {\n\t\t\t\t\t\t\t\tselectedFields.filter(a => a.fieldType === 'Number' || a.leafValueType === 'Count').forEach(field => {\n\t\t\t\t\t\t\t\t\tqueryGroup[total.id + '_' + field.id] = {['$' + total.type] : '$' + total.id + '_' + field.id};\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\tcustomFields.forEach(field => {\n\t\t\t\t\t\t\t\t\tqueryGroup[total.id + '_' + field.selFieldId] = {['$' + total.type]: '$' + total.id + '_' + field.selFieldId};\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tquery.push({$group: queryGroup});\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\t//Projection\n\t\t\t\t\t\tlet queryProjection = {\n\t\t\t\t\t\t\t_id: 1\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tselectedFields.forEach(field => {\n\t\t\t\t\t\t\tif (field.leafValueType === 'Average') {\n\t\t\t\t\t\t\t\tqueryProjection[field.id] = {$avg: '$' + field.fieldPath.replace(/\\.\\$/g, '')};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (field.leafValueType === 'Sum') {\n\t\t\t\t\t\t\t\tqueryProjection[field.id] = {$sum: '$' + field.fieldPath.replace(/\\.\\$/g, '')};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (field.leafValueType === 'Count') {\n\t\t\t\t\t\t\t\tqueryProjection[field.id] = {$sum: 1};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (field.leafValueType === 'Minimum') {\n\t\t\t\t\t\t\t\tqueryProjection[field.id] = {$min: '$' + field.fieldPath.replace(/\\.\\$/g, '')};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (field.leafValueType === 'Maximum') {\n\t\t\t\t\t\t\t\tqueryProjection[field.id] = {$max: '$' + field.fieldPath.replace(/\\.\\$/g, '')};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tqueryProjection[field.id] = '$' + field.fieldPath.replace(/\\.\\$/g, '');\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tcustomFields.forEach(cust => {\n\t\t\t\t\t\t\tif (cust === 'Average') {\n\t\t\t\t\t\t\t\tqueryProjection[cust.selFieldId] = {$avg: '$' + cust.selFieldId};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (cust === 'Sum') {\n\t\t\t\t\t\t\t\tqueryProjection[cust.selFieldId] = {$sum: '$' + cust.selFieldId};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (cust === 'Count') {\n\t\t\t\t\t\t\t\tqueryProjection[cust.selFieldId] = {$sum: 1};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (cust === 'Minimum') {\n\t\t\t\t\t\t\t\tqueryProjection[cust.selFieldId] = {$min: '$' + cust.selFieldId};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (cust === 'Maximum') {\n\t\t\t\t\t\t\t\tqueryProjection[cust.selFieldId] = {$max: '$' + cust.selFieldId};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tqueryProjection[cust.selFieldId] = '$' + cust.selFieldId;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\t//Totals\n\t\t\t\t\t\tif (fieldsTotal.length && (reportType === 'List' || reportType === 'Dated')) {\n\t\t\t\t\t\t\tfieldsTotal.forEach(total => {\n\t\t\t\t\t\t\t\tselectedFields.filter(a => a.fieldType === 'Number' || a.leafValueType === 'Count').forEach(field => {\n\t\t\t\t\t\t\t\t\tqueryProjection[total.id + '_' + field.id] = {['$' + total.type]: '$' + total.id + '_' + field.id};\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\tcustomFields.forEach(field => {\n\t\t\t\t\t\t\t\t\tqueryProjection[total.id + '_' + field.selFieldId] = {['$' + total.type]: '$' + total.id + '_' + field.selFieldId};\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tquery.push({$project: queryProjection});\n\t\t\t\t\t}\n\n\t\t\t\t\t// SORT\n\t\t\t\t\tif (rootOptions.sort) {\n\t\t\t\t\t\tquery.push({\n\t\t\t\t\t\t\t$sort: rootOptions.sort\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tif (reportType === 'Group' && groupsRow.length > 1) {\n\t\t\t\t\t\tfor (let i = groupsRow.length - 1; i >= 1; i--) {\n\t\t\t\t\t\t\tlet projQuery = {_id: 1};\n\n\t\t\t\t\t\t\tprojQuery[groupsRow[i].id] = {\n\t\t\t\t\t\t\t\t_id: {[groupsRow[i].id]: '$_id.' + groupsRow[i].id}\n\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\tif (i === groupsRow.length - 1) {\n\t\t\t\t\t\t\t\tselectedFields.forEach(field => {\n\t\t\t\t\t\t\t\t\tprojQuery[groupsRow[i].id][field.id] = '$' + field.id;\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\tcustomFields.forEach(field => {\n\t\t\t\t\t\t\t\t\tprojQuery[groupsRow[i].id][field.selFieldId] = '$' + field.selFieldId;\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tprojQuery[groupsRow[i].id][groupsRow[i + 1].id] = '$' + groupsRow[i + 1].id;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tfieldsTotal.forEach(totField => {\n\t\t\t\t\t\t\t\tselectedFields.filter(b => b.fieldType === 'Number' || b.leafValueType === 'Count').forEach(selField => {\n\t\t\t\t\t\t\t\t\tprojQuery[totField.id + '_' + selField.id] = 1;\n\t\t\t\t\t\t\t\t\tprojQuery[groupsRow[i].id][totField.id + '_' + selField.id] = '$' + totField.id + '_' + selField.id;\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\tcustomFields.forEach(field => {\n\t\t\t\t\t\t\t\t\tprojQuery[groupsRow[i].id][totField.id + '_' + field.selFieldId] = '$' + totField.id + '_' + field.selFieldId;\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\tquery.push({$project: projQuery});\n\n\t\t\t\t\t\t\tlet grQuery = {\n\t\t\t\t\t\t\t\t_id: {}\n\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\tfor (let j = 0; j < i; j++) {\n\t\t\t\t\t\t\t\tgrQuery._id[groupsRow[j].id] = '$_id.' + groupsRow[j].id;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tgrQuery[groupsRow[i].id] = {\n\t\t\t\t\t\t\t\t$push: '$' + groupsRow[i].id\n\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\tfieldsTotal.forEach(totField => {\n\t\t\t\t\t\t\t\tselectedFields.filter(b => b.fieldType === 'Number' || b.leafValueType === 'Count').forEach(selField => {\n\t\t\t\t\t\t\t\t\tgrQuery[totField.id + '_' + selField.id] = {['$' + totField.type]: '$' + totField.id + '_' + selField.id};\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\tcustomFields.forEach(field => {\n\t\t\t\t\t\t\t\t\tgrQuery[totField.id + '_' + field.selFieldId] = {['$' + totField.type]: '$' + totField.id + '_' + field.selFieldId};\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\tquery.push({$group: grQuery});\n\n\t\t\t\t\t\t\tif (rootOptions.sort) {\n\t\t\t\t\t\t\t\tlet sortKeys = Object.keys(rootOptions.sort);\n\t\t\t\t\t\t\t\tlet sort = {};\n\n\t\t\t\t\t\t\t\tlet groupString = '';\n\t\t\t\t\t\t\t\tgroupsRow.forEach((row, groupIndex) => {\n\t\t\t\t\t\t\t\t\tif (groupIndex > 0) {\n\t\t\t\t\t\t\t\t\t\tgroupString += 'gr_' + (groupIndex + 1) + '.';\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tif (sortKeys.includes('_id.gr_' + (groupIndex + 1))) {\n\t\t\t\t\t\t\t\t\t\tsort[groupString + '_id.gr_' + (groupIndex + 1)] = rootOptions.sort['_id.gr_' + (groupIndex + 1)];\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\tsort[groupString + '_id.gr_' + (groupIndex + 1)] = 1;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\tsortKeys.filter(a => !a.startsWith('_id.gr_')).forEach(key => {\n\t\t\t\t\t\t\t\t\tsort[groupString + key] = rootOptions.sort[key];\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\tquery.push({$sort: sort});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// console.log('_____________ query __________'); console.log(query); console.log(JSON.stringify(query, null, 2));\n\n\t\t\t\t\tlet res = null;\n\t\t\t\t\t\n\t\t\t\t\ttry {\n\t\t\t\t\t\tres = await modelCollection.aggregate(query, {allowDiskUse: true, readPreference: this.serverConfig['ROOT_URL'] !== 'http://localhost:4200' ? 'secondary' : 'primary'}, true);\n\t\t\t\t\t}\n\t\t\t\t\tcatch (err) {\n\t\t\t\t\t\tconsole.log(err);\n\t\t\t\t\t}\n\n\t\t\t\t\tlet tmpTotals = {};\n\n\t\t\t\t\tif (res) {\n\t\t\t\t\t\tfieldsTotal.forEach(totField => {\n\t\t\t\t\t\t\tselectedFields.filter(b => b.fieldType === 'Number' || b.leafValueType === 'Count').forEach(selField => {\n\t\t\t\t\t\t\t\tif (totField.type === 'sum') {\n\t\t\t\t\t\t\t\t\ttmpTotals[totField.id + '_' + selField.id] = res.map(a => a[totField.id + '_' + selField.id] || 0).reduce((a, b) => a + b, 0);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse if (totField.type === 'avg') {\n\t\t\t\t\t\t\t\t\ttmpTotals[totField.id + '_' + selField.id] = round(res.map(a => a[totField.id + '_' + selField.id] || 0).reduce((a, b) => a + b, 0) / res.length);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\tcustomFields.forEach(custField => {\n\t\t\t\t\t\t\t\tif (totField.type === 'sum') {\n\t\t\t\t\t\t\t\t\ttmpTotals[totField.id + '_' + custField.selFieldId] = res.map(a => a[totField.id + '_' + custField.selFieldId] || 0).reduce((a, b) => a + b, 0);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse if (totField.type === 'avg') {\n\t\t\t\t\t\t\t\t\ttmpTotals[totField.id + '_' + custField.selFieldId] = round(res.map(a => a[totField.id + '_' + custField.selFieldId] || 0).reduce((a, b) => a + b, 0) / res.length);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tlet tmpRes = [{\n\t\t\t\t\t\tcount: res ? res.length : 0,\n\t\t\t\t\t\tresults: res ? (rootOptions.limit ? res.splice(0, rootOptions.limit) : res) : [],\n\t\t\t\t\t\ttotals: tmpTotals\n\t\t\t\t\t}];\n\n\t\t\t\t\treturn tmpRes;\n\t\t\t\t}\n\t\t\t},\n\t\t\tworkerTaskWeight: 2\n\t\t}\n\t});\n}"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@resolveio/server-lib",
3
- "version": "20.7.65",
3
+ "version": "20.7.67",
4
4
  "description": "",
5
5
  "scripts": {
6
6
  "package": "./build_package.sh",