@resolveio/server-lib 12.5.53 → 12.5.54

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.
Files changed (400) hide show
  1. package/.nodemon.json +5 -0
  2. package/.vscode/settings.json +3 -0
  3. package/README.md +22 -0
  4. package/compileDTS.pl +64 -0
  5. package/gulpfile.js +127 -0
  6. package/mongodbensurers.js +2 -0
  7. package/mongostop.js +3 -0
  8. package/package.json +1 -1
  9. package/settings.development.json +13 -0
  10. package/src/client-server-app.ts +7 -0
  11. package/src/collections/app-status.collection.ts +51 -0
  12. package/src/collections/counter.collection.ts +54 -0
  13. package/src/collections/cron-job-history.collection.ts +82 -0
  14. package/src/collections/cron-job.collection.ts +85 -0
  15. package/src/collections/email-history.collection.ts +66 -0
  16. package/src/collections/email-verified.collection.ts +61 -0
  17. package/src/collections/file.collection.ts +73 -0
  18. package/src/collections/flag.collection.ts +56 -0
  19. package/src/collections/log-method-latency.collection.ts +64 -0
  20. package/src/collections/log-subscription.collection.ts +68 -0
  21. package/src/collections/log-ts.collection.ts +78 -0
  22. package/src/collections/log.collection.ts +77 -0
  23. package/src/collections/logged-in-users.collection.ts +65 -0
  24. package/src/collections/method-response.collection.ts +66 -0
  25. package/src/collections/monitor-cpu.collection.ts +63 -0
  26. package/src/collections/monitor-memory.collection.ts +75 -0
  27. package/src/collections/monitor-mongo.collection.ts +69 -0
  28. package/src/collections/notification.collection.ts +51 -0
  29. package/src/collections/report-builder-dashboard-builder.collection.ts +109 -0
  30. package/src/collections/report-builder-library.collection.ts +89 -0
  31. package/src/collections/report-builder-report.collection.ts +149 -0
  32. package/src/collections/user-group.collection.ts +90 -0
  33. package/src/collections/user-guide.collection.ts +57 -0
  34. package/src/collections/user.collection.ts +259 -0
  35. package/src/cron/cron.ts +188 -0
  36. package/src/fixtures/cron-jobs.ts +25 -0
  37. package/src/fixtures/init.ts +10 -0
  38. package/src/http/auth.ts +732 -0
  39. package/src/http/health.ts +7 -0
  40. package/src/http/home.ts +71 -0
  41. package/src/index.ts +71 -0
  42. package/src/managers/cron.manager.ts +208 -0
  43. package/src/managers/method.manager.ts +607 -0
  44. package/src/managers/mongo.manager.ts +2282 -0
  45. package/src/managers/monitor.manager.ts +323 -0
  46. package/src/managers/subscription.manager.ts +1196 -0
  47. package/{managers/subscription.performance.js → src/managers/subscription.performance.ts} +68 -33
  48. package/src/methods/accounts.ts +202 -0
  49. package/src/methods/aws.ts +507 -0
  50. package/src/methods/collections.ts +512 -0
  51. package/src/methods/counters.ts +75 -0
  52. package/src/methods/cron-jobs.ts +1454 -0
  53. package/src/methods/flags.ts +7 -0
  54. package/src/methods/logs.ts +327 -0
  55. package/src/methods/monitor.ts +548 -0
  56. package/src/methods/pdf.ts +615 -0
  57. package/src/methods/report-builder.ts +876 -0
  58. package/src/methods/support.ts +146 -0
  59. package/{models/app-status.model.d.ts → src/models/app-status.model.ts} +3 -2
  60. package/{models/billing-logged-in-users.model.d.ts → src/models/billing-logged-in-users.model.ts} +5 -4
  61. package/src/models/collection-document.model.ts +22 -0
  62. package/{models/counter.model.d.ts → src/models/counter.model.ts} +4 -3
  63. package/src/models/cron-job-history.model.ts +13 -0
  64. package/src/models/cron-job.model.ts +14 -0
  65. package/src/models/dialog.model.ts +25 -0
  66. package/{models/email-history.model.d.ts → src/models/email-history.model.ts} +8 -7
  67. package/{models/email-verified.model.d.ts → src/models/email-verified.model.ts} +6 -5
  68. package/{models/file.model.d.ts → src/models/file.model.ts} +8 -7
  69. package/{models/flag.model.d.ts → src/models/flag.model.ts} +4 -3
  70. package/{models/log-method-latency.model.d.ts → src/models/log-method-latency.model.ts} +5 -4
  71. package/{models/log-subscription.model.d.ts → src/models/log-subscription.model.ts} +8 -6
  72. package/{models/log.model.d.ts → src/models/log.model.ts} +12 -10
  73. package/{models/logged-in-users.model.d.ts → src/models/logged-in-users.model.ts} +6 -5
  74. package/{models/method-response.model.d.ts → src/models/method-response.model.ts} +7 -6
  75. package/src/models/method.model.ts +11 -0
  76. package/{models/monitor-cpu.model.d.ts → src/models/monitor-cpu.model.ts} +9 -7
  77. package/src/models/monitor-memory.model.ts +17 -0
  78. package/src/models/monitor-mongo.model.ts +15 -0
  79. package/{models/notification.model.d.ts → src/models/notification.model.ts} +3 -2
  80. package/src/models/pagination.model.ts +30 -0
  81. package/src/models/permission.model.ts +14 -0
  82. package/src/models/report-builder-dashboard-builder.model.ts +29 -0
  83. package/src/models/report-builder-library.model.ts +20 -0
  84. package/src/models/report-builder-report.model.ts +110 -0
  85. package/src/models/report-builder.model.ts +68 -0
  86. package/src/models/select-data-label.model.ts +9 -0
  87. package/src/models/server-response.model.ts +5 -0
  88. package/src/models/subscription.model.ts +64 -0
  89. package/src/models/support-ticket.model.ts +81 -0
  90. package/src/models/user-group.model.ts +23 -0
  91. package/{models/user-guide.model.d.ts → src/models/user-guide.model.ts} +5 -4
  92. package/src/models/user.model.ts +79 -0
  93. package/{public_api.d.ts → src/public_api.ts} +1 -1
  94. package/src/publications/app-status.ts +13 -0
  95. package/src/publications/cron-jobs.ts +30 -0
  96. package/src/publications/files.ts +34 -0
  97. package/src/publications/flags.ts +20 -0
  98. package/src/publications/logs.ts +164 -0
  99. package/src/publications/method-responses.ts +13 -0
  100. package/src/publications/notifications.ts +13 -0
  101. package/src/publications/report-builder-dashboard-builders.ts +39 -0
  102. package/src/publications/report-builder-libraries.ts +41 -0
  103. package/src/publications/report-builder-reports.ts +48 -0
  104. package/src/publications/super-admin.ts +13 -0
  105. package/src/publications/user-groups.ts +12 -0
  106. package/src/publications/user-guides.ts +12 -0
  107. package/src/server-app.ts +769 -0
  108. package/src/util/common.ts +519 -0
  109. package/src/util/schema-report-builder.ts +413 -0
  110. package/tsconfig.json +30 -0
  111. package/tslint.json +143 -0
  112. package/client-server-app.d.ts +0 -1
  113. package/client-server-app.js +0 -48
  114. package/client-server-app.js.map +0 -1
  115. package/collections/app-status.collection.d.ts +0 -3
  116. package/collections/app-status.collection.js +0 -51
  117. package/collections/app-status.collection.js.map +0 -1
  118. package/collections/counter.collection.d.ts +0 -3
  119. package/collections/counter.collection.js +0 -54
  120. package/collections/counter.collection.js.map +0 -1
  121. package/collections/cron-job-history.collection.d.ts +0 -3
  122. package/collections/cron-job-history.collection.js +0 -82
  123. package/collections/cron-job-history.collection.js.map +0 -1
  124. package/collections/cron-job.collection.d.ts +0 -3
  125. package/collections/cron-job.collection.js +0 -85
  126. package/collections/cron-job.collection.js.map +0 -1
  127. package/collections/email-history.collection.d.ts +0 -3
  128. package/collections/email-history.collection.js +0 -66
  129. package/collections/email-history.collection.js.map +0 -1
  130. package/collections/email-verified.collection.d.ts +0 -3
  131. package/collections/email-verified.collection.js +0 -61
  132. package/collections/email-verified.collection.js.map +0 -1
  133. package/collections/file.collection.d.ts +0 -3
  134. package/collections/file.collection.js +0 -73
  135. package/collections/file.collection.js.map +0 -1
  136. package/collections/flag.collection.d.ts +0 -3
  137. package/collections/flag.collection.js +0 -56
  138. package/collections/flag.collection.js.map +0 -1
  139. package/collections/log-method-latency.collection.d.ts +0 -3
  140. package/collections/log-method-latency.collection.js +0 -64
  141. package/collections/log-method-latency.collection.js.map +0 -1
  142. package/collections/log-subscription.collection.d.ts +0 -3
  143. package/collections/log-subscription.collection.js +0 -68
  144. package/collections/log-subscription.collection.js.map +0 -1
  145. package/collections/log-ts.collection.d.ts +0 -3
  146. package/collections/log-ts.collection.js +0 -78
  147. package/collections/log-ts.collection.js.map +0 -1
  148. package/collections/log.collection.d.ts +0 -3
  149. package/collections/log.collection.js +0 -77
  150. package/collections/log.collection.js.map +0 -1
  151. package/collections/logged-in-users.collection.d.ts +0 -3
  152. package/collections/logged-in-users.collection.js +0 -65
  153. package/collections/logged-in-users.collection.js.map +0 -1
  154. package/collections/method-response.collection.d.ts +0 -3
  155. package/collections/method-response.collection.js +0 -66
  156. package/collections/method-response.collection.js.map +0 -1
  157. package/collections/monitor-cpu.collection.d.ts +0 -3
  158. package/collections/monitor-cpu.collection.js +0 -63
  159. package/collections/monitor-cpu.collection.js.map +0 -1
  160. package/collections/monitor-memory.collection.d.ts +0 -3
  161. package/collections/monitor-memory.collection.js +0 -75
  162. package/collections/monitor-memory.collection.js.map +0 -1
  163. package/collections/monitor-mongo.collection.d.ts +0 -3
  164. package/collections/monitor-mongo.collection.js +0 -69
  165. package/collections/monitor-mongo.collection.js.map +0 -1
  166. package/collections/notification.collection.d.ts +0 -3
  167. package/collections/notification.collection.js +0 -51
  168. package/collections/notification.collection.js.map +0 -1
  169. package/collections/report-builder-dashboard-builder.collection.d.ts +0 -3
  170. package/collections/report-builder-dashboard-builder.collection.js +0 -109
  171. package/collections/report-builder-dashboard-builder.collection.js.map +0 -1
  172. package/collections/report-builder-library.collection.d.ts +0 -3
  173. package/collections/report-builder-library.collection.js +0 -87
  174. package/collections/report-builder-library.collection.js.map +0 -1
  175. package/collections/report-builder-report.collection.d.ts +0 -4
  176. package/collections/report-builder-report.collection.js +0 -149
  177. package/collections/report-builder-report.collection.js.map +0 -1
  178. package/collections/user-group.collection.d.ts +0 -4
  179. package/collections/user-group.collection.js +0 -90
  180. package/collections/user-group.collection.js.map +0 -1
  181. package/collections/user-guide.collection.d.ts +0 -3
  182. package/collections/user-guide.collection.js +0 -57
  183. package/collections/user-guide.collection.js.map +0 -1
  184. package/collections/user.collection.d.ts +0 -4
  185. package/collections/user.collection.js +0 -259
  186. package/collections/user.collection.js.map +0 -1
  187. package/cron/cron.d.ts +0 -5
  188. package/cron/cron.js +0 -162
  189. package/cron/cron.js.map +0 -1
  190. package/fixtures/cron-jobs.d.ts +0 -1
  191. package/fixtures/cron-jobs.js +0 -73
  192. package/fixtures/cron-jobs.js.map +0 -1
  193. package/fixtures/init.d.ts +0 -1
  194. package/fixtures/init.js +0 -59
  195. package/fixtures/init.js.map +0 -1
  196. package/http/auth.d.ts +0 -2
  197. package/http/auth.js +0 -763
  198. package/http/auth.js.map +0 -1
  199. package/http/health.d.ts +0 -1
  200. package/http/health.js +0 -12
  201. package/http/health.js.map +0 -1
  202. package/http/home.d.ts +0 -2
  203. package/http/home.js +0 -66
  204. package/http/home.js.map +0 -1
  205. package/index.d.ts +0 -23
  206. package/index.js +0 -127
  207. package/index.js.map +0 -1
  208. package/managers/cron.manager.d.ts +0 -17
  209. package/managers/cron.manager.js +0 -242
  210. package/managers/cron.manager.js.map +0 -1
  211. package/managers/method.manager.d.ts +0 -38
  212. package/managers/method.manager.js +0 -595
  213. package/managers/method.manager.js.map +0 -1
  214. package/managers/mongo.manager.d.ts +0 -178
  215. package/managers/mongo.manager.js +0 -2221
  216. package/managers/mongo.manager.js.map +0 -1
  217. package/managers/monitor.manager.d.ts +0 -59
  218. package/managers/monitor.manager.js +0 -351
  219. package/managers/monitor.manager.js.map +0 -1
  220. package/managers/subscription.manager.d.ts +0 -50
  221. package/managers/subscription.manager.js +0 -1091
  222. package/managers/subscription.manager.js.map +0 -1
  223. package/managers/subscription.performance.d.ts +0 -1
  224. package/managers/subscription.performance.js.map +0 -1
  225. package/methods/accounts.d.ts +0 -2
  226. package/methods/accounts.js +0 -274
  227. package/methods/accounts.js.map +0 -1
  228. package/methods/aws.d.ts +0 -2
  229. package/methods/aws.js +0 -617
  230. package/methods/aws.js.map +0 -1
  231. package/methods/collections.d.ts +0 -2
  232. package/methods/collections.js +0 -499
  233. package/methods/collections.js.map +0 -1
  234. package/methods/counters.d.ts +0 -2
  235. package/methods/counters.js +0 -122
  236. package/methods/counters.js.map +0 -1
  237. package/methods/cron-jobs.d.ts +0 -2
  238. package/methods/cron-jobs.js +0 -1315
  239. package/methods/cron-jobs.js.map +0 -1
  240. package/methods/flags.d.ts +0 -2
  241. package/methods/flags.js +0 -9
  242. package/methods/flags.js.map +0 -1
  243. package/methods/logs.d.ts +0 -2
  244. package/methods/logs.js +0 -371
  245. package/methods/logs.js.map +0 -1
  246. package/methods/monitor.d.ts +0 -2
  247. package/methods/monitor.js +0 -565
  248. package/methods/monitor.js.map +0 -1
  249. package/methods/pdf.d.ts +0 -2
  250. package/methods/pdf.js +0 -468
  251. package/methods/pdf.js.map +0 -1
  252. package/methods/report-builder.d.ts +0 -2
  253. package/methods/report-builder.js +0 -858
  254. package/methods/report-builder.js.map +0 -1
  255. package/methods/support.d.ts +0 -2
  256. package/methods/support.js +0 -246
  257. package/methods/support.js.map +0 -1
  258. package/models/app-status.model.js +0 -4
  259. package/models/app-status.model.js.map +0 -1
  260. package/models/billing-logged-in-users.model.js +0 -4
  261. package/models/billing-logged-in-users.model.js.map +0 -1
  262. package/models/collection-document.model.d.ts +0 -19
  263. package/models/collection-document.model.js +0 -4
  264. package/models/collection-document.model.js.map +0 -1
  265. package/models/counter.model.js +0 -4
  266. package/models/counter.model.js.map +0 -1
  267. package/models/cron-job-history.model.d.ts +0 -12
  268. package/models/cron-job-history.model.js +0 -4
  269. package/models/cron-job-history.model.js.map +0 -1
  270. package/models/cron-job.model.d.ts +0 -13
  271. package/models/cron-job.model.js +0 -4
  272. package/models/cron-job.model.js.map +0 -1
  273. package/models/dialog.model.d.ts +0 -23
  274. package/models/dialog.model.js +0 -4
  275. package/models/dialog.model.js.map +0 -1
  276. package/models/email-history.model.js +0 -4
  277. package/models/email-history.model.js.map +0 -1
  278. package/models/email-verified.model.js +0 -4
  279. package/models/email-verified.model.js.map +0 -1
  280. package/models/file.model.js +0 -4
  281. package/models/file.model.js.map +0 -1
  282. package/models/flag.model.js +0 -4
  283. package/models/flag.model.js.map +0 -1
  284. package/models/log-method-latency.model.js +0 -4
  285. package/models/log-method-latency.model.js.map +0 -1
  286. package/models/log-subscription.model.js +0 -4
  287. package/models/log-subscription.model.js.map +0 -1
  288. package/models/log.model.js +0 -4
  289. package/models/log.model.js.map +0 -1
  290. package/models/logged-in-users.model.js +0 -4
  291. package/models/logged-in-users.model.js.map +0 -1
  292. package/models/method-response.model.js +0 -4
  293. package/models/method-response.model.js.map +0 -1
  294. package/models/method.model.d.ts +0 -9
  295. package/models/method.model.js +0 -4
  296. package/models/method.model.js.map +0 -1
  297. package/models/monitor-cpu.model.js +0 -4
  298. package/models/monitor-cpu.model.js.map +0 -1
  299. package/models/monitor-memory.model.d.ts +0 -15
  300. package/models/monitor-memory.model.js +0 -4
  301. package/models/monitor-memory.model.js.map +0 -1
  302. package/models/monitor-mongo.model.d.ts +0 -13
  303. package/models/monitor-mongo.model.js +0 -4
  304. package/models/monitor-mongo.model.js.map +0 -1
  305. package/models/notification.model.js +0 -4
  306. package/models/notification.model.js.map +0 -1
  307. package/models/pagination.model.d.ts +0 -10
  308. package/models/pagination.model.js +0 -24
  309. package/models/pagination.model.js.map +0 -1
  310. package/models/permission.model.d.ts +0 -12
  311. package/models/permission.model.js +0 -4
  312. package/models/permission.model.js.map +0 -1
  313. package/models/report-builder-dashboard-builder.model.d.ts +0 -25
  314. package/models/report-builder-dashboard-builder.model.js +0 -4
  315. package/models/report-builder-dashboard-builder.model.js.map +0 -1
  316. package/models/report-builder-library.model.d.ts +0 -17
  317. package/models/report-builder-library.model.js +0 -4
  318. package/models/report-builder-library.model.js.map +0 -1
  319. package/models/report-builder-report.model.d.ts +0 -98
  320. package/models/report-builder-report.model.js +0 -4
  321. package/models/report-builder-report.model.js.map +0 -1
  322. package/models/report-builder.model.d.ts +0 -61
  323. package/models/report-builder.model.js +0 -4
  324. package/models/report-builder.model.js.map +0 -1
  325. package/models/select-data-label.model.d.ts +0 -9
  326. package/models/select-data-label.model.js +0 -4
  327. package/models/select-data-label.model.js.map +0 -1
  328. package/models/server-response.model.d.ts +0 -5
  329. package/models/server-response.model.js +0 -4
  330. package/models/server-response.model.js.map +0 -1
  331. package/models/subscription.model.d.ts +0 -23
  332. package/models/subscription.model.js +0 -4
  333. package/models/subscription.model.js.map +0 -1
  334. package/models/support-ticket.model.d.ts +0 -72
  335. package/models/support-ticket.model.js +0 -4
  336. package/models/support-ticket.model.js.map +0 -1
  337. package/models/user-group.model.d.ts +0 -19
  338. package/models/user-group.model.js +0 -4
  339. package/models/user-group.model.js.map +0 -1
  340. package/models/user-guide.model.js +0 -4
  341. package/models/user-guide.model.js.map +0 -1
  342. package/models/user.model.d.ts +0 -70
  343. package/models/user.model.js +0 -4
  344. package/models/user.model.js.map +0 -1
  345. package/public_api.js +0 -75
  346. package/public_api.js.map +0 -1
  347. package/publications/app-status.d.ts +0 -2
  348. package/publications/app-status.js +0 -17
  349. package/publications/app-status.js.map +0 -1
  350. package/publications/cron-jobs.d.ts +0 -2
  351. package/publications/cron-jobs.js +0 -33
  352. package/publications/cron-jobs.js.map +0 -1
  353. package/publications/files.d.ts +0 -2
  354. package/publications/files.js +0 -37
  355. package/publications/files.js.map +0 -1
  356. package/publications/flags.d.ts +0 -2
  357. package/publications/flags.js +0 -23
  358. package/publications/flags.js.map +0 -1
  359. package/publications/logs.d.ts +0 -2
  360. package/publications/logs.js +0 -165
  361. package/publications/logs.js.map +0 -1
  362. package/publications/method-responses.d.ts +0 -2
  363. package/publications/method-responses.js +0 -17
  364. package/publications/method-responses.js.map +0 -1
  365. package/publications/notifications.d.ts +0 -2
  366. package/publications/notifications.js +0 -17
  367. package/publications/notifications.js.map +0 -1
  368. package/publications/report-builder-dashboard-builders.d.ts +0 -2
  369. package/publications/report-builder-dashboard-builders.js +0 -43
  370. package/publications/report-builder-dashboard-builders.js.map +0 -1
  371. package/publications/report-builder-libraries.d.ts +0 -2
  372. package/publications/report-builder-libraries.js +0 -90
  373. package/publications/report-builder-libraries.js.map +0 -1
  374. package/publications/report-builder-reports.d.ts +0 -2
  375. package/publications/report-builder-reports.js +0 -51
  376. package/publications/report-builder-reports.js.map +0 -1
  377. package/publications/super-admin.d.ts +0 -2
  378. package/publications/super-admin.js +0 -17
  379. package/publications/super-admin.js.map +0 -1
  380. package/publications/user-groups.d.ts +0 -1
  381. package/publications/user-groups.js +0 -17
  382. package/publications/user-groups.js.map +0 -1
  383. package/publications/user-guides.d.ts +0 -1
  384. package/publications/user-guides.js +0 -17
  385. package/publications/user-guides.js.map +0 -1
  386. package/server-app.d.ts +0 -52
  387. package/server-app.js +0 -739
  388. package/server-app.js.map +0 -1
  389. package/util/common.d.ts +0 -24
  390. package/util/common.js +0 -511
  391. package/util/common.js.map +0 -1
  392. package/util/schema-report-builder.d.ts +0 -6
  393. package/util/schema-report-builder.js +0 -453
  394. package/util/schema-report-builder.js.map +0 -1
  395. /package/{private → src/private}/email-templates/enrollment.html +0 -0
  396. /package/{private → src/private}/email-templates/forgot-password.html +0 -0
  397. /package/{private → src/private}/email-templates/support-ticket-deleted.html +0 -0
  398. /package/{private → src/private}/email-templates/support-ticket-modified.html +0 -0
  399. /package/{private → src/private}/email-templates/support-ticket.html +0 -0
  400. /package/{private → src/private}/images/ResolveIO.png +0 -0
