@resolveio/server-lib 12.0.6 → 12.0.8
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.
- package/methods/pdf.js +48 -36
- package/methods/pdf.js.map +1 -1
- package/multi_threaded/helper_thread.js +110 -4
- package/multi_threaded/helper_thread.js.map +1 -1
- package/package.json +1 -1
- package/public_api.d.ts +0 -1
- package/public_api.js +0 -1
- package/public_api.js.map +1 -1
package/methods/pdf.js
CHANGED
|
@@ -342,35 +342,46 @@ function loadPDFMethods(methodManager) {
|
|
|
342
342
|
promises_1.push(_this.callMethodInternal('getDataURIfromURL', signedUrl));
|
|
343
343
|
});
|
|
344
344
|
Promise.all(promises_1).then(function (fileDatas) { return __awaiter(_this, void 0, void 0, function () {
|
|
345
|
-
var
|
|
345
|
+
var mergedPdf_1, i, fileData, pdf, copiedPages, pdf, img, page, imgDim, copiedPages, pdf, img, page, imgDim, copiedPages, b64PDF;
|
|
346
|
+
var _this = this;
|
|
346
347
|
return __generator(this, function (_a) {
|
|
347
348
|
switch (_a.label) {
|
|
348
|
-
case 0:
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
349
|
+
case 0:
|
|
350
|
+
if (!this._helperThread) return [3 /*break*/, 1];
|
|
351
|
+
this._helperThread.sendJobToHelperThread('mergePDFResolve', fileDatas).then(function (res) {
|
|
352
|
+
_this.callMethodInternal('uploadFileAndSave', fileName, res, (4 * Math.ceil(res.length / 3)), -1, fileType, false, function (errUp, resUp) {
|
|
353
|
+
resolve(resUp);
|
|
354
|
+
});
|
|
355
|
+
}, function (err) {
|
|
356
|
+
reject(err);
|
|
357
|
+
});
|
|
358
|
+
return [3 /*break*/, 18];
|
|
359
|
+
case 1: return [4 /*yield*/, pdf_lib_1.PDFDocument.create()];
|
|
353
360
|
case 2:
|
|
354
|
-
|
|
361
|
+
mergedPdf_1 = _a.sent();
|
|
362
|
+
i = 0;
|
|
363
|
+
_a.label = 3;
|
|
364
|
+
case 3:
|
|
365
|
+
if (!(i < fileDatas.length)) return [3 /*break*/, 16];
|
|
355
366
|
fileData = fileDatas[i];
|
|
356
|
-
if (!fileData.startsWith('data:application/pdf;base64,')) return [3 /*break*/,
|
|
367
|
+
if (!fileData.startsWith('data:application/pdf;base64,')) return [3 /*break*/, 6];
|
|
357
368
|
return [4 /*yield*/, pdf_lib_1.PDFDocument.load(fileData)];
|
|
358
|
-
case 3:
|
|
359
|
-
pdf = _a.sent();
|
|
360
|
-
return [4 /*yield*/, mergedPdf.copyPages(pdf, pdf.getPageIndices())];
|
|
361
369
|
case 4:
|
|
370
|
+
pdf = _a.sent();
|
|
371
|
+
return [4 /*yield*/, mergedPdf_1.copyPages(pdf, pdf.getPageIndices())];
|
|
372
|
+
case 5:
|
|
362
373
|
copiedPages = _a.sent();
|
|
363
374
|
copiedPages.forEach(function (page) {
|
|
364
|
-
|
|
375
|
+
mergedPdf_1.addPage(page);
|
|
365
376
|
});
|
|
366
|
-
return [3 /*break*/,
|
|
367
|
-
case 5:
|
|
368
|
-
if (!(fileData.startsWith('data:image/jpeg;base64,/9j/') || fileData.startsWith('data:image/png;base64,/9j/'))) return [3 /*break*/, 9];
|
|
369
|
-
return [4 /*yield*/, pdf_lib_1.PDFDocument.create()];
|
|
377
|
+
return [3 /*break*/, 15];
|
|
370
378
|
case 6:
|
|
379
|
+
if (!(fileData.startsWith('data:image/jpeg;base64,/9j/') || fileData.startsWith('data:image/png;base64,/9j/'))) return [3 /*break*/, 10];
|
|
380
|
+
return [4 /*yield*/, pdf_lib_1.PDFDocument.create()];
|
|
381
|
+
case 7:
|
|
371
382
|
pdf = _a.sent();
|
|
372
383
|
return [4 /*yield*/, pdf.embedJpg(fileData)];
|
|
373
|
-
case
|
|
384
|
+
case 8:
|
|
374
385
|
img = _a.sent();
|
|
375
386
|
page = pdf.addPage();
|
|
376
387
|
imgDim = img.size();
|
|
@@ -384,20 +395,20 @@ function loadPDFMethods(methodManager) {
|
|
|
384
395
|
width: imgDim.width,
|
|
385
396
|
height: imgDim.height,
|
|
386
397
|
});
|
|
387
|
-
return [4 /*yield*/,
|
|
388
|
-
case
|
|
398
|
+
return [4 /*yield*/, mergedPdf_1.copyPages(pdf, pdf.getPageIndices())];
|
|
399
|
+
case 9:
|
|
389
400
|
copiedPages = _a.sent();
|
|
390
401
|
copiedPages.forEach(function (page) {
|
|
391
|
-
|
|
402
|
+
mergedPdf_1.addPage(page);
|
|
392
403
|
});
|
|
393
|
-
return [3 /*break*/,
|
|
394
|
-
case 9:
|
|
395
|
-
if (!fileData.startsWith('data:image/png;base64,iVBOR')) return [3 /*break*/, 13];
|
|
396
|
-
return [4 /*yield*/, pdf_lib_1.PDFDocument.create()];
|
|
404
|
+
return [3 /*break*/, 15];
|
|
397
405
|
case 10:
|
|
406
|
+
if (!fileData.startsWith('data:image/png;base64,iVBOR')) return [3 /*break*/, 14];
|
|
407
|
+
return [4 /*yield*/, pdf_lib_1.PDFDocument.create()];
|
|
408
|
+
case 11:
|
|
398
409
|
pdf = _a.sent();
|
|
399
410
|
return [4 /*yield*/, pdf.embedPng(fileData)];
|
|
400
|
-
case
|
|
411
|
+
case 12:
|
|
401
412
|
img = _a.sent();
|
|
402
413
|
page = pdf.addPage();
|
|
403
414
|
imgDim = img.size();
|
|
@@ -411,26 +422,27 @@ function loadPDFMethods(methodManager) {
|
|
|
411
422
|
width: imgDim.width,
|
|
412
423
|
height: imgDim.height,
|
|
413
424
|
});
|
|
414
|
-
return [4 /*yield*/,
|
|
415
|
-
case
|
|
425
|
+
return [4 /*yield*/, mergedPdf_1.copyPages(pdf, pdf.getPageIndices())];
|
|
426
|
+
case 13:
|
|
416
427
|
copiedPages = _a.sent();
|
|
417
428
|
copiedPages.forEach(function (page) {
|
|
418
|
-
|
|
429
|
+
mergedPdf_1.addPage(page);
|
|
419
430
|
});
|
|
420
|
-
return [3 /*break*/,
|
|
421
|
-
case 13:
|
|
422
|
-
console.log('Error - unsupported!!', fileData.slice(0, 60));
|
|
423
|
-
_a.label = 14;
|
|
431
|
+
return [3 /*break*/, 15];
|
|
424
432
|
case 14:
|
|
433
|
+
console.log('Error - unsupported!!', fileData.slice(0, 60));
|
|
434
|
+
_a.label = 15;
|
|
435
|
+
case 15:
|
|
425
436
|
i++;
|
|
426
|
-
return [3 /*break*/,
|
|
427
|
-
case
|
|
428
|
-
case
|
|
437
|
+
return [3 /*break*/, 3];
|
|
438
|
+
case 16: return [4 /*yield*/, mergedPdf_1.saveAsBase64({ dataUri: true })];
|
|
439
|
+
case 17:
|
|
429
440
|
b64PDF = _a.sent();
|
|
430
441
|
this.callMethodInternal('uploadFileAndSave', fileName, b64PDF, (4 * Math.ceil(b64PDF.length / 3)), -1, fileType, false, function (errUp, resUp) {
|
|
431
442
|
resolve(resUp);
|
|
432
443
|
});
|
|
433
|
-
|
|
444
|
+
_a.label = 18;
|
|
445
|
+
case 18: return [2 /*return*/];
|
|
434
446
|
}
|
|
435
447
|
});
|
|
436
448
|
}); });
|
package/methods/pdf.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/methods/pdf.ts"],"names":[],"mappings":"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","file":"pdf.js","sourcesContent":["let fs = require('fs');\nimport { FileModel } from '../models/file.model';\nimport { HelperThread, MethodManager } from '../managers/method.manager';\nimport * as bent from 'bent';\nimport SimpleSchema from 'simpl-schema';\nimport { Files } from '../collections/file.collection';\nimport { objectIdHexString } from '../managers/mongo.manager';\n\nimport { PDFDocument } from 'pdf-lib';\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: function(html, fileName, orientation = 'portrait', fontSize = '8px', upload = false, uploadFileOrder = -1, uploadFileType = '') {\n\t\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\t\tif (this._helperThread) {\n\t\t\t\t\t\t(<HelperThread>this._helperThread).sendJobToHelperThread('generatePDF', html, fileName, orientation, fontSize).then((res: string) => {\n\t\t\t\t\t\t\tif (!upload) {\n\t\t\t\t\t\t\t\tresolve(res);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tlet fileData = res;\n\t\t\t\t\t\t\t\tthis.callMethodInternal('uploadFileAndSave', fileName, fileData, (4 * Math.ceil(fileData.length / 3)), uploadFileOrder !== null ? uploadFileOrder : -1, uploadFileType, false, (err, res) => {\n\t\t\t\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\t\t\treject(err);\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\tresolve(res);\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}, err => {\n\t\t\t\t\t\t\treject(err);\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\tlet phantom = require('phantom');\n\t\t\t\t\t\tlet phInstance = null;\n\t\t\t\t\t\t\n\t\t\t\t\t\tphantom.create().then(instance => {\n\t\t\t\t\t\t\tphInstance = instance;\n\t\t\t\t\t\t\treturn instance.createPage();\n\t\t\t\t\t\t}).then(page => {\n\t\t\t\t\t\t\tlet requestsArray = [];\n\n\t\t\t\t\t\t\tpage.on('onResourceRequested', (requestData, networkRequest) => {\n\t\t\t\t\t\t\t\trequestsArray.push(requestData.id);\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\tpage.on('onResourceReceived', (response) => {\n\t\t\t\t\t\t\t\tif (response.stage === 'end') {\n\t\t\t\t\t\t\t\t\tlet index = requestsArray.indexOf(response.id);\n\t\t\t\t\t\t\t\t\trequestsArray.splice(index, 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\tpage.property('paperSize', {\n\t\t\t\t\t\t\t\tformat: 'letter',\n\t\t\t\t\t\t\t\tmargin: '1cm',\n\t\t\t\t\t\t\t\torientation: orientation,\n\t\t\t\t\t\t\t\tfooter: {\n\t\t\t\t\t\t\t\t\theight: '1cm',\n\t\t\t\t\t\t\t\t\tcontents: phInstance.callback((pageNum, numPages) => {\n\t\t\t\t\t\t\t\t\t\treturn '<span style=\\'float:right; font-size: 12px;\\'>Page ' + pageNum + ' of ' + numPages + '</span>';\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\tpage.property('content', `\n\t\t\t\t\t\t\t<head>\n\t\t\t\t\t\t\t\t<style>\n\t\t\t\t\t\t\t\t\t@font-face {\n\t\t\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif', serif;\n\t\t\t\t\t\t\t\t\t\tfont-style: normal;\n\t\t\t\t\t\t\t\t\t\tfont-weight: normal;\n\t\t\t\t\t\t\t\t\t\tsrc: url(\"/usr/share/fonts/dejavu/DejaVuSerif.ttf\");\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t@font-face {\n\t\t\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif', serif;\n\t\t\t\t\t\t\t\t\t\tfont-style: normal;\n\t\t\t\t\t\t\t\t\t\tfont-weight: bold;\n\t\t\t\t\t\t\t\t\t\tsrc: url(\"/usr/share/fonts/dejavu/DejaVuSerif-Bold.ttf\");\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t@font-face {\n\t\t\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif', serif;\n\t\t\t\t\t\t\t\t\t\tfont-style: italic;\n\t\t\t\t\t\t\t\t\t\tfont-weight: normal;\n\t\t\t\t\t\t\t\t\t\tsrc: url(\"/usr/share/fonts/dejavu/DejaVuSerif-Italic.ttf\");\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t@font-face {\n\t\t\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif', serif;\n\t\t\t\t\t\t\t\t\t\tfont-style: italic;\n\t\t\t\t\t\t\t\t\t\tfont-weight: bold;\n\t\t\t\t\t\t\t\t\t\tsrc: url(\"/usr/share/fonts/dejavu/DejaVuSerif-BoldItalic.ttf\");\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tbody {\n\t\t\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif', serif;\n\t\t\t\t\t\t\t\t\t\tfont-size: ` + (fontSize ? fontSize : '8px') + `;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t.row {\n\t\t\t\t\t\t\t\t\t\tdisplay: -webkit-flex;\n\t\t\t\t\t\t\t\t\t\tdisplay: flex;\n\t\t\t\t\t\t\t\t\t\tflex-wrap: wrap;\n\t\t\t\t\t\t\t\t\t\t-webkit-flex-wrap: wrap;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t.page-break {\n\t\t\t\t\t\t\t\t\t\tpage-break-before: always !important;\n\t\t\t\t\t\t\t\t\t\tmargin-bottom: 1px;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t.cell {\n\t\t\t\t\t\t\t\t\t\tbox-sizing: border-box;\n\t\t\t\t\t\t\t\t\t\tpadding : 2px;\n\t\t\t\t\t\t\t\t\t\t-webkit-flex: 1;\n\t\t\t\t\t\t\t\t\t\tword-wrap: break-word;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t.cell-no-padding {\n\t\t\t\t\t\t\t\t\t\tbox-sizing: border-box;\n\t\t\t\t\t\t\t\t\t\t-webkit-flex: 1;\n\t\t\t\t\t\t\t\t\t\tword-wrap: break-word;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t.centered {\n\t\t\t\t\t\t\t\t\t\t-webkit-justify-content: center;\n\t\t\t\t\t\t\t\t\t\t-webkit-align-items: center;\n\t\t\t\t\t\t\t\t\t\tdisplay: -webkit-flex;\n\t\t\t\t\t\t\t\t\t\ttext-align: center;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t.centered-left {\n\t\t\t\t\t\t\t\t\t\t-webkit-align-items: center;\n\t\t\t\t\t\t\t\t\t\tdisplay: -webkit-flex;\n\t\t\t\t\t\t\t\t\t\t-webkit-justify-content: flex-start;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t.centered-right {\n\t\t\t\t\t\t\t\t\t\t-webkit-justify-content: flex-end;\n\t\t\t\t\t\t\t\t\t\t-webkit-align-items: center;\n\t\t\t\t\t\t\t\t\t\tdisplay: -webkit-flex;\n\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\t.box {\n\t\t\t\t\t\t\t\t\t\tborder: 1px solid black;\n\t\t\t\t\t\t\t\t\t\tmargin: -1px 0px 0px -1px;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t.boxNoBorder {\n\t\t\t\t\t\t\t\t\t\tmargin: -1px 0px 0px -1px;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tpre {\n\t\t\t\t\t\t\t\t\t\twhite-space: pre-wrap; /* css-3 */\n\t\t\t\t\t\t\t\t\t\twhite-space: -moz-pre-wrap; /* Mozilla, since 1999 */\n\t\t\t\t\t\t\t\t\t\twhite-space: -pre-wrap; /* Opera 4-6 */\n\t\t\t\t\t\t\t\t\t\twhite-space: -o-pre-wrap; /* Opera 7 */\n\t\t\t\t\t\t\t\t\t\tword-wrap: break-word; /* Internet Explorer 5.5+ */\n\t\t\t\t\t\t\t\t\t\tfont-size: 12px;\n\t\t\t\t\t\t\t\t\t\tfont-family: Open Sans; \n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t</style>\n\t\t\t\t\t\t\t</head>\n\t\t\t\t\t\t\t<body>\n\t\t\t\t\t\t` + html.replace(new RegExp('flex-basis:', 'g'), '-webkit-flex-basis:').replace(new RegExp('flex:', 'g'), '-webkit-flex:') + '</body>');\n\t\t\t\t\t\t\tlet tmpFileName = (pdfCnt++) + '-' + fileName.replace(new RegExp(/\\W/g), '');\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tlet interval = setInterval(() => {\n\t\t\t\t\t\t\t\tif (requestsArray.length === 0) {\n\n\t\t\t\t\t\t\t\t\tclearInterval(interval);\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\tpage.render(tmpFileName, {\n\t\t\t\t\t\t\t\t\t\tformat: 'pdf',\n\t\t\t\t\t\t\t\t\t\tquality: '100'\n\t\t\t\t\t\t\t\t\t}).then(() => {\n\t\t\t\t\t\t\t\t\t\tif (fs.existsSync(tmpFileName)) {\n\t\t\t\t\t\t\t\t\t\t\tfs.readFile(tmpFileName, (errRead, data) => {\n\t\t\t\t\t\t\t\t\t\t\t\tif (!errRead) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tfs.unlinkSync(tmpFileName);\n\t\t\t\t\t\t\t\t\t\t\t\t\tif (!upload) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tresolve('data:application/pdf;base64,' + Buffer.from(data).toString('base64'));\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tlet fileData = 'data:application/pdf;base64,' + Buffer.from(data).toString('base64');\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.callMethodInternal('uploadFileAndSave', fileName, fileData, (4 * Math.ceil(fileData.length / 3)), uploadFileOrder !== null ? uploadFileOrder : -1, uploadFileType, false, (err, res) => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\treject(err);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tresolve(res);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\t\t\t\treject('No file');\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\tsetTimeout(function() { phInstance.exit(); }, 0);\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\telse {\n\t\t\t\t\t\t\t\t\t\t\treject('No tmp file');\n\t\t\t\t\t\t\t\t\t\t\tconsole.log('No tmp file ', tmpFileName);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}, err => {\n\t\t\t\t\t\t\t\t\t\tconsole.log(err);\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}, 1000);\n\t\t\t\t\t\t}, error => {\n\t\t\t\t\t\t\treject(error);\n\t\t\t\t\t\t\tsetTimeout(function() { phInstance.exit(); }, 0);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tcompressBase64AndUploadPDF: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tid_file: {\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\tfilePath: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tfileContent: {\n\t\t\t\t\ttype: String\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: function(id_file: string, fileName: string, filePath: string, fileContent: string) {\n\t\t\t\treturn new Promise((resolve, reject) => {\n\n\t\t\t\t\tthis.callMethodInternal('getCCProcessURL').then(async resCC => {\n\t\t\t\t\t\tconst request = bent('https:' + resCC.url, 'POST', 'json', 200);\n\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tlet body = await request('', {\n\t\t\t\t\t\t\t\tmode: 'compress',\n\t\t\t\t\t\t\t\tinput: 'base64',\n\t\t\t\t\t\t\t\tfile: fileContent,\n\t\t\t\t\t\t\t\tfilename: fileName,\n\t\t\t\t\t\t\t\toutputformat: 'pdf',\n\t\t\t\t\t\t\t\twait: true,\n\t\t\t\t\t\t\t\toutput: {\n\t\t\t\t\t\t\t\t\t's3': {\n\t\t\t\t\t\t\t\t\t\t'accesskeyid': this.serverConfig['AWSACCESSKEYID'],\n\t\t\t\t\t\t\t\t\t\t'secretaccesskey': this.serverConfig['AWSSECRETACCESSKEY'],\n\t\t\t\t\t\t\t\t\t\t'region': this.serverConfig['AWSREGION'],\n\t\t\t\t\t\t\t\t\t\t'bucket': this.serverConfig['AWSBUCKET'],\n\t\t\t\t\t\t\t\t\t\t'path': filePath\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\tif (body.output.size) {\n\t\t\t\t\t\t\t\tFiles.updateOne({_id: id_file}, {$set: {size: body.output.size}});\n\n\t\t\t\t\t\t\t\tresolve(true);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\treject('Compressed file has no size, compress failed');\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\treject(error);\n\t\t\t\t\t\t}\n\t\t\t\t\t}, errCC => reject(errCC));\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tcompressPDFOnS3: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tid_file: {\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\tfilePath: {\n\t\t\t\t\ttype: String\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: function(id_file: string, fileName: string, filePath: string) {\n\t\t\t\treturn new Promise((resolve, reject) => {\n\n\t\t\t\t\tthis.callMethodInternal('getCCProcessURL').then(async resCC => {\n\t\t\t\t\t\tconst request = bent('https:' + resCC.url, 'POST', 'json', 200);\n\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tlet body = await request('', {\n\t\t\t\t\t\t\t\tmode: 'compress',\n\t\t\t\t\t\t\t\tinput: {\n\t\t\t\t\t\t\t\t\t's3': {\n\t\t\t\t\t\t\t\t\t\t'accesskeyid': this.serverConfig['AWSACCESSKEYID'],\n\t\t\t\t\t\t\t\t\t\t'secretaccesskey': this.serverConfig['AWSSECRETACCESSKEY'],\n\t\t\t\t\t\t\t\t\t\t'region': this.serverConfig['AWSREGION'],\n\t\t\t\t\t\t\t\t\t\t'bucket': this.serverConfig['AWSBUCKET']\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\tfile: filePath,\n\t\t\t\t\t\t\t\tfilename: fileName,\n\t\t\t\t\t\t\t\toutputformat: 'pdf',\n\t\t\t\t\t\t\t\twait: true,\n\t\t\t\t\t\t\t\toutput: {\n\t\t\t\t\t\t\t\t\t's3': {\n\t\t\t\t\t\t\t\t\t\t'accesskeyid': this.serverConfig['AWSACCESSKEYID'],\n\t\t\t\t\t\t\t\t\t\t'secretaccesskey': this.serverConfig['AWSSECRETACCESSKEY'],\n\t\t\t\t\t\t\t\t\t\t'region': this.serverConfig['AWSREGION'],\n\t\t\t\t\t\t\t\t\t\t'bucket': this.serverConfig['AWSBUCKET'],\n\t\t\t\t\t\t\t\t\t\t'path': filePath\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\tif (body.output.size) {\n\t\t\t\t\t\t\t\tFiles.updateOne({_id: id_file}, {$set: {size: body.output.size}});\n\n\t\t\t\t\t\t\t\tresolve(true);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\treject('Compressed file has no size, compress failed');\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\treject(error);\n\t\t\t\t\t\t}\n\t\t\t\t\t}, errCC => reject(errCC));\n\t\t\t\t});\n\t\t\t}\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: function(fileKeys: string[], fileName: string, fileType?: string) {\n\t\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\t\tthis.callMethodInternal('getSignedUrls', fileKeys, 900, (errSigneds, resSigneds) => {\n\t\t\t\t\t\tif (resSigneds && resSigneds.length) {\n\t\t\t\t\t\t\tlet promises = [];\n\n\t\t\t\t\t\t\tresSigneds.forEach(signedUrl => {\n\t\t\t\t\t\t\t\tpromises.push(this.callMethodInternal('getDataURIfromURL', signedUrl));\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tPromise.all(promises).then(async fileDatas => {\n\t\t\t\t\t\t\t\tconst mergedPdf = await PDFDocument.create();\n\n\t\t\t\t\t\t\t\tfor (let i = 0; i < fileDatas.length; i++) {\n\t\t\t\t\t\t\t\t\tlet fileData = fileDatas[i];\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);\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.size();\n\t\t\t\t\t\t\t\t\t\tif (imgDim.width > page.getWidth() || imgDim.height > page.getWidth()) {\n\t\t\t\t\t\t\t\t\t\t\timgDim = img.scaleToFit(page.getWidth(), page.getHeight());\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\timg.scaleToFit(page.getWidth() / 2, page.getHeight() / 2);\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.size();\n\t\t\t\t\t\t\t\t\t\tif (imgDim.width > page.getWidth() || imgDim.height > page.getWidth()) {\n\t\t\t\t\t\t\t\t\t\t\timgDim = img.scaleToFit(page.getWidth(), page.getHeight());\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\timg.scaleToFit(page.getWidth() / 2, page.getHeight() / 2);\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\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\n\t\t\t\t\t\t\t\tconst b64PDF = await mergedPdf.saveAsBase64({ dataUri: true });\n\n\t\t\t\t\t\t\t\tthis.callMethodInternal('uploadFileAndSave', fileName, b64PDF, (4 * Math.ceil(b64PDF.length / 3)), -1, fileType, false, (errUp, resUp) => {\n\t\t\t\t\t\t\t\t\tresolve(resUp);\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\telse {\n\t\t\t\t\t\t\tthis.callMethodInternal('insertErrorLog', 'PDF Merge - getSignedUrls', [\n\t\t\t\t\t\t\t\tfileKeys,\n\t\t\t\t\t\t\t\terrSigneds\n\t\t\t\t\t\t\t]);\n\t\t\t\t\t\t\treject(errSigneds);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tmergePDF: {\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: function(fileKeys: string[], fileName: string, fileType?: string) {\n\t\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\t\tlet mergeFileName = 'uploads/' + Date.now() + '-' + (pdfCnt++) + '-' + fileName;\n\n\t\t\t\t\tthis.callMethodInternal('createCloudConvertJob', fileKeys, ['merge', 'optimize'], mergeFileName, fileName).then(resCCJob => {\n\t\t\t\t\t\tif (resCCJob) {\n\t\t\t\t\t\t\tlet resFile: FileModel = {\n\t\t\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\t\t\t__v: 0,\n\t\t\t\t\t\t\t\tname: fileName,\n\t\t\t\t\t\t\t\tsize: resCCJob.data.tasks.filter(a => a.name === 'task-2')[0].result.files[0].size,\n\t\t\t\t\t\t\t\tkey: mergeFileName,\n\t\t\t\t\t\t\t\ttype: fileType ? fileType : '',\n\t\t\t\t\t\t\t\torder: -1\n\t\t\t\t\t\t\t};\n\t\n\t\t\t\t\t\t\tif (resFile.size) {\n\t\t\t\t\t\t\t\tthis.callMethodInternal('insertDocument', 'files', resFile, (errUpFile, resUpFile) => {\n\t\t\t\t\t\t\t\t\tif (resUpFile) {\n\t\t\t\t\t\t\t\t\t\tresFile.status = 'Uploaded';\n\t\t\t\t\t\t\t\t\t\tresolve(resFile);\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\treject(errUpFile);\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\telse {\n\t\t\t\t\t\t\t\treject('Merged file has no size, merge failed');\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}, (err) => {\n\t\t\t\t\t\tconsole.log('Create Cloud Convert Job Error', err);\n\t\t\t\t\t\treject(err);\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tmergePDFV1: {\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: function(fileKeys: string[], fileName: string, fileType?: string) {\n\t\t\t\treturn new Promise((resolve, reject) => {\n\n\t\t\t\t\tthis.callMethodInternal('getCCProcessURL').then(async resCC => {\n\t\t\t\t\t\t\n\t\t\t\t\t\tlet mergeFileName = 'uploads/' + Date.now() + '-' + (pdfCnt++) + '-' + fileName;\n\t\t\t\t\t\n\t\t\t\t\t\tconst request = bent('https:' + resCC.url, 'POST', 'json', 200);\n\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tlet body = await request('', {\n\t\t\t\t\t\t\t\tmode: 'combine',\n\t\t\t\t\t\t\t\tinput: {\n\t\t\t\t\t\t\t\t\ts3: {\n\t\t\t\t\t\t\t\t\t\t'accesskeyid': this.serverConfig['AWSACCESSKEYID'],\n\t\t\t\t\t\t\t\t\t\t'secretaccesskey': this.serverConfig['AWSSECRETACCESSKEY'],\n\t\t\t\t\t\t\t\t\t\t'region': this.serverConfig['AWSREGION'],\n\t\t\t\t\t\t\t\t\t\t'bucket': this.serverConfig['AWSBUCKET']\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\tfiles: fileKeys,\n\t\t\t\t\t\t\t\toutputformat: 'pdf',\n\t\t\t\t\t\t\t\twait: true,\n\t\t\t\t\t\t\t\toutput: {\n\t\t\t\t\t\t\t\t\t's3': {\n\t\t\t\t\t\t\t\t\t\t'accesskeyid': this.serverConfig['AWSACCESSKEYID'],\n\t\t\t\t\t\t\t\t\t\t'secretaccesskey': this.serverConfig['AWSSECRETACCESSKEY'],\n\t\t\t\t\t\t\t\t\t\t'region': this.serverConfig['AWSREGION'],\n\t\t\t\t\t\t\t\t\t\t'bucket': this.serverConfig['AWSBUCKET'],\n\t\t\t\t\t\t\t\t\t\t'path': mergeFileName\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\tconverteroptions: {\n\t\t\t\t\t\t\t\t\t'resize': '612x792',\n\t\t\t\t\t\t\t\t\t'resizemode': 'scale',\n\t\t\t\t\t\t\t\t\t'resizeenlarge': null,\n\t\t\t\t\t\t\t\t\t'grayscale': null,\n\t\t\t\t\t\t\t\t\t'auto_orient': null,\n\t\t\t\t\t\t\t\t\t'strip_metatags': false,\n\t\t\t\t\t\t\t\t\t'density': 72,\n\t\t\t\t\t\t\t\t\t'rotate': null,\n\t\t\t\t\t\t\t\t\t'command': null\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\tlet resFile: FileModel = {\n\t\t\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\t\t\t__v: 0,\n\t\t\t\t\t\t\t\tname: fileName,\n\t\t\t\t\t\t\t\tsize: body.output.size,\n\t\t\t\t\t\t\t\tkey: mergeFileName,\n\t\t\t\t\t\t\t\ttype: fileType ? fileType : '',\n\t\t\t\t\t\t\t\torder: -1\n\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\tif (body.output.size) {\n\t\t\t\t\t\t\t\tthis.callMethodInternal('insertDocument', 'files', resFile, (errUpFile, resUpFile) => {\n\t\t\t\t\t\t\t\t\tif (resUpFile) {\n\t\t\t\t\t\t\t\t\t\tresFile.status = 'Uploaded';\n\t\t\t\t\t\t\t\t\t\tthis.callMethodInternal('compressPDFOnS3', resFile._id, fileName, mergeFileName, (errCompress, resCompress) => {\n\t\t\t\t\t\t\t\t\t\t\tif (resCompress) {\n\t\t\t\t\t\t\t\t\t\t\t\tresolve(resFile);\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\t\t\treject(errCompress);\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\telse {\n\t\t\t\t\t\t\t\t\t\treject(errUpFile);\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\telse {\n\t\t\t\t\t\t\t\treject('Merged file has no size, merge failed');\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\treject(error);\n\t\t\t\t\t\t}\n\t\t\t\t\t}, errCC => reject(errCC));\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tmergePDFNoUpload: {\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: function(fileKeys: string[], fileName: string, fileType?: string) {\n\t\t\t\treturn new Promise((resolve, reject) => {\n\n\t\t\t\t\tthis.callMethodInternal('getCCProcessURL').then(async resCC => {\n\t\t\t\t\t\tlet mergeFileName = 'uploads/' + Date.now() + '-' + (pdfCnt++) + '-' + fileName;\n\t\t\t\t\t\t\n\t\t\t\t\t\tconst request = bent('https:' + resCC.url, 'POST', 'json', 200);\n\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tlet body = await request('', {\n\t\t\t\t\t\t\t\tmode: 'combine',\n\t\t\t\t\t\t\t\tinput: {\n\t\t\t\t\t\t\t\t\ts3: {\n\t\t\t\t\t\t\t\t\t\t'accesskeyid': this.serverConfig['AWSACCESSKEYID'],\n\t\t\t\t\t\t\t\t\t\t'secretaccesskey': this.serverConfig['AWSSECRETACCESSKEY'],\n\t\t\t\t\t\t\t\t\t\t'region': this.serverConfig['AWSREGION'],\n\t\t\t\t\t\t\t\t\t\t'bucket': this.serverConfig['AWSBUCKET']\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\tfiles: fileKeys,\n\t\t\t\t\t\t\t\toutputformat: 'pdf',\n\t\t\t\t\t\t\t\twait: true,\n\t\t\t\t\t\t\t\toutput: {\n\t\t\t\t\t\t\t\t\t's3': {\n\t\t\t\t\t\t\t\t\t\t'accesskeyid': this.serverConfig['AWSACCESSKEYID'],\n\t\t\t\t\t\t\t\t\t\t'secretaccesskey': this.serverConfig['AWSSECRETACCESSKEY'],\n\t\t\t\t\t\t\t\t\t\t'region': this.serverConfig['AWSREGION'],\n\t\t\t\t\t\t\t\t\t\t'bucket': this.serverConfig['AWSBUCKET'],\n\t\t\t\t\t\t\t\t\t\t'path': mergeFileName\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\tconverteroptions: {\n\t\t\t\t\t\t\t\t\t'resize': '612x792',\n\t\t\t\t\t\t\t\t\t'resizemode': 'scale',\n\t\t\t\t\t\t\t\t\t'resizeenlarge': null,\n\t\t\t\t\t\t\t\t\t'grayscale': null,\n\t\t\t\t\t\t\t\t\t'auto_orient': null,\n\t\t\t\t\t\t\t\t\t'strip_metatags': false,\n\t\t\t\t\t\t\t\t\t'density': 72,\n\t\t\t\t\t\t\t\t\t'rotate': null,\n\t\t\t\t\t\t\t\t\t'command': null\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\tlet resFile: FileModel = {\n\t\t\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\t\t\t__v: 0,\n\t\t\t\t\t\t\t\tname: fileName,\n\t\t\t\t\t\t\t\tsize: body.output.size,\n\t\t\t\t\t\t\t\tkey: mergeFileName,\n\t\t\t\t\t\t\t\ttype: fileType ? fileType : '',\n\t\t\t\t\t\t\t\torder: -1\n\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\tthis.callMethodInternal('insertDocument', 'files', resFile, (errUpFile, resUpFile) => {\n\t\t\t\t\t\t\t\tif (resUpFile) {\n\t\t\t\t\t\t\t\t\tresFile.status = 'Uploaded';\n\n\t\t\t\t\t\t\t\t\tresolve(resFile);\n\n\t\t\t\t\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\t\t\t\t\tthis.callMethodInternal('deleteFile', mergeFileName);\n\t\t\t\t\t\t\t\t\t}, 60000);\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\treject(errUpFile);\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\tcatch(error) {\n\t\t\t\t\t\t\treject(error);\n\t\t\t\t\t\t}\n\t\t\t\t\t}, errCC => reject(errCC));\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t});\n}"]}
|
|
1
|
+
{"version":3,"sources":["../../src/methods/pdf.ts"],"names":[],"mappings":"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","file":"pdf.js","sourcesContent":["let fs = require('fs');\nimport { FileModel } from '../models/file.model';\nimport { HelperThread, MethodManager } from '../managers/method.manager';\nimport * as bent from 'bent';\nimport SimpleSchema from 'simpl-schema';\nimport { Files } from '../collections/file.collection';\nimport { objectIdHexString } from '../managers/mongo.manager';\n\nimport { PDFDocument } from 'pdf-lib';\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: function(html, fileName, orientation = 'portrait', fontSize = '8px', upload = false, uploadFileOrder = -1, uploadFileType = '') {\n\t\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\t\tif (this._helperThread) {\n\t\t\t\t\t\t(<HelperThread>this._helperThread).sendJobToHelperThread('generatePDF', html, fileName, orientation, fontSize).then((res: string) => {\n\t\t\t\t\t\t\tif (!upload) {\n\t\t\t\t\t\t\t\tresolve(res);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tlet fileData = res;\n\t\t\t\t\t\t\t\tthis.callMethodInternal('uploadFileAndSave', fileName, fileData, (4 * Math.ceil(fileData.length / 3)), uploadFileOrder !== null ? uploadFileOrder : -1, uploadFileType, false, (err, res) => {\n\t\t\t\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\t\t\treject(err);\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\tresolve(res);\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}, err => {\n\t\t\t\t\t\t\treject(err);\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\tlet phantom = require('phantom');\n\t\t\t\t\t\tlet phInstance = null;\n\t\t\t\t\t\t\n\t\t\t\t\t\tphantom.create().then(instance => {\n\t\t\t\t\t\t\tphInstance = instance;\n\t\t\t\t\t\t\treturn instance.createPage();\n\t\t\t\t\t\t}).then(page => {\n\t\t\t\t\t\t\tlet requestsArray = [];\n\n\t\t\t\t\t\t\tpage.on('onResourceRequested', (requestData, networkRequest) => {\n\t\t\t\t\t\t\t\trequestsArray.push(requestData.id);\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\tpage.on('onResourceReceived', (response) => {\n\t\t\t\t\t\t\t\tif (response.stage === 'end') {\n\t\t\t\t\t\t\t\t\tlet index = requestsArray.indexOf(response.id);\n\t\t\t\t\t\t\t\t\trequestsArray.splice(index, 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\tpage.property('paperSize', {\n\t\t\t\t\t\t\t\tformat: 'letter',\n\t\t\t\t\t\t\t\tmargin: '1cm',\n\t\t\t\t\t\t\t\torientation: orientation,\n\t\t\t\t\t\t\t\tfooter: {\n\t\t\t\t\t\t\t\t\theight: '1cm',\n\t\t\t\t\t\t\t\t\tcontents: phInstance.callback((pageNum, numPages) => {\n\t\t\t\t\t\t\t\t\t\treturn '<span style=\\'float:right; font-size: 12px;\\'>Page ' + pageNum + ' of ' + numPages + '</span>';\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\tpage.property('content', `\n\t\t\t\t\t\t\t<head>\n\t\t\t\t\t\t\t\t<style>\n\t\t\t\t\t\t\t\t\t@font-face {\n\t\t\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif', serif;\n\t\t\t\t\t\t\t\t\t\tfont-style: normal;\n\t\t\t\t\t\t\t\t\t\tfont-weight: normal;\n\t\t\t\t\t\t\t\t\t\tsrc: url(\"/usr/share/fonts/dejavu/DejaVuSerif.ttf\");\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t@font-face {\n\t\t\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif', serif;\n\t\t\t\t\t\t\t\t\t\tfont-style: normal;\n\t\t\t\t\t\t\t\t\t\tfont-weight: bold;\n\t\t\t\t\t\t\t\t\t\tsrc: url(\"/usr/share/fonts/dejavu/DejaVuSerif-Bold.ttf\");\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t@font-face {\n\t\t\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif', serif;\n\t\t\t\t\t\t\t\t\t\tfont-style: italic;\n\t\t\t\t\t\t\t\t\t\tfont-weight: normal;\n\t\t\t\t\t\t\t\t\t\tsrc: url(\"/usr/share/fonts/dejavu/DejaVuSerif-Italic.ttf\");\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t@font-face {\n\t\t\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif', serif;\n\t\t\t\t\t\t\t\t\t\tfont-style: italic;\n\t\t\t\t\t\t\t\t\t\tfont-weight: bold;\n\t\t\t\t\t\t\t\t\t\tsrc: url(\"/usr/share/fonts/dejavu/DejaVuSerif-BoldItalic.ttf\");\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tbody {\n\t\t\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif', serif;\n\t\t\t\t\t\t\t\t\t\tfont-size: ` + (fontSize ? fontSize : '8px') + `;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t.row {\n\t\t\t\t\t\t\t\t\t\tdisplay: -webkit-flex;\n\t\t\t\t\t\t\t\t\t\tdisplay: flex;\n\t\t\t\t\t\t\t\t\t\tflex-wrap: wrap;\n\t\t\t\t\t\t\t\t\t\t-webkit-flex-wrap: wrap;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t.page-break {\n\t\t\t\t\t\t\t\t\t\tpage-break-before: always !important;\n\t\t\t\t\t\t\t\t\t\tmargin-bottom: 1px;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t.cell {\n\t\t\t\t\t\t\t\t\t\tbox-sizing: border-box;\n\t\t\t\t\t\t\t\t\t\tpadding : 2px;\n\t\t\t\t\t\t\t\t\t\t-webkit-flex: 1;\n\t\t\t\t\t\t\t\t\t\tword-wrap: break-word;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t.cell-no-padding {\n\t\t\t\t\t\t\t\t\t\tbox-sizing: border-box;\n\t\t\t\t\t\t\t\t\t\t-webkit-flex: 1;\n\t\t\t\t\t\t\t\t\t\tword-wrap: break-word;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t.centered {\n\t\t\t\t\t\t\t\t\t\t-webkit-justify-content: center;\n\t\t\t\t\t\t\t\t\t\t-webkit-align-items: center;\n\t\t\t\t\t\t\t\t\t\tdisplay: -webkit-flex;\n\t\t\t\t\t\t\t\t\t\ttext-align: center;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t.centered-left {\n\t\t\t\t\t\t\t\t\t\t-webkit-align-items: center;\n\t\t\t\t\t\t\t\t\t\tdisplay: -webkit-flex;\n\t\t\t\t\t\t\t\t\t\t-webkit-justify-content: flex-start;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t.centered-right {\n\t\t\t\t\t\t\t\t\t\t-webkit-justify-content: flex-end;\n\t\t\t\t\t\t\t\t\t\t-webkit-align-items: center;\n\t\t\t\t\t\t\t\t\t\tdisplay: -webkit-flex;\n\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\t.box {\n\t\t\t\t\t\t\t\t\t\tborder: 1px solid black;\n\t\t\t\t\t\t\t\t\t\tmargin: -1px 0px 0px -1px;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t.boxNoBorder {\n\t\t\t\t\t\t\t\t\t\tmargin: -1px 0px 0px -1px;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tpre {\n\t\t\t\t\t\t\t\t\t\twhite-space: pre-wrap; /* css-3 */\n\t\t\t\t\t\t\t\t\t\twhite-space: -moz-pre-wrap; /* Mozilla, since 1999 */\n\t\t\t\t\t\t\t\t\t\twhite-space: -pre-wrap; /* Opera 4-6 */\n\t\t\t\t\t\t\t\t\t\twhite-space: -o-pre-wrap; /* Opera 7 */\n\t\t\t\t\t\t\t\t\t\tword-wrap: break-word; /* Internet Explorer 5.5+ */\n\t\t\t\t\t\t\t\t\t\tfont-size: 12px;\n\t\t\t\t\t\t\t\t\t\tfont-family: Open Sans; \n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t</style>\n\t\t\t\t\t\t\t</head>\n\t\t\t\t\t\t\t<body>\n\t\t\t\t\t\t` + html.replace(new RegExp('flex-basis:', 'g'), '-webkit-flex-basis:').replace(new RegExp('flex:', 'g'), '-webkit-flex:') + '</body>');\n\t\t\t\t\t\t\tlet tmpFileName = (pdfCnt++) + '-' + fileName.replace(new RegExp(/\\W/g), '');\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tlet interval = setInterval(() => {\n\t\t\t\t\t\t\t\tif (requestsArray.length === 0) {\n\n\t\t\t\t\t\t\t\t\tclearInterval(interval);\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\tpage.render(tmpFileName, {\n\t\t\t\t\t\t\t\t\t\tformat: 'pdf',\n\t\t\t\t\t\t\t\t\t\tquality: '100'\n\t\t\t\t\t\t\t\t\t}).then(() => {\n\t\t\t\t\t\t\t\t\t\tif (fs.existsSync(tmpFileName)) {\n\t\t\t\t\t\t\t\t\t\t\tfs.readFile(tmpFileName, (errRead, data) => {\n\t\t\t\t\t\t\t\t\t\t\t\tif (!errRead) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tfs.unlinkSync(tmpFileName);\n\t\t\t\t\t\t\t\t\t\t\t\t\tif (!upload) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tresolve('data:application/pdf;base64,' + Buffer.from(data).toString('base64'));\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tlet fileData = 'data:application/pdf;base64,' + Buffer.from(data).toString('base64');\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.callMethodInternal('uploadFileAndSave', fileName, fileData, (4 * Math.ceil(fileData.length / 3)), uploadFileOrder !== null ? uploadFileOrder : -1, uploadFileType, false, (err, res) => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\treject(err);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tresolve(res);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\t\t\t\treject('No file');\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\tsetTimeout(function() { phInstance.exit(); }, 0);\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\telse {\n\t\t\t\t\t\t\t\t\t\t\treject('No tmp file');\n\t\t\t\t\t\t\t\t\t\t\tconsole.log('No tmp file ', tmpFileName);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}, err => {\n\t\t\t\t\t\t\t\t\t\tconsole.log(err);\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}, 1000);\n\t\t\t\t\t\t}, error => {\n\t\t\t\t\t\t\treject(error);\n\t\t\t\t\t\t\tsetTimeout(function() { phInstance.exit(); }, 0);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tcompressBase64AndUploadPDF: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tid_file: {\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\tfilePath: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tfileContent: {\n\t\t\t\t\ttype: String\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: function(id_file: string, fileName: string, filePath: string, fileContent: string) {\n\t\t\t\treturn new Promise((resolve, reject) => {\n\n\t\t\t\t\tthis.callMethodInternal('getCCProcessURL').then(async resCC => {\n\t\t\t\t\t\tconst request = bent('https:' + resCC.url, 'POST', 'json', 200);\n\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tlet body = await request('', {\n\t\t\t\t\t\t\t\tmode: 'compress',\n\t\t\t\t\t\t\t\tinput: 'base64',\n\t\t\t\t\t\t\t\tfile: fileContent,\n\t\t\t\t\t\t\t\tfilename: fileName,\n\t\t\t\t\t\t\t\toutputformat: 'pdf',\n\t\t\t\t\t\t\t\twait: true,\n\t\t\t\t\t\t\t\toutput: {\n\t\t\t\t\t\t\t\t\t's3': {\n\t\t\t\t\t\t\t\t\t\t'accesskeyid': this.serverConfig['AWSACCESSKEYID'],\n\t\t\t\t\t\t\t\t\t\t'secretaccesskey': this.serverConfig['AWSSECRETACCESSKEY'],\n\t\t\t\t\t\t\t\t\t\t'region': this.serverConfig['AWSREGION'],\n\t\t\t\t\t\t\t\t\t\t'bucket': this.serverConfig['AWSBUCKET'],\n\t\t\t\t\t\t\t\t\t\t'path': filePath\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\tif (body.output.size) {\n\t\t\t\t\t\t\t\tFiles.updateOne({_id: id_file}, {$set: {size: body.output.size}});\n\n\t\t\t\t\t\t\t\tresolve(true);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\treject('Compressed file has no size, compress failed');\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\treject(error);\n\t\t\t\t\t\t}\n\t\t\t\t\t}, errCC => reject(errCC));\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tcompressPDFOnS3: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tid_file: {\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\tfilePath: {\n\t\t\t\t\ttype: String\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: function(id_file: string, fileName: string, filePath: string) {\n\t\t\t\treturn new Promise((resolve, reject) => {\n\n\t\t\t\t\tthis.callMethodInternal('getCCProcessURL').then(async resCC => {\n\t\t\t\t\t\tconst request = bent('https:' + resCC.url, 'POST', 'json', 200);\n\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tlet body = await request('', {\n\t\t\t\t\t\t\t\tmode: 'compress',\n\t\t\t\t\t\t\t\tinput: {\n\t\t\t\t\t\t\t\t\t's3': {\n\t\t\t\t\t\t\t\t\t\t'accesskeyid': this.serverConfig['AWSACCESSKEYID'],\n\t\t\t\t\t\t\t\t\t\t'secretaccesskey': this.serverConfig['AWSSECRETACCESSKEY'],\n\t\t\t\t\t\t\t\t\t\t'region': this.serverConfig['AWSREGION'],\n\t\t\t\t\t\t\t\t\t\t'bucket': this.serverConfig['AWSBUCKET']\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\tfile: filePath,\n\t\t\t\t\t\t\t\tfilename: fileName,\n\t\t\t\t\t\t\t\toutputformat: 'pdf',\n\t\t\t\t\t\t\t\twait: true,\n\t\t\t\t\t\t\t\toutput: {\n\t\t\t\t\t\t\t\t\t's3': {\n\t\t\t\t\t\t\t\t\t\t'accesskeyid': this.serverConfig['AWSACCESSKEYID'],\n\t\t\t\t\t\t\t\t\t\t'secretaccesskey': this.serverConfig['AWSSECRETACCESSKEY'],\n\t\t\t\t\t\t\t\t\t\t'region': this.serverConfig['AWSREGION'],\n\t\t\t\t\t\t\t\t\t\t'bucket': this.serverConfig['AWSBUCKET'],\n\t\t\t\t\t\t\t\t\t\t'path': filePath\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\tif (body.output.size) {\n\t\t\t\t\t\t\t\tFiles.updateOne({_id: id_file}, {$set: {size: body.output.size}});\n\n\t\t\t\t\t\t\t\tresolve(true);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\treject('Compressed file has no size, compress failed');\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\treject(error);\n\t\t\t\t\t\t}\n\t\t\t\t\t}, errCC => reject(errCC));\n\t\t\t\t});\n\t\t\t}\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: function(fileKeys: string[], fileName: string, fileType?: string) {\n\t\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\t\tthis.callMethodInternal('getSignedUrls', fileKeys, 900, (errSigneds, resSigneds) => {\n\t\t\t\t\t\tif (resSigneds && resSigneds.length) {\n\t\t\t\t\t\t\tlet promises = [];\n\n\t\t\t\t\t\t\tresSigneds.forEach(signedUrl => {\n\t\t\t\t\t\t\t\tpromises.push(this.callMethodInternal('getDataURIfromURL', signedUrl));\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tPromise.all(promises).then(async fileDatas => {\n\t\t\t\t\t\t\t\tif (this._helperThread) {\n\t\t\t\t\t\t\t\t\t(<HelperThread>this._helperThread).sendJobToHelperThread('mergePDFResolve', fileDatas).then((res: string) => {\n\t\t\t\t\t\t\t\t\t\tthis.callMethodInternal('uploadFileAndSave', fileName, res, (4 * Math.ceil(res.length / 3)), -1, fileType, false, (errUp, resUp) => {\n\t\t\t\t\t\t\t\t\t\t\tresolve(resUp);\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t}, err => {\n\t\t\t\t\t\t\t\t\t\treject(err);\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\tconst mergedPdf = await PDFDocument.create();\n\n\t\t\t\t\t\t\t\t\tfor (let i = 0; i < fileDatas.length; i++) {\n\t\t\t\t\t\t\t\t\t\tlet fileData = fileDatas[i];\n\t\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\t\tconst pdf = await PDFDocument.load(fileData);\n\t\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\t\tcopiedPages.forEach((page) => {\n\t\t\t\t\t\t\t\t\t\t\t\tmergedPdf.addPage(page);\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\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\t\tconst pdf = await PDFDocument.create();\n\t\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\t\tconst page = pdf.addPage();\n\t\t\t\t\t\t\t\t\t\t\tlet imgDim = img.size();\n\t\t\t\t\t\t\t\t\t\t\tif (imgDim.width > page.getWidth() || imgDim.height > page.getWidth()) {\n\t\t\t\t\t\t\t\t\t\t\t\timgDim = img.scaleToFit(page.getWidth(), page.getHeight());\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\timg.scaleToFit(page.getWidth() / 2, page.getHeight() / 2);\n\t\t\t\t\t\t\t\t\t\t\tpage.drawImage(img, {\n\t\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\t\ty: page.getHeight() / 2 - imgDim.height / 2,\n\t\t\t\t\t\t\t\t\t\t\t\twidth: imgDim.width,\n\t\t\t\t\t\t\t\t\t\t\t\theight: imgDim.height,\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\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\t\tcopiedPages.forEach((page) => {\n\t\t\t\t\t\t\t\t\t\t\t\tmergedPdf.addPage(page);\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\telse if (fileData.startsWith('data:image/png;base64,iVBOR')) {\n\t\t\t\t\t\t\t\t\t\t\tconst pdf = await PDFDocument.create();\n\t\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\t\tconst page = pdf.addPage();\n\t\t\t\t\t\t\t\t\t\t\tlet imgDim = img.size();\n\t\t\t\t\t\t\t\t\t\t\tif (imgDim.width > page.getWidth() || imgDim.height > page.getWidth()) {\n\t\t\t\t\t\t\t\t\t\t\t\timgDim = img.scaleToFit(page.getWidth(), page.getHeight());\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\timg.scaleToFit(page.getWidth() / 2, page.getHeight() / 2);\n\t\t\t\t\t\t\t\t\t\t\tpage.drawImage(img, {\n\t\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\t\ty: page.getHeight() / 2 - imgDim.height / 2,\n\t\t\t\t\t\t\t\t\t\t\t\twidth: imgDim.width,\n\t\t\t\t\t\t\t\t\t\t\t\theight: imgDim.height,\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\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\t\tcopiedPages.forEach((page) => {\n\t\t\t\t\t\t\t\t\t\t\t\tmergedPdf.addPage(page);\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\t\n\t\t\t\t\t\t\t\t\t\telse {\n\t\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\t}\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tconst b64PDF = await mergedPdf.saveAsBase64({ dataUri: true });\n\n\t\t\t\t\t\t\t\t\tthis.callMethodInternal('uploadFileAndSave', fileName, b64PDF, (4 * Math.ceil(b64PDF.length / 3)), -1, fileType, false, (errUp, resUp) => {\n\t\t\t\t\t\t\t\t\t\tresolve(resUp);\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\telse {\n\t\t\t\t\t\t\tthis.callMethodInternal('insertErrorLog', 'PDF Merge - getSignedUrls', [\n\t\t\t\t\t\t\t\tfileKeys,\n\t\t\t\t\t\t\t\terrSigneds\n\t\t\t\t\t\t\t]);\n\t\t\t\t\t\t\treject(errSigneds);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tmergePDF: {\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: function(fileKeys: string[], fileName: string, fileType?: string) {\n\t\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\t\tlet mergeFileName = 'uploads/' + Date.now() + '-' + (pdfCnt++) + '-' + fileName;\n\n\t\t\t\t\tthis.callMethodInternal('createCloudConvertJob', fileKeys, ['merge', 'optimize'], mergeFileName, fileName).then(resCCJob => {\n\t\t\t\t\t\tif (resCCJob) {\n\t\t\t\t\t\t\tlet resFile: FileModel = {\n\t\t\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\t\t\t__v: 0,\n\t\t\t\t\t\t\t\tname: fileName,\n\t\t\t\t\t\t\t\tsize: resCCJob.data.tasks.filter(a => a.name === 'task-2')[0].result.files[0].size,\n\t\t\t\t\t\t\t\tkey: mergeFileName,\n\t\t\t\t\t\t\t\ttype: fileType ? fileType : '',\n\t\t\t\t\t\t\t\torder: -1\n\t\t\t\t\t\t\t};\n\t\n\t\t\t\t\t\t\tif (resFile.size) {\n\t\t\t\t\t\t\t\tthis.callMethodInternal('insertDocument', 'files', resFile, (errUpFile, resUpFile) => {\n\t\t\t\t\t\t\t\t\tif (resUpFile) {\n\t\t\t\t\t\t\t\t\t\tresFile.status = 'Uploaded';\n\t\t\t\t\t\t\t\t\t\tresolve(resFile);\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\treject(errUpFile);\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\telse {\n\t\t\t\t\t\t\t\treject('Merged file has no size, merge failed');\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}, (err) => {\n\t\t\t\t\t\tconsole.log('Create Cloud Convert Job Error', err);\n\t\t\t\t\t\treject(err);\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tmergePDFV1: {\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: function(fileKeys: string[], fileName: string, fileType?: string) {\n\t\t\t\treturn new Promise((resolve, reject) => {\n\n\t\t\t\t\tthis.callMethodInternal('getCCProcessURL').then(async resCC => {\n\t\t\t\t\t\t\n\t\t\t\t\t\tlet mergeFileName = 'uploads/' + Date.now() + '-' + (pdfCnt++) + '-' + fileName;\n\t\t\t\t\t\n\t\t\t\t\t\tconst request = bent('https:' + resCC.url, 'POST', 'json', 200);\n\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tlet body = await request('', {\n\t\t\t\t\t\t\t\tmode: 'combine',\n\t\t\t\t\t\t\t\tinput: {\n\t\t\t\t\t\t\t\t\ts3: {\n\t\t\t\t\t\t\t\t\t\t'accesskeyid': this.serverConfig['AWSACCESSKEYID'],\n\t\t\t\t\t\t\t\t\t\t'secretaccesskey': this.serverConfig['AWSSECRETACCESSKEY'],\n\t\t\t\t\t\t\t\t\t\t'region': this.serverConfig['AWSREGION'],\n\t\t\t\t\t\t\t\t\t\t'bucket': this.serverConfig['AWSBUCKET']\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\tfiles: fileKeys,\n\t\t\t\t\t\t\t\toutputformat: 'pdf',\n\t\t\t\t\t\t\t\twait: true,\n\t\t\t\t\t\t\t\toutput: {\n\t\t\t\t\t\t\t\t\t's3': {\n\t\t\t\t\t\t\t\t\t\t'accesskeyid': this.serverConfig['AWSACCESSKEYID'],\n\t\t\t\t\t\t\t\t\t\t'secretaccesskey': this.serverConfig['AWSSECRETACCESSKEY'],\n\t\t\t\t\t\t\t\t\t\t'region': this.serverConfig['AWSREGION'],\n\t\t\t\t\t\t\t\t\t\t'bucket': this.serverConfig['AWSBUCKET'],\n\t\t\t\t\t\t\t\t\t\t'path': mergeFileName\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\tconverteroptions: {\n\t\t\t\t\t\t\t\t\t'resize': '612x792',\n\t\t\t\t\t\t\t\t\t'resizemode': 'scale',\n\t\t\t\t\t\t\t\t\t'resizeenlarge': null,\n\t\t\t\t\t\t\t\t\t'grayscale': null,\n\t\t\t\t\t\t\t\t\t'auto_orient': null,\n\t\t\t\t\t\t\t\t\t'strip_metatags': false,\n\t\t\t\t\t\t\t\t\t'density': 72,\n\t\t\t\t\t\t\t\t\t'rotate': null,\n\t\t\t\t\t\t\t\t\t'command': null\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\tlet resFile: FileModel = {\n\t\t\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\t\t\t__v: 0,\n\t\t\t\t\t\t\t\tname: fileName,\n\t\t\t\t\t\t\t\tsize: body.output.size,\n\t\t\t\t\t\t\t\tkey: mergeFileName,\n\t\t\t\t\t\t\t\ttype: fileType ? fileType : '',\n\t\t\t\t\t\t\t\torder: -1\n\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\tif (body.output.size) {\n\t\t\t\t\t\t\t\tthis.callMethodInternal('insertDocument', 'files', resFile, (errUpFile, resUpFile) => {\n\t\t\t\t\t\t\t\t\tif (resUpFile) {\n\t\t\t\t\t\t\t\t\t\tresFile.status = 'Uploaded';\n\t\t\t\t\t\t\t\t\t\tthis.callMethodInternal('compressPDFOnS3', resFile._id, fileName, mergeFileName, (errCompress, resCompress) => {\n\t\t\t\t\t\t\t\t\t\t\tif (resCompress) {\n\t\t\t\t\t\t\t\t\t\t\t\tresolve(resFile);\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\t\t\treject(errCompress);\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\telse {\n\t\t\t\t\t\t\t\t\t\treject(errUpFile);\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\telse {\n\t\t\t\t\t\t\t\treject('Merged file has no size, merge failed');\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\treject(error);\n\t\t\t\t\t\t}\n\t\t\t\t\t}, errCC => reject(errCC));\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tmergePDFNoUpload: {\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: function(fileKeys: string[], fileName: string, fileType?: string) {\n\t\t\t\treturn new Promise((resolve, reject) => {\n\n\t\t\t\t\tthis.callMethodInternal('getCCProcessURL').then(async resCC => {\n\t\t\t\t\t\tlet mergeFileName = 'uploads/' + Date.now() + '-' + (pdfCnt++) + '-' + fileName;\n\t\t\t\t\t\t\n\t\t\t\t\t\tconst request = bent('https:' + resCC.url, 'POST', 'json', 200);\n\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tlet body = await request('', {\n\t\t\t\t\t\t\t\tmode: 'combine',\n\t\t\t\t\t\t\t\tinput: {\n\t\t\t\t\t\t\t\t\ts3: {\n\t\t\t\t\t\t\t\t\t\t'accesskeyid': this.serverConfig['AWSACCESSKEYID'],\n\t\t\t\t\t\t\t\t\t\t'secretaccesskey': this.serverConfig['AWSSECRETACCESSKEY'],\n\t\t\t\t\t\t\t\t\t\t'region': this.serverConfig['AWSREGION'],\n\t\t\t\t\t\t\t\t\t\t'bucket': this.serverConfig['AWSBUCKET']\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\tfiles: fileKeys,\n\t\t\t\t\t\t\t\toutputformat: 'pdf',\n\t\t\t\t\t\t\t\twait: true,\n\t\t\t\t\t\t\t\toutput: {\n\t\t\t\t\t\t\t\t\t's3': {\n\t\t\t\t\t\t\t\t\t\t'accesskeyid': this.serverConfig['AWSACCESSKEYID'],\n\t\t\t\t\t\t\t\t\t\t'secretaccesskey': this.serverConfig['AWSSECRETACCESSKEY'],\n\t\t\t\t\t\t\t\t\t\t'region': this.serverConfig['AWSREGION'],\n\t\t\t\t\t\t\t\t\t\t'bucket': this.serverConfig['AWSBUCKET'],\n\t\t\t\t\t\t\t\t\t\t'path': mergeFileName\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\tconverteroptions: {\n\t\t\t\t\t\t\t\t\t'resize': '612x792',\n\t\t\t\t\t\t\t\t\t'resizemode': 'scale',\n\t\t\t\t\t\t\t\t\t'resizeenlarge': null,\n\t\t\t\t\t\t\t\t\t'grayscale': null,\n\t\t\t\t\t\t\t\t\t'auto_orient': null,\n\t\t\t\t\t\t\t\t\t'strip_metatags': false,\n\t\t\t\t\t\t\t\t\t'density': 72,\n\t\t\t\t\t\t\t\t\t'rotate': null,\n\t\t\t\t\t\t\t\t\t'command': null\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\tlet resFile: FileModel = {\n\t\t\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\t\t\t__v: 0,\n\t\t\t\t\t\t\t\tname: fileName,\n\t\t\t\t\t\t\t\tsize: body.output.size,\n\t\t\t\t\t\t\t\tkey: mergeFileName,\n\t\t\t\t\t\t\t\ttype: fileType ? fileType : '',\n\t\t\t\t\t\t\t\torder: -1\n\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\tthis.callMethodInternal('insertDocument', 'files', resFile, (errUpFile, resUpFile) => {\n\t\t\t\t\t\t\t\tif (resUpFile) {\n\t\t\t\t\t\t\t\t\tresFile.status = 'Uploaded';\n\n\t\t\t\t\t\t\t\t\tresolve(resFile);\n\n\t\t\t\t\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\t\t\t\t\tthis.callMethodInternal('deleteFile', mergeFileName);\n\t\t\t\t\t\t\t\t\t}, 60000);\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\treject(errUpFile);\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\tcatch(error) {\n\t\t\t\t\t\t\treject(error);\n\t\t\t\t\t\t}\n\t\t\t\t\t}, errCC => reject(errCC));\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t});\n}"]}
|
|
@@ -38,15 +38,14 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
38
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
39
|
var worker_threads_1 = require("worker_threads");
|
|
40
40
|
var fs = require('fs');
|
|
41
|
+
var pdf_lib_1 = require("pdf-lib");
|
|
41
42
|
var jobQueue = [];
|
|
42
43
|
var runningQueue = false;
|
|
43
44
|
var pdfCnt = 0;
|
|
44
|
-
console.log('Helper thread started'
|
|
45
|
-
// if (!isMainThread) {
|
|
45
|
+
console.log('Helper thread started');
|
|
46
46
|
worker_threads_1.parentPort.on('message', function (msg) {
|
|
47
47
|
jobQueue.splice(0, 0, msg);
|
|
48
48
|
});
|
|
49
|
-
// }
|
|
50
49
|
setInterval(function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
51
50
|
var job_1;
|
|
52
51
|
return __generator(this, function (_a) {
|
|
@@ -66,12 +65,24 @@ setInterval(function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
|
66
65
|
runningQueue = false;
|
|
67
66
|
});
|
|
68
67
|
}
|
|
68
|
+
else if (job_1.method === 'mergePDFResolve') {
|
|
69
|
+
mergePDFResolve(job_1.params).then(function (res) {
|
|
70
|
+
job_1.result = res;
|
|
71
|
+
job_1.error = false;
|
|
72
|
+
worker_threads_1.parentPort.postMessage(job_1);
|
|
73
|
+
runningQueue = false;
|
|
74
|
+
}, function (err) {
|
|
75
|
+
job_1.result = err;
|
|
76
|
+
job_1.error = true;
|
|
77
|
+
worker_threads_1.parentPort.postMessage(job_1);
|
|
78
|
+
runningQueue = false;
|
|
79
|
+
});
|
|
80
|
+
}
|
|
69
81
|
}
|
|
70
82
|
return [2 /*return*/];
|
|
71
83
|
});
|
|
72
84
|
}); }, 1);
|
|
73
85
|
function generatePDF(data) {
|
|
74
|
-
console.log('Running generate PDF');
|
|
75
86
|
var html = data[0];
|
|
76
87
|
var fileName = data[1];
|
|
77
88
|
var orientation = data[2] || 'portrait';
|
|
@@ -141,5 +152,100 @@ function generatePDF(data) {
|
|
|
141
152
|
});
|
|
142
153
|
});
|
|
143
154
|
}
|
|
155
|
+
function mergePDFResolve(data) {
|
|
156
|
+
var _this = this;
|
|
157
|
+
var fileDatas = data[0];
|
|
158
|
+
return new Promise(function (resolve, reject) { return __awaiter(_this, void 0, void 0, function () {
|
|
159
|
+
var mergedPdf, i, fileData, pdf, copiedPages, pdf, img, page, imgDim, copiedPages, pdf, img, page, imgDim, copiedPages, b64PDF;
|
|
160
|
+
return __generator(this, function (_a) {
|
|
161
|
+
switch (_a.label) {
|
|
162
|
+
case 0: return [4 /*yield*/, pdf_lib_1.PDFDocument.create()];
|
|
163
|
+
case 1:
|
|
164
|
+
mergedPdf = _a.sent();
|
|
165
|
+
i = 0;
|
|
166
|
+
_a.label = 2;
|
|
167
|
+
case 2:
|
|
168
|
+
if (!(i < fileDatas.length)) return [3 /*break*/, 15];
|
|
169
|
+
fileData = fileDatas[i];
|
|
170
|
+
if (!fileData.startsWith('data:application/pdf;base64,')) return [3 /*break*/, 5];
|
|
171
|
+
return [4 /*yield*/, pdf_lib_1.PDFDocument.load(fileData)];
|
|
172
|
+
case 3:
|
|
173
|
+
pdf = _a.sent();
|
|
174
|
+
return [4 /*yield*/, mergedPdf.copyPages(pdf, pdf.getPageIndices())];
|
|
175
|
+
case 4:
|
|
176
|
+
copiedPages = _a.sent();
|
|
177
|
+
copiedPages.forEach(function (page) {
|
|
178
|
+
mergedPdf.addPage(page);
|
|
179
|
+
});
|
|
180
|
+
return [3 /*break*/, 14];
|
|
181
|
+
case 5:
|
|
182
|
+
if (!(fileData.startsWith('data:image/jpeg;base64,/9j/') || fileData.startsWith('data:image/png;base64,/9j/'))) return [3 /*break*/, 9];
|
|
183
|
+
return [4 /*yield*/, pdf_lib_1.PDFDocument.create()];
|
|
184
|
+
case 6:
|
|
185
|
+
pdf = _a.sent();
|
|
186
|
+
return [4 /*yield*/, pdf.embedJpg(fileData)];
|
|
187
|
+
case 7:
|
|
188
|
+
img = _a.sent();
|
|
189
|
+
page = pdf.addPage();
|
|
190
|
+
imgDim = img.size();
|
|
191
|
+
if (imgDim.width > page.getWidth() || imgDim.height > page.getWidth()) {
|
|
192
|
+
imgDim = img.scaleToFit(page.getWidth(), page.getHeight());
|
|
193
|
+
}
|
|
194
|
+
img.scaleToFit(page.getWidth() / 2, page.getHeight() / 2);
|
|
195
|
+
page.drawImage(img, {
|
|
196
|
+
x: page.getWidth() / 2 - imgDim.width / 2,
|
|
197
|
+
y: page.getHeight() / 2 - imgDim.height / 2,
|
|
198
|
+
width: imgDim.width,
|
|
199
|
+
height: imgDim.height,
|
|
200
|
+
});
|
|
201
|
+
return [4 /*yield*/, mergedPdf.copyPages(pdf, pdf.getPageIndices())];
|
|
202
|
+
case 8:
|
|
203
|
+
copiedPages = _a.sent();
|
|
204
|
+
copiedPages.forEach(function (page) {
|
|
205
|
+
mergedPdf.addPage(page);
|
|
206
|
+
});
|
|
207
|
+
return [3 /*break*/, 14];
|
|
208
|
+
case 9:
|
|
209
|
+
if (!fileData.startsWith('data:image/png;base64,iVBOR')) return [3 /*break*/, 13];
|
|
210
|
+
return [4 /*yield*/, pdf_lib_1.PDFDocument.create()];
|
|
211
|
+
case 10:
|
|
212
|
+
pdf = _a.sent();
|
|
213
|
+
return [4 /*yield*/, pdf.embedPng(fileData)];
|
|
214
|
+
case 11:
|
|
215
|
+
img = _a.sent();
|
|
216
|
+
page = pdf.addPage();
|
|
217
|
+
imgDim = img.size();
|
|
218
|
+
if (imgDim.width > page.getWidth() || imgDim.height > page.getWidth()) {
|
|
219
|
+
imgDim = img.scaleToFit(page.getWidth(), page.getHeight());
|
|
220
|
+
}
|
|
221
|
+
img.scaleToFit(page.getWidth() / 2, page.getHeight() / 2);
|
|
222
|
+
page.drawImage(img, {
|
|
223
|
+
x: page.getWidth() / 2 - imgDim.width / 2,
|
|
224
|
+
y: page.getHeight() / 2 - imgDim.height / 2,
|
|
225
|
+
width: imgDim.width,
|
|
226
|
+
height: imgDim.height,
|
|
227
|
+
});
|
|
228
|
+
return [4 /*yield*/, mergedPdf.copyPages(pdf, pdf.getPageIndices())];
|
|
229
|
+
case 12:
|
|
230
|
+
copiedPages = _a.sent();
|
|
231
|
+
copiedPages.forEach(function (page) {
|
|
232
|
+
mergedPdf.addPage(page);
|
|
233
|
+
});
|
|
234
|
+
return [3 /*break*/, 14];
|
|
235
|
+
case 13:
|
|
236
|
+
console.log('Error - unsupported!!', fileData.slice(0, 60));
|
|
237
|
+
_a.label = 14;
|
|
238
|
+
case 14:
|
|
239
|
+
i++;
|
|
240
|
+
return [3 /*break*/, 2];
|
|
241
|
+
case 15: return [4 /*yield*/, mergedPdf.saveAsBase64({ dataUri: true })];
|
|
242
|
+
case 16:
|
|
243
|
+
b64PDF = _a.sent();
|
|
244
|
+
resolve(b64PDF);
|
|
245
|
+
return [2 /*return*/];
|
|
246
|
+
}
|
|
247
|
+
});
|
|
248
|
+
}); });
|
|
249
|
+
}
|
|
144
250
|
|
|
145
251
|
//# sourceMappingURL=helper_thread.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/multi_threaded/helper_thread.ts"],"names":[],"mappings":"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","file":"helper_thread.js","sourcesContent":["import { parentPort, isMainThread } from 'worker_threads';\nlet fs = require('fs');\nimport { HelperThreadMessage } from '../managers/method.manager';\n\nlet jobQueue: HelperThreadMessage[] = [];\nlet runningQueue = false;\n\nlet pdfCnt = 0;\n\nconsole.log('Helper thread started', isMainThread);\n\n// if (!isMainThread) {\n parentPort.on('message', (msg: HelperThreadMessage) => {\n jobQueue.splice(0, 0, msg);\n });\n// }\n\nsetInterval(async () => {\n if (!runningQueue && jobQueue.length) {\n runningQueue = true;\n\n let job = jobQueue.pop();\n if (job.method === 'generatePDF') {\n generatePDF(job.params).then(res => {\n job.result = res;\n job.error = false;\n parentPort.postMessage(job);\n runningQueue = false;\n }, err => {\n job.result = err;\n job.error = true;\n parentPort.postMessage(job);\n runningQueue = false;\n });\n }\n }\n}, 1);\n\nfunction generatePDF(data: any[]) {\n console.log('Running generate PDF');\n \n let html = data[0];\n let fileName = data[1];\n let orientation = data[2] || 'portrait';\n let fontSize = data[3] || '8px';\n\n return new Promise((resolve, reject) => {\n let phantom = require('phantom');\n let phInstance = null;\n \n phantom.create().then(instance => {\n phInstance = instance;\n return instance.createPage();\n }).then(page => {\n let requestsArray = [];\n\n page.on('onResourceRequested', (requestData, networkRequest) => {\n requestsArray.push(requestData.id);\n });\n\n page.on('onResourceReceived', (response) => {\n if (response.stage === 'end') {\n let index = requestsArray.indexOf(response.id);\n requestsArray.splice(index, 1);\n }\n });\n\n page.property('paperSize', {\n format: 'letter',\n margin: '1cm',\n orientation: orientation,\n footer: {\n height: '1cm',\n contents: phInstance.callback((pageNum, numPages) => {\n return '<span style=\\'float:right; font-size: 12px;\\'>Page ' + pageNum + ' of ' + numPages + '</span>';\n })\n }\n });\n page.property('content', `\n <head>\n <style>\n @font-face {\n font-family: 'Dejavu Serif', serif;\n font-style: normal;\n font-weight: normal;\n src: url(\"/usr/share/fonts/dejavu/DejaVuSerif.ttf\");\n }\n\n @font-face {\n font-family: 'Dejavu Serif', serif;\n font-style: normal;\n font-weight: bold;\n src: url(\"/usr/share/fonts/dejavu/DejaVuSerif-Bold.ttf\");\n }\n\n @font-face {\n font-family: 'Dejavu Serif', serif;\n font-style: italic;\n font-weight: normal;\n src: url(\"/usr/share/fonts/dejavu/DejaVuSerif-Italic.ttf\");\n }\n\n @font-face {\n font-family: 'Dejavu Serif', serif;\n font-style: italic;\n font-weight: bold;\n src: url(\"/usr/share/fonts/dejavu/DejaVuSerif-BoldItalic.ttf\");\n }\n\n body {\n font-family: 'Dejavu Serif', serif;\n font-size: ` + (fontSize ? fontSize : '8px') + `;\n }\n\n .row {\n display: -webkit-flex;\n display: flex;\n flex-wrap: wrap;\n -webkit-flex-wrap: wrap;\n }\n \n .page-break {\n page-break-before: always !important;\n margin-bottom: 1px;\n }\n\n .cell {\n box-sizing: border-box;\n padding : 2px;\n -webkit-flex: 1;\n word-wrap: break-word;\n }\n\n .cell-no-padding {\n box-sizing: border-box;\n -webkit-flex: 1;\n word-wrap: break-word;\n }\n\n .centered {\n -webkit-justify-content: center;\n -webkit-align-items: center;\n display: -webkit-flex;\n text-align: center;\n }\n\n .centered-left {\n -webkit-align-items: center;\n display: -webkit-flex;\n -webkit-justify-content: flex-start;\n }\n\n .centered-right {\n -webkit-justify-content: flex-end;\n -webkit-align-items: center;\n display: -webkit-flex;\n }\n \n .box {\n border: 1px solid black;\n margin: -1px 0px 0px -1px;\n }\n\n .boxNoBorder {\n margin: -1px 0px 0px -1px;\n }\n\n pre {\n white-space: pre-wrap; /* css-3 */\n white-space: -moz-pre-wrap; /* Mozilla, since 1999 */\n white-space: -pre-wrap; /* Opera 4-6 */\n white-space: -o-pre-wrap; /* Opera 7 */\n word-wrap: break-word; /* Internet Explorer 5.5+ */\n font-size: 12px;\n font-family: Open Sans; \n }\n </style>\n </head>\n <body>\n ` + html.replace(new RegExp('flex-basis:', 'g'), '-webkit-flex-basis:').replace(new RegExp('flex:', 'g'), '-webkit-flex:') + '</body>');\n let tmpFileName = (pdfCnt++) + '-' + fileName.replace(new RegExp(/\\W/g), '');\n \n let interval = setInterval(() => {\n if (requestsArray.length === 0) {\n clearInterval(interval);\n \n page.render(tmpFileName, {\n format: 'pdf',\n quality: '100'\n }).then(() => {\n if (fs.existsSync(tmpFileName)) {\n fs.readFile(tmpFileName, (errRead, data) => {\n if (!errRead) {\n fs.unlinkSync(tmpFileName);\n resolve('data:application/pdf;base64,' + Buffer.from(data).toString('base64'));\n }\n else {\n reject('No file');\n }\n \n setTimeout(function() { phInstance.exit(); }, 0);\n });\n }\n else {\n reject('No tmp file');\n console.log('No tmp file ', tmpFileName);\n }\n }, err => {\n console.log(err);\n setTimeout(function() { phInstance.exit(); }, 0);\n });\n }\n }, 1000);\n }, error => {\n reject(error);\n setTimeout(function() { phInstance.exit(); }, 0);\n });\n });\n}"]}
|
|
1
|
+
{"version":3,"sources":["../../src/multi_threaded/helper_thread.ts"],"names":[],"mappings":"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","file":"helper_thread.js","sourcesContent":["import { parentPort } from 'worker_threads';\nlet fs = require('fs');\nimport { HelperThreadMessage } from '../managers/method.manager';\nimport { PDFDocument } from 'pdf-lib';\n\nlet jobQueue: HelperThreadMessage[] = [];\nlet runningQueue = false;\n\nlet pdfCnt = 0;\n\nconsole.log('Helper thread started');\n\nparentPort.on('message', (msg: HelperThreadMessage) => {\n jobQueue.splice(0, 0, msg);\n});\n\nsetInterval(async () => {\n if (!runningQueue && jobQueue.length) {\n runningQueue = true;\n\n let job = jobQueue.pop();\n if (job.method === 'generatePDF') {\n generatePDF(job.params).then(res => {\n job.result = res;\n job.error = false;\n parentPort.postMessage(job);\n runningQueue = false;\n }, err => {\n job.result = err;\n job.error = true;\n parentPort.postMessage(job);\n runningQueue = false;\n });\n }\n else if (job.method === 'mergePDFResolve') {\n mergePDFResolve(job.params).then(res => {\n job.result = res;\n job.error = false;\n parentPort.postMessage(job);\n runningQueue = false;\n }, err => {\n job.result = err;\n job.error = true;\n parentPort.postMessage(job);\n runningQueue = false;\n });\n }\n }\n}, 1);\n\nfunction generatePDF(data: any[]) {\n let html = data[0];\n let fileName = data[1];\n let orientation = data[2] || 'portrait';\n let fontSize = data[3] || '8px';\n\n return new Promise((resolve, reject) => {\n let phantom = require('phantom');\n let phInstance = null;\n \n phantom.create().then(instance => {\n phInstance = instance;\n return instance.createPage();\n }).then(page => {\n let requestsArray = [];\n\n page.on('onResourceRequested', (requestData, networkRequest) => {\n requestsArray.push(requestData.id);\n });\n\n page.on('onResourceReceived', (response) => {\n if (response.stage === 'end') {\n let index = requestsArray.indexOf(response.id);\n requestsArray.splice(index, 1);\n }\n });\n\n page.property('paperSize', {\n format: 'letter',\n margin: '1cm',\n orientation: orientation,\n footer: {\n height: '1cm',\n contents: phInstance.callback((pageNum, numPages) => {\n return '<span style=\\'float:right; font-size: 12px;\\'>Page ' + pageNum + ' of ' + numPages + '</span>';\n })\n }\n });\n page.property('content', `\n <head>\n <style>\n @font-face {\n font-family: 'Dejavu Serif', serif;\n font-style: normal;\n font-weight: normal;\n src: url(\"/usr/share/fonts/dejavu/DejaVuSerif.ttf\");\n }\n\n @font-face {\n font-family: 'Dejavu Serif', serif;\n font-style: normal;\n font-weight: bold;\n src: url(\"/usr/share/fonts/dejavu/DejaVuSerif-Bold.ttf\");\n }\n\n @font-face {\n font-family: 'Dejavu Serif', serif;\n font-style: italic;\n font-weight: normal;\n src: url(\"/usr/share/fonts/dejavu/DejaVuSerif-Italic.ttf\");\n }\n\n @font-face {\n font-family: 'Dejavu Serif', serif;\n font-style: italic;\n font-weight: bold;\n src: url(\"/usr/share/fonts/dejavu/DejaVuSerif-BoldItalic.ttf\");\n }\n\n body {\n font-family: 'Dejavu Serif', serif;\n font-size: ` + (fontSize ? fontSize : '8px') + `;\n }\n\n .row {\n display: -webkit-flex;\n display: flex;\n flex-wrap: wrap;\n -webkit-flex-wrap: wrap;\n }\n \n .page-break {\n page-break-before: always !important;\n margin-bottom: 1px;\n }\n\n .cell {\n box-sizing: border-box;\n padding : 2px;\n -webkit-flex: 1;\n word-wrap: break-word;\n }\n\n .cell-no-padding {\n box-sizing: border-box;\n -webkit-flex: 1;\n word-wrap: break-word;\n }\n\n .centered {\n -webkit-justify-content: center;\n -webkit-align-items: center;\n display: -webkit-flex;\n text-align: center;\n }\n\n .centered-left {\n -webkit-align-items: center;\n display: -webkit-flex;\n -webkit-justify-content: flex-start;\n }\n\n .centered-right {\n -webkit-justify-content: flex-end;\n -webkit-align-items: center;\n display: -webkit-flex;\n }\n \n .box {\n border: 1px solid black;\n margin: -1px 0px 0px -1px;\n }\n\n .boxNoBorder {\n margin: -1px 0px 0px -1px;\n }\n\n pre {\n white-space: pre-wrap; /* css-3 */\n white-space: -moz-pre-wrap; /* Mozilla, since 1999 */\n white-space: -pre-wrap; /* Opera 4-6 */\n white-space: -o-pre-wrap; /* Opera 7 */\n word-wrap: break-word; /* Internet Explorer 5.5+ */\n font-size: 12px;\n font-family: Open Sans; \n }\n </style>\n </head>\n <body>\n ` + html.replace(new RegExp('flex-basis:', 'g'), '-webkit-flex-basis:').replace(new RegExp('flex:', 'g'), '-webkit-flex:') + '</body>');\n let tmpFileName = (pdfCnt++) + '-' + fileName.replace(new RegExp(/\\W/g), '');\n \n let interval = setInterval(() => {\n if (requestsArray.length === 0) {\n clearInterval(interval);\n \n page.render(tmpFileName, {\n format: 'pdf',\n quality: '100'\n }).then(() => {\n if (fs.existsSync(tmpFileName)) {\n fs.readFile(tmpFileName, (errRead, data) => {\n if (!errRead) {\n fs.unlinkSync(tmpFileName);\n resolve('data:application/pdf;base64,' + Buffer.from(data).toString('base64'));\n }\n else {\n reject('No file');\n }\n \n setTimeout(function() { phInstance.exit(); }, 0);\n });\n }\n else {\n reject('No tmp file');\n console.log('No tmp file ', tmpFileName);\n }\n }, err => {\n console.log(err);\n setTimeout(function() { phInstance.exit(); }, 0);\n });\n }\n }, 1000);\n }, error => {\n reject(error);\n setTimeout(function() { phInstance.exit(); }, 0);\n });\n });\n}\n\nfunction mergePDFResolve(data: any[]) {\n let fileDatas = data[0];\n\n return new Promise(async (resolve, reject) => {\n const mergedPdf = await PDFDocument.create();\n\n for (let i = 0; i < fileDatas.length; i++) {\n let fileData = fileDatas[i];\n if (fileData.startsWith('data:application/pdf;base64,')) {\n const pdf = await PDFDocument.load(fileData);\n const copiedPages = await mergedPdf.copyPages(pdf, pdf.getPageIndices());\n copiedPages.forEach((page) => {\n mergedPdf.addPage(page);\n });\n }\n else if (fileData.startsWith('data:image/jpeg;base64,/9j/') || fileData.startsWith('data:image/png;base64,/9j/')) {\n const pdf = await PDFDocument.create();\n const img = await pdf.embedJpg(fileData);\n const page = pdf.addPage();\n let imgDim = img.size();\n if (imgDim.width > page.getWidth() || imgDim.height > page.getWidth()) {\n imgDim = img.scaleToFit(page.getWidth(), page.getHeight());\n }\n img.scaleToFit(page.getWidth() / 2, page.getHeight() / 2);\n page.drawImage(img, {\n x: page.getWidth() / 2 - imgDim.width / 2,\n y: page.getHeight() / 2 - imgDim.height / 2,\n width: imgDim.width,\n height: imgDim.height,\n });\n const copiedPages = await mergedPdf.copyPages(pdf, pdf.getPageIndices());\n copiedPages.forEach((page) => {\n mergedPdf.addPage(page);\n });\n }\n else if (fileData.startsWith('data:image/png;base64,iVBOR')) {\n const pdf = await PDFDocument.create();\n const img = await pdf.embedPng(fileData);\n const page = pdf.addPage();\n let imgDim = img.size();\n if (imgDim.width > page.getWidth() || imgDim.height > page.getWidth()) {\n imgDim = img.scaleToFit(page.getWidth(), page.getHeight());\n }\n img.scaleToFit(page.getWidth() / 2, page.getHeight() / 2);\n page.drawImage(img, {\n x: page.getWidth() / 2 - imgDim.width / 2,\n y: page.getHeight() / 2 - imgDim.height / 2,\n width: imgDim.width,\n height: imgDim.height,\n });\n const copiedPages = await mergedPdf.copyPages(pdf, pdf.getPageIndices());\n copiedPages.forEach((page) => {\n mergedPdf.addPage(page);\n });\n }\n \n else {\n console.log('Error - unsupported!!', fileData.slice(0, 60));\n }\n }\n\n const b64PDF = await mergedPdf.saveAsBase64({ dataUri: true });\n\n resolve(b64PDF);\n });\n}"]}
|
package/package.json
CHANGED
package/public_api.d.ts
CHANGED
package/public_api.js
CHANGED
|
@@ -69,6 +69,5 @@ __exportStar(require("./models/user-guide.model"), exports);
|
|
|
69
69
|
__exportStar(require("./models/user.model"), exports);
|
|
70
70
|
__exportStar(require("./util/common"), exports);
|
|
71
71
|
__exportStar(require("./managers/mongo.manager"), exports);
|
|
72
|
-
__exportStar(require("./multi_threaded/helper_thread"), exports);
|
|
73
72
|
|
|
74
73
|
//# sourceMappingURL=public_api.js.map
|
package/public_api.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/public_api.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,sEAAoD;AACpD,uEAAqD;AACrD,mEAAiD;AACjD,4EAA0D;AAC1D,oEAAkD;AAClD,yEAAuD;AACvD,0EAAwD;AACxD,gEAA8C;AAC9C,gEAA8C;AAC9C,8EAA4D;AAC5D,4EAA0D;AAC1D,+DAA6C;AAC7C,2EAAyD;AACzD,2EAAyD;AACzD,uEAAqD;AACrD,0EAAwD;AACxD,yEAAuD;AACvD,wEAAsD;AACtD,kFAAgE;AAChE,iFAA+D;AAC/D,sEAAoD;AACpD,sEAAoD;AACpD,gEAA8C;AAC9C,4DAA0C;AAC1C,6DAA2C;AAC3C,yEAAuD;AACvD,qEAAmD;AACnD,yDAAuC;AACvC,kEAAgD;AAChD,0DAAwC;AACxC,wDAAsC;AACtC,+DAA6C;AAC7C,gEAA8C;AAC9C,sDAAoC;AACpC,sDAAoC;AACpC,oEAAkD;AAClD,kEAAgD;AAChD,qDAAmC;AACnC,iEAA+C;AAC/C,iEAA+C;AAC/C,wDAAsC;AACtC,6DAA2C;AAC3C,gEAA8C;AAC9C,+DAA6C;AAC7C,8DAA4C;AAC5C,4DAA0C;AAC1C,4DAA0C;AAC1C,wEAAsD;AACtD,uEAAqD;AACrD,gEAA8C;AAC9C,mEAAiD;AACjD,iEAA+C;AAC/C,8DAA4C;AAC5C,gEAA8C;AAC9C,4DAA0C;AAC1C,4DAA0C;AAC1C,sDAAoC;AACpC,gDAA8B;AAC9B,2DAAyC
|
|
1
|
+
{"version":3,"sources":["../../src/public_api.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,sEAAoD;AACpD,uEAAqD;AACrD,mEAAiD;AACjD,4EAA0D;AAC1D,oEAAkD;AAClD,yEAAuD;AACvD,0EAAwD;AACxD,gEAA8C;AAC9C,gEAA8C;AAC9C,8EAA4D;AAC5D,4EAA0D;AAC1D,+DAA6C;AAC7C,2EAAyD;AACzD,2EAAyD;AACzD,uEAAqD;AACrD,0EAAwD;AACxD,yEAAuD;AACvD,wEAAsD;AACtD,kFAAgE;AAChE,iFAA+D;AAC/D,sEAAoD;AACpD,sEAAoD;AACpD,gEAA8C;AAC9C,4DAA0C;AAC1C,6DAA2C;AAC3C,yEAAuD;AACvD,qEAAmD;AACnD,yDAAuC;AACvC,kEAAgD;AAChD,0DAAwC;AACxC,wDAAsC;AACtC,+DAA6C;AAC7C,gEAA8C;AAC9C,sDAAoC;AACpC,sDAAoC;AACpC,oEAAkD;AAClD,kEAAgD;AAChD,qDAAmC;AACnC,iEAA+C;AAC/C,iEAA+C;AAC/C,wDAAsC;AACtC,6DAA2C;AAC3C,gEAA8C;AAC9C,+DAA6C;AAC7C,8DAA4C;AAC5C,4DAA0C;AAC1C,4DAA0C;AAC1C,wEAAsD;AACtD,uEAAqD;AACrD,gEAA8C;AAC9C,mEAAiD;AACjD,iEAA+C;AAC/C,8DAA4C;AAC5C,gEAA8C;AAC9C,4DAA0C;AAC1C,4DAA0C;AAC1C,sDAAoC;AACpC,gDAA8B;AAC9B,2DAAyC","file":"public_api.js","sourcesContent":["export * from './collections/app-status.collection';\nexport * from './collections/app-version.collection';\nexport * from './collections/counter.collection';\nexport * from './collections/cron-job-history.collection';\nexport * from './collections/cron-job.collection';\nexport * from './collections/email-history.collection';\nexport * from './collections/email-verified.collection';\nexport * from './collections/file.collection';\nexport * from './collections/flag.collection';\nexport * from './collections/log-method-latency.collection';\nexport * from './collections/log-subscription.collection';\nexport * from './collections/log.collection';\nexport * from './collections/logged-in-users.collection';\nexport * from './collections/method-response.collection';\nexport * from './collections/monitor-cpu.collection';\nexport * from './collections/monitor-memory.collection';\nexport * from './collections/monitor-mongo.collection';\nexport * from './collections/notification.collection';\nexport * from './collections/report-builder-library.collection';\nexport * from './collections/report-builder-report.collection';\nexport * from './collections/user-group.collection';\nexport * from './collections/user-guide.collection';\nexport * from './collections/user.collection';\nexport * from './models/app-status.model';\nexport * from './models/app-version.model';\nexport * from './models/billing-logged-in-users.model';\nexport * from './models/collection-document.model';\nexport * from './models/counter.model';\nexport * from './models/cron-job-history.model';\nexport * from './models/cron-job.model';\nexport * from './models/dialog.model';\nexport * from './models/email-history.model';\nexport * from './models/email-verified.model';\nexport * from './models/file.model';\nexport * from './models/flag.model';\nexport * from './models/log-method-latency.model';\nexport * from './models/log-subscription.model';\nexport * from './models/log.model';\nexport * from './models/logged-in-users.model';\nexport * from './models/method-response.model';\nexport * from './models/method.model';\nexport * from './models/monitor-cpu.model';\nexport * from './models/monitor-memory.model';\nexport * from './models/monitor-mongo.model';\nexport * from './models/notification.model';\nexport * from './models/pagination.model';\nexport * from './models/permission.model';\nexport * from './models/report-builder-library.model';\nexport * from './models/report-builder-report.model';\nexport * from './models/report-builder.model';\nexport * from './models/select-data-label.model';\nexport * from './models/server-response.model';\nexport * from './models/subscription.model';\nexport * from './models/support-ticket.model';\nexport * from './models/user-group.model';\nexport * from './models/user-guide.model';\nexport * from './models/user.model';\nexport * from './util/common';\nexport * from './managers/mongo.manager';"]}
|