@@ -0,0 +1,615 @@
1
+ import * as fs from 'fs';
2
+ import { MethodManager } from '../managers/method.manager';
3
+ import SimpleSchema from 'simpl-schema';
4
+ import { ParseSpeeds, PDFDocument } from 'pdf-lib';
5
+ import * as puppeteer from 'puppeteer';
6
+ import * as path from 'path';
7
+
8
+ let pdfCnt = 0;
9
+
10
+ export function loadPDFMethods(methodManager: MethodManager) {
11
+ methodManager.methods({
12
+ generatePDF: {
13
+ check: new SimpleSchema({
14
+ html: {
15
+ type: String
16
+ },
17
+ fileName: {
18
+ type: String
19
+ },
20
+ orientation: {
21
+ type: String,
22
+ optional: true
23
+ },
24
+ fontSize: {
25
+ type: String,
26
+ optional: true
27
+ },
28
+ upload: {
29
+ type: Boolean,
30
+ optional: true
31
+ },
32
+ uploadFileOrder: {
33
+ type: Number,
34
+ optional: true
35
+ },
36
+ uploadFileType: {
37
+ type: String,
38
+ optional: true
39
+ }
40
+ }),
41
+ function: function(html, fileName, orientation = 'portrait', fontSize = '12px', upload = false, uploadFileOrder = -1, uploadFileType = '') {
42
+ return new Promise(async (resolve, reject) => {
43
+ // console.log(new Date(), 'GENERATE PDF CALL', fileName, orientation, fontSize, upload);
44
+
45
+ const args = [
46
+ "--disable-dev-shm-usage",
47
+ "--no-sandbox",
48
+ "--disable-setuid-sandbox",
49
+ "--disable-accelerated-2d-canvas",
50
+ "--disable-gpu",
51
+ "--allow-file-access-from-files",
52
+ "--enable-local-file-accesses",
53
+ '--font-render-hinting=none'
54
+ ];
55
+
56
+ const browser = await puppeteer.launch({
57
+ headless: true, // run in headless mode
58
+ devtools: false, // run with dev tools
59
+ ignoreHTTPSErrors: true, // ignore https error
60
+ args,
61
+ ignoreDefaultArgs: ["--disable-extensions"]
62
+ }); // run browser
63
+
64
+ const page = await browser.newPage(); // create new tab
65
+
66
+ let pathToFont = '';
67
+
68
+ if (fs.existsSync(path.join(__dirname, ('../private/fonts/dejavuserif.woff')))) {
69
+ pathToFont = path.join(__dirname, ('../private/fonts/'));
70
+ }
71
+ else {
72
+ if (fs.existsSync(path.join(this.clientDir, ('./private/fonts/dejavuserif.woff')))) {
73
+ pathToFont = path.join(this.clientDir, ('./private/fonts/'));
74
+ }
75
+ else {
76
+ pathToFont = '/usr/share/fonts/dejavu/';
77
+ }
78
+ }
79
+
80
+ let dejavuserif_woff = 'data:application/font-woff;base64,' + Buffer.from(fs.readFileSync(pathToFont + 'dejavuserif.woff').buffer).toString('base64');
81
+ let dejavuserifBold_woff = 'data:application/font-woff;base64,' + Buffer.from(fs.readFileSync(pathToFont + 'dejavuserif-bold.woff').buffer).toString('base64');
82
+ let dejavuserifItalic_woff = 'data:application/font-woff;base64,' + Buffer.from(fs.readFileSync(pathToFont + 'dejavuserif-italic.woff').buffer).toString('base64');
83
+ let dejavuserifBoldItalic_woff = 'data:application/font-woff;base64,' + Buffer.from(fs.readFileSync(pathToFont + 'dejavuserif-bolditalic.woff').buffer).toString('base64');
84
+
85
+ let content = `
86
+ <head>
87
+ <style type="text/css">
88
+ @font-face {
89
+ font-family: 'Dejavu Serif';
90
+ font-style: normal;
91
+ font-weight: normal;
92
+ src: url("` + dejavuserif_woff + `") format('woff');
93
+ }
94
+
95
+ @font-face {
96
+ font-family: 'Dejavu Serif';
97
+ font-style: normal;
98
+ font-weight: bold;
99
+ src: url("` + dejavuserifBold_woff + `") format('woff');
100
+ }
101
+
102
+ @font-face {
103
+ font-family: 'Dejavu Serif';
104
+ font-style: italic;
105
+ font-weight: normal;
106
+ src: url("` + dejavuserifItalic_woff + `") format('woff');
107
+ }
108
+
109
+ @font-face {
110
+ font-family: 'Dejavu Serif';
111
+ font-style: italic;
112
+ font-weight: bold;
113
+ src: url("` + dejavuserifBoldItalic_woff + `") format('woff');
114
+ }
115
+
116
+ body {
117
+ font-family: 'Dejavu Serif', serif;
118
+ font-size: ` + (fontSize ? fontSize : '12px') + `;
119
+ }
120
+
121
+ .row {
122
+ display: -webkit-flex;
123
+ display: flex;
124
+ flex-wrap: wrap;
125
+ -webkit-flex-wrap: wrap;
126
+ page-break-inside: avoid !important;
127
+ }
128
+
129
+ .page-break {
130
+ page-break-before: always !important;
131
+ padding-top: 1px;
132
+ }
133
+
134
+ .cell {
135
+ box-sizing: border-box;
136
+ padding : 2px;
137
+ -webkit-flex: 1;
138
+ word-wrap: break-word;
139
+ }
140
+
141
+ .cell-no-padding {
142
+ box-sizing: border-box;
143
+ -webkit-flex: 1;
144
+ word-wrap: break-word;
145
+ }
146
+
147
+ .centered {
148
+ -webkit-justify-content: center;
149
+ -webkit-align-items: center;
150
+ display: -webkit-flex;
151
+ text-align: center;
152
+ }
153
+
154
+ .centered-left {
155
+ -webkit-align-items: center;
156
+ display: -webkit-flex;
157
+ -webkit-justify-content: flex-start;
158
+ }
159
+
160
+ .centered-right {
161
+ -webkit-justify-content: flex-end;
162
+ -webkit-align-items: center;
163
+ display: -webkit-flex;
164
+ }
165
+
166
+ .box {
167
+ border: 1px solid black;
168
+ margin: -1px 0px 0px -1px;
169
+ }
170
+
171
+ .boxNoBorder {
172
+ margin: -1px 0px 0px -1px;
173
+ }
174
+
175
+ pre {
176
+ white-space: pre-wrap; /* css-3 */
177
+ white-space: -moz-pre-wrap; /* Mozilla, since 1999 */
178
+ white-space: -pre-wrap; /* Opera 4-6 */
179
+ white-space: -o-pre-wrap; /* Opera 7 */
180
+ word-wrap: break-word; /* Internet Explorer 5.5+ */
181
+ font-size: 12px;
182
+ font-family: 'Dejavu Serif';
183
+ }
184
+ </style>
185
+ </head>
186
+ <body>
187
+ ` + html.replace(new RegExp('flex-basis:', 'g'), '-webkit-flex-basis:').replace(new RegExp('flex:', 'g'), '-webkit-flex:') + '</body>';
188
+
189
+ await page.setContent(content, { waitUntil: ['domcontentloaded', 'load', 'networkidle0'] });
190
+ await page.evaluateHandle('document.fonts.ready');
191
+
192
+ let tmpFileName = (pdfCnt++) + '-' + fileName.replace(new RegExp(/[^0-9\.a-zA-Z]/g), '');
193
+
194
+ await page.pdf({
195
+ scale: 1,
196
+ landscape: orientation === 'portrait' ? false : true,
197
+ format: 'letter',
198
+ margin: {
199
+ top: '1cm',
200
+ bottom: '1cm',
201
+ left: '1cm',
202
+ right: '1cm'
203
+ },
204
+ printBackground: true,
205
+ displayHeaderFooter: true,
206
+ headerTemplate: `
207
+ <style>
208
+ #header {
209
+ padding: 0 0 10px 10px !important;
210
+ }
211
+ </style>
212
+ <span></span>
213
+ `,
214
+ footerTemplate: `
215
+ <style>
216
+ #footer {
217
+ padding: 0 0 10px 10px !important;
218
+ font-size: 10px;
219
+ font-family: san-serif;
220
+ }
221
+ </style>
222
+ <div style="padding-bottom: 2px; padding-right: 15px; text-align: right; width: 100%;">
223
+ Page&nbsp;<span class="pageNumber"></span>&nbsp;of&nbsp;<span class="totalPages"></span>
224
+ </div>
225
+ `,
226
+ path: path.join(__dirname, (tmpFileName)),
227
+ timeout: 0
228
+ });
229
+ await browser.close();
230
+
231
+ if (fs.existsSync(path.join(__dirname, (tmpFileName)))) {
232
+ fs.readFile(path.join(__dirname, (tmpFileName)), (errRead, data) => {
233
+ if (!errRead) {
234
+ fs.unlinkSync(path.join(__dirname, (tmpFileName)));
235
+ if (!upload) {
236
+ resolve('data:application/pdf;base64,' + Buffer.from(data).toString('base64'));
237
+ }
238
+ else {
239
+ let fileData = 'data:application/pdf;base64,' + Buffer.from(data).toString('base64');
240
+ this.callMethodInternal('uploadFileAndSave', fileName, fileData, (4 * Math.ceil(fileData.length / 3)), uploadFileOrder !== null ? uploadFileOrder : -1, uploadFileType, false, (err, res) => {
241
+ if (err) {
242
+ reject(err);
243
+ }
244
+ else {
245
+ resolve(res);
246
+ }
247
+ });
248
+ }
249
+ }
250
+ else {
251
+ reject('No file');
252
+ }
253
+ });
254
+ }
255
+ else {
256
+ reject('No tmp file');
257
+ console.log('No tmp file ', tmpFileName);
258
+ }
259
+ });
260
+ }
261
+ },
262
+ generatePDFNoPageNumber: {
263
+ check: new SimpleSchema({
264
+ html: {
265
+ type: String
266
+ },
267
+ fileName: {
268
+ type: String
269
+ },
270
+ orientation: {
271
+ type: String,
272
+ optional: true
273
+ },
274
+ fontSize: {
275
+ type: String,
276
+ optional: true
277
+ },
278
+ upload: {
279
+ type: Boolean,
280
+ optional: true
281
+ },
282
+ uploadFileOrder: {
283
+ type: Number,
284
+ optional: true
285
+ },
286
+ uploadFileType: {
287
+ type: String,
288
+ optional: true
289
+ }
290
+ }),
291
+ function: function(html, fileName, orientation = 'portrait', fontSize = '12px', upload = false, uploadFileOrder = -1, uploadFileType = '') {
292
+ return new Promise(async (resolve, reject) => {
293
+ // console.log(new Date(), 'GENERATE PDF CALL', fileName, orientation, fontSize, upload);
294
+
295
+ const args = [
296
+ "--disable-dev-shm-usage",
297
+ "--no-sandbox",
298
+ "--disable-setuid-sandbox",
299
+ "--disable-accelerated-2d-canvas",
300
+ "--disable-gpu",
301
+ "--allow-file-access-from-files",
302
+ "--enable-local-file-accesses",
303
+ '--font-render-hinting=none'
304
+ ];
305
+
306
+ const browser = await puppeteer.launch({
307
+ headless: true, // run in headless mode
308
+ devtools: false, // run with dev tools
309
+ ignoreHTTPSErrors: true, // ignore https error
310
+ args,
311
+ ignoreDefaultArgs: ["--disable-extensions"]
312
+ }); // run browser
313
+
314
+ const page = await browser.newPage(); // create new tab
315
+
316
+ let pathToFont = '';
317
+
318
+ if (fs.existsSync(path.join(__dirname, ('../private/fonts/dejavuserif.woff')))) {
319
+ pathToFont = path.join(__dirname, ('../private/fonts/'));
320
+ }
321
+ else {
322
+ if (fs.existsSync(path.join(this.clientDir, ('./private/fonts/dejavuserif.woff')))) {
323
+ pathToFont = path.join(this.clientDir, ('./private/fonts/'));
324
+ }
325
+ else {
326
+ pathToFont = '/usr/share/fonts/dejavu/';
327
+ }
328
+ }
329
+
330
+ let dejavuserif_woff = 'data:application/font-woff;base64,' + Buffer.from(fs.readFileSync(pathToFont + 'dejavuserif.woff').buffer).toString('base64');
331
+ let dejavuserifBold_woff = 'data:application/font-woff;base64,' + Buffer.from(fs.readFileSync(pathToFont + 'dejavuserif-bold.woff').buffer).toString('base64');
332
+ let dejavuserifItalic_woff = 'data:application/font-woff;base64,' + Buffer.from(fs.readFileSync(pathToFont + 'dejavuserif-italic.woff').buffer).toString('base64');
333
+ let dejavuserifBoldItalic_woff = 'data:application/font-woff;base64,' + Buffer.from(fs.readFileSync(pathToFont + 'dejavuserif-bolditalic.woff').buffer).toString('base64');
334
+
335
+ let content = `
336
+ <head>
337
+ <style type="text/css">
338
+ @font-face {
339
+ font-family: 'Dejavu Serif';
340
+ font-style: normal;
341
+ font-weight: normal;
342
+ src: url("` + dejavuserif_woff + `") format('woff');
343
+ }
344
+
345
+ @font-face {
346
+ font-family: 'Dejavu Serif';
347
+ font-style: normal;
348
+ font-weight: bold;
349
+ src: url("` + dejavuserifBold_woff + `") format('woff');
350
+ }
351
+
352
+ @font-face {
353
+ font-family: 'Dejavu Serif';
354
+ font-style: italic;
355
+ font-weight: normal;
356
+ src: url("` + dejavuserifItalic_woff + `") format('woff');
357
+ }
358
+
359
+ @font-face {
360
+ font-family: 'Dejavu Serif';
361
+ font-style: italic;
362
+ font-weight: bold;
363
+ src: url("` + dejavuserifBoldItalic_woff + `") format('woff');
364
+ }
365
+
366
+ body {
367
+ font-family: 'Dejavu Serif', serif;
368
+ font-size: ` + (fontSize ? fontSize : '12px') + `;
369
+ }
370
+
371
+ .row {
372
+ display: -webkit-flex;
373
+ display: flex;
374
+ flex-wrap: wrap;
375
+ -webkit-flex-wrap: wrap;
376
+ page-break-inside: avoid !important;
377
+ }
378
+
379
+ .page-break {
380
+ page-break-before: always !important;
381
+ padding-top: 1px;
382
+ }
383
+
384
+ .cell {
385
+ box-sizing: border-box;
386
+ padding : 2px;
387
+ -webkit-flex: 1;
388
+ word-wrap: break-word;
389
+ }
390
+
391
+ .cell-no-padding {
392
+ box-sizing: border-box;
393
+ -webkit-flex: 1;
394
+ word-wrap: break-word;
395
+ }
396
+
397
+ .centered {
398
+ -webkit-justify-content: center;
399
+ -webkit-align-items: center;
400
+ display: -webkit-flex;
401
+ text-align: center;
402
+ }
403
+
404
+ .centered-left {
405
+ -webkit-align-items: center;
406
+ display: -webkit-flex;
407
+ -webkit-justify-content: flex-start;
408
+ }
409
+
410
+ .centered-right {
411
+ -webkit-justify-content: flex-end;
412
+ -webkit-align-items: center;
413
+ display: -webkit-flex;
414
+ }
415
+
416
+ .box {
417
+ border: 1px solid black;
418
+ margin: -1px 0px 0px -1px;
419
+ }
420
+
421
+ .boxNoBorder {
422
+ margin: -1px 0px 0px -1px;
423
+ }
424
+
425
+ pre {
426
+ white-space: pre-wrap; /* css-3 */
427
+ white-space: -moz-pre-wrap; /* Mozilla, since 1999 */
428
+ white-space: -pre-wrap; /* Opera 4-6 */
429
+ white-space: -o-pre-wrap; /* Opera 7 */
430
+ word-wrap: break-word; /* Internet Explorer 5.5+ */
431
+ font-size: 12px;
432
+ font-family: 'Dejavu Serif';
433
+ }
434
+ </style>
435
+ </head>
436
+ <body>
437
+ ` + html.replace(new RegExp('flex-basis:', 'g'), '-webkit-flex-basis:').replace(new RegExp('flex:', 'g'), '-webkit-flex:') + '</body>';
438
+
439
+ await page.setContent(content, { waitUntil: ['domcontentloaded', 'load', 'networkidle0'] });
440
+ await page.evaluateHandle('document.fonts.ready');
441
+
442
+ let tmpFileName = (pdfCnt++) + '-' + fileName.replace(new RegExp(/[^0-9\.a-zA-Z]/g), '');
443
+
444
+ await page.pdf({
445
+ scale: 1,
446
+ landscape: orientation === 'portrait' ? false : true,
447
+ format: 'letter',
448
+ margin: {
449
+ top: '1cm',
450
+ bottom: '1cm',
451
+ left: '1cm',
452
+ right: '1cm'
453
+ },
454
+ printBackground: true,
455
+ displayHeaderFooter: true,
456
+ headerTemplate: `
457
+ <style>
458
+ #header {
459
+ padding: 0 0 10px 10px !important;
460
+ }
461
+ </style>
462
+ <span></span>
463
+ `,
464
+ footerTemplate: `
465
+ <style>
466
+ #footer {
467
+ padding: 0 0 10px 10px !important;
468
+ font-size: 10px;
469
+ font-family: san-serif;
470
+ }
471
+ </style>
472
+ <div style="padding-bottom: 2px; padding-right: 15px; text-align: right; width: 100%;">
473
+
474
+ </div>
475
+ `,
476
+ path: path.join(__dirname, (tmpFileName)),
477
+ timeout: 0
478
+ });
479
+ await browser.close();
480
+
481
+ if (fs.existsSync(path.join(__dirname, (tmpFileName)))) {
482
+ fs.readFile(path.join(__dirname, (tmpFileName)), (errRead, data) => {
483
+ if (!errRead) {
484
+ fs.unlinkSync(path.join(__dirname, (tmpFileName)));
485
+ if (!upload) {
486
+ resolve('data:application/pdf;base64,' + Buffer.from(data).toString('base64'));
487
+ }
488
+ else {
489
+ let fileData = 'data:application/pdf;base64,' + Buffer.from(data).toString('base64');
490
+ this.callMethodInternal('uploadFileAndSave', fileName, fileData, (4 * Math.ceil(fileData.length / 3)), uploadFileOrder !== null ? uploadFileOrder : -1, uploadFileType, false, (err, res) => {
491
+ if (err) {
492
+ reject(err);
493
+ }
494
+ else {
495
+ resolve(res);
496
+ }
497
+ });
498
+ }
499
+ }
500
+ else {
501
+ reject('No file');
502
+ }
503
+ });
504
+ }
505
+ else {
506
+ reject('No tmp file');
507
+ console.log('No tmp file ', tmpFileName);
508
+ }
509
+ });
510
+ }
511
+ },
512
+ mergePDFResolve: {
513
+ check: new SimpleSchema({
514
+ fileKeys: {
515
+ type: Array
516
+ },
517
+ 'fileKeys.$': {
518
+ type: String
519
+ },
520
+ fileName: {
521
+ type: String
522
+ },
523
+ fileType: {
524
+ type: String,
525
+ optional: true
526
+ }
527
+ }),
528
+ function: function(fileKeys: string[], fileName: string, fileType?: string) {
529
+ return new Promise((resolve, reject) => {
530
+ this.callMethodInternal('getSignedUrls', fileKeys, 900, (errSigneds, resSigneds) => {
531
+ if (resSigneds && resSigneds.length) {
532
+ let promises = [];
533
+
534
+ resSigneds.forEach((signedUrl) => {
535
+ promises.push(this.callMethodInternal('getDataURIfromURL', signedUrl));
536
+ });
537
+
538
+ Promise.all(promises).then(async (fileDatas) => {
539
+ const mergedPdf = await PDFDocument.create();
540
+
541
+ for (let i = 0; i < fileDatas.length; i++) {
542
+
543
+ let fileData = fileDatas[i];
544
+
545
+ if (fileData) {
546
+ if (fileData.startsWith('data:application/pdf;base64,')) {
547
+ const pdf = await PDFDocument.load(fileData, { updateMetadata: false, parseSpeed: ParseSpeeds.Fastest });
548
+ const copiedPages = await mergedPdf.copyPages(pdf, pdf.getPageIndices());
549
+ copiedPages.forEach((page) => {
550
+ mergedPdf.addPage(page);
551
+ });
552
+ }
553
+ else if (fileData.startsWith('data:image/jpeg;base64,/9j/') || fileData.startsWith('data:image/png;base64,/9j/')) {
554
+ const pdf = await PDFDocument.create();
555
+ const img = await pdf.embedJpg(fileData);
556
+ const page = pdf.addPage();
557
+ let imgDim = img.scaleToFit(page.getWidth() * 0.75, page.getHeight() * 0.75);
558
+ page.drawImage(img, {
559
+ x: page.getWidth() / 2 - imgDim.width / 2,
560
+ y: page.getHeight() / 2 - imgDim.height / 2,
561
+ width: imgDim.width,
562
+ height: imgDim.height,
563
+ });
564
+ const copiedPages = await mergedPdf.copyPages(pdf, pdf.getPageIndices());
565
+ copiedPages.forEach((page) => {
566
+ mergedPdf.addPage(page);
567
+ });
568
+ }
569
+ else if (fileData.startsWith('data:image/png;base64,iVBOR')) {
570
+ const pdf = await PDFDocument.create();
571
+ const img = await pdf.embedPng(fileData);
572
+ const page = pdf.addPage();
573
+ let imgDim = img.scaleToFit(page.getWidth() * 0.75, page.getHeight() * 0.75);
574
+ page.drawImage(img, {
575
+ x: page.getWidth() / 2 - imgDim.width / 2,
576
+ y: page.getHeight() / 2 - imgDim.height / 2,
577
+ width: imgDim.width,
578
+ height: imgDim.height,
579
+ });
580
+ const copiedPages = await mergedPdf.copyPages(pdf, pdf.getPageIndices());
581
+ copiedPages.forEach((page) => {
582
+ mergedPdf.addPage(page);
583
+ });
584
+ }
585
+ else {
586
+ console.log('Error - unsupported!!', fileData.slice(0, 60));
587
+ }
588
+ }
589
+ else {
590
+ console.log('Error - no filedata!!', fileData);
591
+ }
592
+ }
593
+
594
+ let mergedPDFUint8 = await mergedPdf.save();
595
+
596
+ const b64PDF = 'data:application/pdf;base64,' + Buffer.from(mergedPDFUint8).toString('base64');
597
+
598
+ this.callMethodInternal('uploadFileAndSave', fileName, b64PDF, (4 * Math.ceil(b64PDF.length / 3)), -1, fileType, false, (errUp, resUp) => {
599
+ resolve(resUp);
600
+ });
601
+ });
602
+ }
603
+ else {
604
+ this.callMethodInternal('insertErrorLog', 'PDF Merge - getSignedUrls', [
605
+ fileKeys,
606
+ errSigneds
607
+ ]);
608
+ reject(errSigneds);
609
+ }
610
+ });
611
+ });
612
+ }
613
+ }
614
+ });
615
+ }