@hed-hog/core 0.0.400 → 0.0.402

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 (274) hide show
  1. package/dist/access-log/access-log.interceptor.d.ts +10 -0
  2. package/dist/access-log/access-log.interceptor.d.ts.map +1 -1
  3. package/dist/access-log/access-log.interceptor.js +15 -1
  4. package/dist/access-log/access-log.interceptor.js.map +1 -1
  5. package/dist/ai/ai.controller.d.ts +2 -0
  6. package/dist/ai/ai.controller.d.ts.map +1 -1
  7. package/dist/ai/ai.service.d.ts +86 -2
  8. package/dist/ai/ai.service.d.ts.map +1 -1
  9. package/dist/ai/ai.service.js +304 -23
  10. package/dist/ai/ai.service.js.map +1 -1
  11. package/dist/ai-instruction/ai-prompt-resolver.service.d.ts +12 -0
  12. package/dist/ai-instruction/ai-prompt-resolver.service.d.ts.map +1 -1
  13. package/dist/ai-instruction/ai-prompt-resolver.service.js +26 -0
  14. package/dist/ai-instruction/ai-prompt-resolver.service.js.map +1 -1
  15. package/dist/core.module.d.ts.map +1 -1
  16. package/dist/core.module.js +3 -0
  17. package/dist/core.module.js.map +1 -1
  18. package/dist/document-kit/document-kit.module.d.ts +3 -0
  19. package/dist/document-kit/document-kit.module.d.ts.map +1 -0
  20. package/dist/document-kit/document-kit.module.js +24 -0
  21. package/dist/document-kit/document-kit.module.js.map +1 -0
  22. package/dist/document-kit/document-kit.registry.d.ts +55 -0
  23. package/dist/document-kit/document-kit.registry.d.ts.map +1 -0
  24. package/dist/document-kit/document-kit.registry.js +91 -0
  25. package/dist/document-kit/document-kit.registry.js.map +1 -0
  26. package/dist/document-kit/document-kit.service.d.ts +49 -0
  27. package/dist/document-kit/document-kit.service.d.ts.map +1 -0
  28. package/dist/document-kit/document-kit.service.js +135 -0
  29. package/dist/document-kit/document-kit.service.js.map +1 -0
  30. package/dist/file/file-upload-ticket.service.d.ts +1 -1
  31. package/dist/file/file.controller.d.ts +3 -3
  32. package/dist/file/file.service.d.ts +136 -13
  33. package/dist/file/file.service.d.ts.map +1 -1
  34. package/dist/file/file.service.js +297 -27
  35. package/dist/file/file.service.js.map +1 -1
  36. package/dist/file/mcp-file-source.schema.d.ts.map +1 -1
  37. package/dist/file/mcp-file-source.schema.js +8 -5
  38. package/dist/file/mcp-file-source.schema.js.map +1 -1
  39. package/dist/file/provider/abstract.provider.d.ts +33 -0
  40. package/dist/file/provider/abstract.provider.d.ts.map +1 -1
  41. package/dist/file/provider/abstract.provider.js +9 -0
  42. package/dist/file/provider/abstract.provider.js.map +1 -1
  43. package/dist/file/provider/s3-multipart.util.d.ts +17 -0
  44. package/dist/file/provider/s3-multipart.util.d.ts.map +1 -0
  45. package/dist/file/provider/s3-multipart.util.js +88 -0
  46. package/dist/file/provider/s3-multipart.util.js.map +1 -0
  47. package/dist/file/provider/s3.provider.d.ts +9 -1
  48. package/dist/file/provider/s3.provider.d.ts.map +1 -1
  49. package/dist/file/provider/s3.provider.js +16 -0
  50. package/dist/file/provider/s3.provider.js.map +1 -1
  51. package/dist/file/provider/spaces.provider.d.ts +10 -1
  52. package/dist/file/provider/spaces.provider.d.ts.map +1 -1
  53. package/dist/file/provider/spaces.provider.js +17 -0
  54. package/dist/file/provider/spaces.provider.js.map +1 -1
  55. package/dist/index.d.ts +5 -0
  56. package/dist/index.d.ts.map +1 -1
  57. package/dist/index.js +5 -0
  58. package/dist/index.js.map +1 -1
  59. package/dist/integration-profile/integration-profile.controller.d.ts +1 -0
  60. package/dist/integration-profile/integration-profile.controller.d.ts.map +1 -1
  61. package/dist/integration-profile/integration-profile.secrets.d.ts.map +1 -1
  62. package/dist/integration-profile/integration-profile.secrets.js +26 -0
  63. package/dist/integration-profile/integration-profile.secrets.js.map +1 -1
  64. package/dist/integration-profile/integration-profile.service.d.ts +1 -0
  65. package/dist/integration-profile/integration-profile.service.d.ts.map +1 -1
  66. package/dist/integration-profile/integration-profile.service.js +3 -3
  67. package/dist/integration-profile/integration-profile.service.js.map +1 -1
  68. package/dist/integration-profile/testers/ai.testers.d.ts.map +1 -1
  69. package/dist/integration-profile/testers/ai.testers.js +46 -8
  70. package/dist/integration-profile/testers/ai.testers.js.map +1 -1
  71. package/dist/integration-profile/testers/http-probe.d.ts.map +1 -1
  72. package/dist/integration-profile/testers/http-probe.js +5 -3
  73. package/dist/integration-profile/testers/http-probe.js.map +1 -1
  74. package/dist/integration-profile/testers/integration-tester.types.d.ts +5 -0
  75. package/dist/integration-profile/testers/integration-tester.types.d.ts.map +1 -1
  76. package/dist/mail/mail.service.d.ts.map +1 -1
  77. package/dist/mail/mail.service.js +16 -1
  78. package/dist/mail/mail.service.js.map +1 -1
  79. package/dist/mcp/mcp-server.service.d.ts.map +1 -1
  80. package/dist/mcp/mcp-server.service.js +10 -1
  81. package/dist/mcp/mcp-server.service.js.map +1 -1
  82. package/dist/mcp/mcp.module.d.ts.map +1 -1
  83. package/dist/mcp/mcp.module.js +2 -0
  84. package/dist/mcp/mcp.module.js.map +1 -1
  85. package/dist/mcp/tools/core-access-log.mcp-tools.d.ts +17 -0
  86. package/dist/mcp/tools/core-access-log.mcp-tools.d.ts.map +1 -0
  87. package/dist/mcp/tools/core-access-log.mcp-tools.js +74 -0
  88. package/dist/mcp/tools/core-access-log.mcp-tools.js.map +1 -0
  89. package/dist/mcp/tools/core-files.mcp-tools.js +4 -4
  90. package/dist/mcp/tools/core-files.mcp-tools.js.map +1 -1
  91. package/dist/meeting/meeting-provider.registry.d.ts +72 -0
  92. package/dist/meeting/meeting-provider.registry.d.ts.map +1 -1
  93. package/dist/meeting/meeting-provider.registry.js.map +1 -1
  94. package/dist/oauth/oauth-token-broker.service.d.ts +50 -1
  95. package/dist/oauth/oauth-token-broker.service.d.ts.map +1 -1
  96. package/dist/oauth/oauth-token-broker.service.js +105 -3
  97. package/dist/oauth/oauth-token-broker.service.js.map +1 -1
  98. package/dist/oauth/providers/microsoft-entra-id.provider.d.ts +6 -0
  99. package/dist/oauth/providers/microsoft-entra-id.provider.d.ts.map +1 -1
  100. package/dist/oauth/providers/microsoft-entra-id.provider.js +30 -4
  101. package/dist/oauth/providers/microsoft-entra-id.provider.js.map +1 -1
  102. package/dist/pdf/document/charts/chart-bar.d.ts +24 -0
  103. package/dist/pdf/document/charts/chart-bar.d.ts.map +1 -0
  104. package/dist/pdf/document/charts/chart-bar.js +117 -0
  105. package/dist/pdf/document/charts/chart-bar.js.map +1 -0
  106. package/dist/pdf/document/charts/chart-donut.d.ts +16 -0
  107. package/dist/pdf/document/charts/chart-donut.d.ts.map +1 -0
  108. package/dist/pdf/document/charts/chart-donut.js +89 -0
  109. package/dist/pdf/document/charts/chart-donut.js.map +1 -0
  110. package/dist/pdf/document/charts/chart-gauge.d.ts +15 -0
  111. package/dist/pdf/document/charts/chart-gauge.d.ts.map +1 -0
  112. package/dist/pdf/document/charts/chart-gauge.js +60 -0
  113. package/dist/pdf/document/charts/chart-gauge.js.map +1 -0
  114. package/dist/pdf/document/charts/chart-line.d.ts +29 -0
  115. package/dist/pdf/document/charts/chart-line.d.ts.map +1 -0
  116. package/dist/pdf/document/charts/chart-line.js +89 -0
  117. package/dist/pdf/document/charts/chart-line.js.map +1 -0
  118. package/dist/pdf/document/charts/chart-primitives.d.ts +64 -0
  119. package/dist/pdf/document/charts/chart-primitives.d.ts.map +1 -0
  120. package/dist/pdf/document/charts/chart-primitives.js +110 -0
  121. package/dist/pdf/document/charts/chart-primitives.js.map +1 -0
  122. package/dist/pdf/document/charts/chart-radar.d.ts +13 -0
  123. package/dist/pdf/document/charts/chart-radar.d.ts.map +1 -0
  124. package/dist/pdf/document/charts/chart-radar.js +83 -0
  125. package/dist/pdf/document/charts/chart-radar.js.map +1 -0
  126. package/dist/pdf/document/charts/chart-scale.d.ts +39 -0
  127. package/dist/pdf/document/charts/chart-scale.d.ts.map +1 -0
  128. package/dist/pdf/document/charts/chart-scale.js +118 -0
  129. package/dist/pdf/document/charts/chart-scale.js.map +1 -0
  130. package/dist/pdf/document/charts/index.d.ts +8 -0
  131. package/dist/pdf/document/charts/index.d.ts.map +1 -0
  132. package/dist/pdf/document/charts/index.js +24 -0
  133. package/dist/pdf/document/charts/index.js.map +1 -0
  134. package/dist/pdf/document/index.d.ts +8 -0
  135. package/dist/pdf/document/index.d.ts.map +1 -0
  136. package/dist/pdf/document/index.js +24 -0
  137. package/dist/pdf/document/index.js.map +1 -0
  138. package/dist/pdf/document/pdf-document.chrome.d.ts +20 -0
  139. package/dist/pdf/document/pdf-document.chrome.d.ts.map +1 -0
  140. package/dist/pdf/document/pdf-document.chrome.js +36 -0
  141. package/dist/pdf/document/pdf-document.chrome.js.map +1 -0
  142. package/dist/pdf/document/pdf-document.css.d.ts +20 -0
  143. package/dist/pdf/document/pdf-document.css.d.ts.map +1 -0
  144. package/dist/pdf/document/pdf-document.css.js +327 -0
  145. package/dist/pdf/document/pdf-document.css.js.map +1 -0
  146. package/dist/pdf/document/pdf-document.renderer.d.ts +10 -0
  147. package/dist/pdf/document/pdf-document.renderer.d.ts.map +1 -0
  148. package/dist/pdf/document/pdf-document.renderer.js +226 -0
  149. package/dist/pdf/document/pdf-document.renderer.js.map +1 -0
  150. package/dist/pdf/document/pdf-document.service.d.ts +27 -0
  151. package/dist/pdf/document/pdf-document.service.d.ts.map +1 -0
  152. package/dist/pdf/document/pdf-document.service.js +81 -0
  153. package/dist/pdf/document/pdf-document.service.js.map +1 -0
  154. package/dist/pdf/document/pdf-document.theme.d.ts +41 -0
  155. package/dist/pdf/document/pdf-document.theme.d.ts.map +1 -0
  156. package/dist/pdf/document/pdf-document.theme.js +105 -0
  157. package/dist/pdf/document/pdf-document.theme.js.map +1 -0
  158. package/dist/pdf/document/pdf-document.types.d.ts +164 -0
  159. package/dist/pdf/document/pdf-document.types.d.ts.map +1 -0
  160. package/dist/pdf/document/pdf-document.types.js +18 -0
  161. package/dist/pdf/document/pdf-document.types.js.map +1 -0
  162. package/dist/pdf/pdf.module.d.ts.map +1 -1
  163. package/dist/pdf/pdf.module.js +3 -2
  164. package/dist/pdf/pdf.module.js.map +1 -1
  165. package/dist/pdf/pdf.service.d.ts +75 -1
  166. package/dist/pdf/pdf.service.d.ts.map +1 -1
  167. package/dist/pdf/pdf.service.js +167 -63
  168. package/dist/pdf/pdf.service.js.map +1 -1
  169. package/dist/pdf/templates/commercial-proposal.template.d.ts +96 -0
  170. package/dist/pdf/templates/commercial-proposal.template.d.ts.map +1 -0
  171. package/dist/pdf/templates/commercial-proposal.template.js +276 -0
  172. package/dist/pdf/templates/commercial-proposal.template.js.map +1 -0
  173. package/dist/setting/favicon.controller.d.ts +26 -0
  174. package/dist/setting/favicon.controller.d.ts.map +1 -0
  175. package/dist/setting/favicon.controller.js +130 -0
  176. package/dist/setting/favicon.controller.js.map +1 -0
  177. package/dist/setting/setting.module.d.ts.map +1 -1
  178. package/dist/setting/setting.module.js +2 -1
  179. package/dist/setting/setting.module.js.map +1 -1
  180. package/dist/setting/setting.service.d.ts.map +1 -1
  181. package/dist/setting/setting.service.js +3 -0
  182. package/dist/setting/setting.service.js.map +1 -1
  183. package/dist/task/task.service.d.ts +6 -0
  184. package/dist/task/task.service.d.ts.map +1 -1
  185. package/dist/task/task.service.js +44 -13
  186. package/dist/task/task.service.js.map +1 -1
  187. package/dist/whatsapp-sender/whatsapp-sender.service.d.ts +35 -2
  188. package/dist/whatsapp-sender/whatsapp-sender.service.d.ts.map +1 -1
  189. package/dist/whatsapp-sender/whatsapp-sender.service.js +107 -22
  190. package/dist/whatsapp-sender/whatsapp-sender.service.js.map +1 -1
  191. package/hedhog/data/integration_type.yaml +6 -0
  192. package/hedhog/data/route.yaml +8 -0
  193. package/hedhog/data/setting_group.yaml +52 -0
  194. package/hedhog/frontend/app/configurations/[slug]/components/setting-field.test.tsx.ejs +85 -2
  195. package/hedhog/frontend/app/configurations/[slug]/components/setting-field.tsx.ejs +576 -491
  196. package/hedhog/frontend/app/users/simulate-access-dialog.test.tsx.ejs +29 -50
  197. package/hedhog/frontend/app/users/simulate-access-dialog.tsx.ejs +146 -50
  198. package/hedhog/frontend/messages/en.json +81 -2
  199. package/hedhog/frontend/messages/pt.json +81 -2
  200. package/hedhog/table/file.yaml +3 -1
  201. package/package.json +5 -5
  202. package/src/access-log/access-log.interceptor.spec.ts +50 -0
  203. package/src/access-log/access-log.interceptor.ts +18 -0
  204. package/src/ai/ai-attachment.fragments.spec.ts +56 -3
  205. package/src/ai/ai.service.responses.spec.ts +429 -0
  206. package/src/ai/ai.service.ts +409 -27
  207. package/src/ai-instruction/ai-prompt-resolver.service.spec.ts +44 -0
  208. package/src/ai-instruction/ai-prompt-resolver.service.ts +29 -0
  209. package/src/core.module.ts +3 -0
  210. package/src/document-kit/document-kit.module.ts +12 -0
  211. package/src/document-kit/document-kit.registry.ts +125 -0
  212. package/src/document-kit/document-kit.service.spec.ts +156 -0
  213. package/src/document-kit/document-kit.service.ts +173 -0
  214. package/src/file/file-direct-upload.spec.ts +344 -0
  215. package/src/file/file.service.spec.ts +168 -1
  216. package/src/file/file.service.ts +435 -36
  217. package/src/file/mcp-file-source.schema.ts +8 -5
  218. package/src/file/provider/abstract.provider.ts +57 -0
  219. package/src/file/provider/s3-multipart.spec.ts +123 -0
  220. package/src/file/provider/s3-multipart.util.ts +126 -0
  221. package/src/file/provider/s3.provider.ts +65 -1
  222. package/src/file/provider/spaces.provider.ts +67 -1
  223. package/src/index.ts +5 -0
  224. package/src/integration-profile/integration-profile.secrets.ts +26 -0
  225. package/src/integration-profile/integration-profile.service.ts +1 -0
  226. package/src/integration-profile/testers/ai.testers.ts +70 -5
  227. package/src/integration-profile/testers/http-probe.ts +5 -3
  228. package/src/integration-profile/testers/integration-tester.types.ts +5 -0
  229. package/src/integration-profile/testers/oauth.testers.spec.ts +13 -0
  230. package/src/integration-profile/testers/remaining.testers.spec.ts +65 -1
  231. package/src/integration-profile/testers/tester-coverage.spec.ts +12 -0
  232. package/src/mail/mail.service.spec.ts +25 -0
  233. package/src/mail/mail.service.ts +18 -1
  234. package/src/mcp/mcp-server.service.spec.ts +16 -0
  235. package/src/mcp/mcp-server.service.ts +10 -1
  236. package/src/mcp/mcp.module.ts +2 -0
  237. package/src/mcp/tools/core-access-log.mcp-tools.ts +66 -0
  238. package/src/mcp/tools/core-files.mcp-tools.ts +4 -4
  239. package/src/meeting/meeting-provider.registry.ts +80 -0
  240. package/src/oauth/oauth-token-broker.service.spec.ts +108 -0
  241. package/src/oauth/oauth-token-broker.service.ts +129 -2
  242. package/src/oauth/providers/microsoft-entra-id.provider.spec.ts +133 -0
  243. package/src/oauth/providers/microsoft-entra-id.provider.ts +29 -2
  244. package/src/pdf/document/charts/chart-bar.ts +217 -0
  245. package/src/pdf/document/charts/chart-donut.ts +163 -0
  246. package/src/pdf/document/charts/chart-gauge.ts +94 -0
  247. package/src/pdf/document/charts/chart-line.ts +159 -0
  248. package/src/pdf/document/charts/chart-primitives.ts +188 -0
  249. package/src/pdf/document/charts/chart-radar.ts +136 -0
  250. package/src/pdf/document/charts/chart-scale.spec.ts +93 -0
  251. package/src/pdf/document/charts/chart-scale.ts +141 -0
  252. package/src/pdf/document/charts/charts.spec.ts +157 -0
  253. package/src/pdf/document/charts/index.ts +7 -0
  254. package/src/pdf/document/index.ts +7 -0
  255. package/src/pdf/document/pdf-document.chrome.ts +38 -0
  256. package/src/pdf/document/pdf-document.css.ts +326 -0
  257. package/src/pdf/document/pdf-document.renderer.spec.ts +172 -0
  258. package/src/pdf/document/pdf-document.renderer.ts +317 -0
  259. package/src/pdf/document/pdf-document.service.ts +77 -0
  260. package/src/pdf/document/pdf-document.theme.ts +146 -0
  261. package/src/pdf/document/pdf-document.types.ts +149 -0
  262. package/src/pdf/pdf.module.ts +3 -2
  263. package/src/pdf/pdf.service.spec.ts +131 -0
  264. package/src/pdf/pdf.service.ts +256 -82
  265. package/src/pdf/templates/commercial-proposal.template.spec.ts +177 -0
  266. package/src/pdf/templates/commercial-proposal.template.ts +400 -0
  267. package/src/setting/favicon.controller.spec.ts +92 -0
  268. package/src/setting/favicon.controller.ts +135 -0
  269. package/src/setting/setting.module.ts +2 -1
  270. package/src/setting/setting.service.ts +3 -0
  271. package/src/task/task.service.spec.ts +77 -1
  272. package/src/task/task.service.ts +58 -14
  273. package/src/whatsapp-sender/whatsapp-sender.service.spec.ts +263 -0
  274. package/src/whatsapp-sender/whatsapp-sender.service.ts +154 -16
@@ -14,10 +14,12 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
14
14
  var PdfService_1;
15
15
  Object.defineProperty(exports, "__esModule", { value: true });
16
16
  exports.PdfService = void 0;
17
+ exports.buildPdfPageOptions = buildPdfPageOptions;
17
18
  const common_1 = require("@nestjs/common");
18
19
  const config_1 = require("@nestjs/config");
19
20
  const brand_asset_service_1 = require("../setting/brand-asset.service");
20
21
  const setting_service_1 = require("../setting/setting.service");
22
+ const commercial_proposal_template_1 = require("./templates/commercial-proposal.template");
21
23
  const hcode_institutional_template_1 = require("./templates/hcode-institutional.template");
22
24
  const hcode_theme_1 = require("./themes/hcode.theme");
23
25
  // ─────────────────────────────────────────────────────────────────────────────
@@ -30,6 +32,50 @@ function parsePxSize(value, fallback) {
30
32
  const match = /^([\d.]+)px$/.exec(value.trim());
31
33
  return match ? Math.round(Number(match[1])) : fallback;
32
34
  }
35
+ const ZERO_MARGIN = { top: '0', right: '0', bottom: '0', left: '0' };
36
+ /**
37
+ * With `displayHeaderFooter` on, a template left undefined makes Chromium fall
38
+ * back to its own — the page URL and the print date. The unused slot gets
39
+ * something deliberately empty instead.
40
+ */
41
+ const EMPTY_TEMPLATE = '<span></span>';
42
+ const DEFAULT_MAX_CONCURRENCY = 2;
43
+ const DEFAULT_QUEUE_WAIT_MS = 30000;
44
+ /**
45
+ * Builds the object handed to `page.pdf()`.
46
+ *
47
+ * Assembled key by key on purpose: a caller that passes none of the optional
48
+ * fields has to get exactly the object `page.pdf()` received before they
49
+ * existed — Chromium changes behaviour on the mere presence of some of them
50
+ * (`displayHeaderFooter` with a single template filled in brings back its own
51
+ * URL/date footer).
52
+ */
53
+ function buildPdfPageOptions(options) {
54
+ var _a, _b, _c, _d, _e, _f, _g, _h;
55
+ const pdfOptions = options.width && options.height
56
+ ? {
57
+ width: options.width,
58
+ height: options.height,
59
+ printBackground: (_a = options.printBackground) !== null && _a !== void 0 ? _a : true,
60
+ margin: (_b = options.margin) !== null && _b !== void 0 ? _b : ZERO_MARGIN,
61
+ }
62
+ : {
63
+ format: (_c = options.format) !== null && _c !== void 0 ? _c : 'A4',
64
+ printBackground: (_d = options.printBackground) !== null && _d !== void 0 ? _d : true,
65
+ landscape: (_e = options.landscape) !== null && _e !== void 0 ? _e : false,
66
+ margin: (_f = options.margin) !== null && _f !== void 0 ? _f : ZERO_MARGIN,
67
+ };
68
+ if (options.displayHeaderFooter) {
69
+ pdfOptions.displayHeaderFooter = true;
70
+ pdfOptions.headerTemplate = (_g = options.headerTemplate) !== null && _g !== void 0 ? _g : EMPTY_TEMPLATE;
71
+ pdfOptions.footerTemplate = (_h = options.footerTemplate) !== null && _h !== void 0 ? _h : EMPTY_TEMPLATE;
72
+ }
73
+ if (options.scale !== undefined)
74
+ pdfOptions.scale = options.scale;
75
+ if (options.pageRanges)
76
+ pdfOptions.pageRanges = options.pageRanges;
77
+ return pdfOptions;
78
+ }
33
79
  // ─────────────────────────────────────────────────────────────────────────────
34
80
  // Service
35
81
  // ─────────────────────────────────────────────────────────────────────────────
@@ -39,6 +85,9 @@ let PdfService = PdfService_1 = class PdfService {
39
85
  this.brandAsset = brandAsset;
40
86
  this.configService = configService;
41
87
  this.logger = new common_1.Logger(PdfService_1.name);
88
+ /** Renders holding a Chromium right now, and the ones waiting for a slot. */
89
+ this.activeRenders = 0;
90
+ this.renderQueue = [];
42
91
  }
43
92
  // ── Theme config ─────────────────────────────────────────────────────────
44
93
  /**
@@ -99,15 +148,107 @@ let PdfService = PdfService_1 = class PdfService {
99
148
  };
100
149
  }
101
150
  }
102
- // ── HTML → PDF ────────────────────────────────────────────────────────────
103
151
  /**
104
- * Renders an HTML string to a PDF buffer using Playwright/Chromium.
152
+ * Theme for commercial documents (proposals and the like): the area theme
153
+ * plus the legal footer, partner line and font stacks of the `pdf` group.
154
+ * The logo is embedded as a data URI so the render does not depend on the
155
+ * API reaching its own public URL.
156
+ */
157
+ async loadCommercialDocumentTheme(area = 'training') {
158
+ var _a, _b, _c, _d, _e;
159
+ const base = await this.loadThemeConfig(area);
160
+ let values = {};
161
+ try {
162
+ values = await this.settingService.getSettingValues([
163
+ 'pdf-legal-footer',
164
+ 'pdf-partner-line',
165
+ 'pdf-font-family',
166
+ 'pdf-font-mono',
167
+ ]);
168
+ }
169
+ catch (_f) {
170
+ this.logger.warn('Could not load commercial PDF settings – using defaults.');
171
+ }
172
+ const logoOverride = base.logoOverride
173
+ ? ((_a = (await this.brandAsset.fetchAsDataUri(base.logoOverride))) !== null && _a !== void 0 ? _a : base.logoOverride)
174
+ : '';
175
+ return Object.assign(Object.assign({}, base), { logoOverride, legalFooter: String((_b = values['pdf-legal-footer']) !== null && _b !== void 0 ? _b : '').trim(), partnerLine: String((_c = values['pdf-partner-line']) !== null && _c !== void 0 ? _c : '').trim(), fontFamily: String((_d = values['pdf-font-family']) !== null && _d !== void 0 ? _d : '').trim() || "'Inter', sans-serif", fontMono: String((_e = values['pdf-font-mono']) !== null && _e !== void 0 ? _e : '').trim() || "'JetBrains Mono', monospace" });
176
+ }
177
+ /**
178
+ * Renders a commercial proposal with the installation's branding. Returns
179
+ * the HTML too, so the caller can keep the exact source of what was printed.
180
+ */
181
+ async renderCommercialProposal(data, area = 'training') {
182
+ const theme = await this.loadCommercialDocumentTheme(area);
183
+ const { html, pdfOptions } = (0, commercial_proposal_template_1.commercialProposalTemplate)(data, theme);
184
+ const buffer = await this.generatePdfFromHtml(html, pdfOptions);
185
+ return { html, buffer };
186
+ }
187
+ // ── Chromium runtime ──────────────────────────────────────────────────────
188
+ get maxConcurrency() {
189
+ const raw = Number(this.configService.get('PDF_MAX_CONCURRENCY'));
190
+ return Number.isFinite(raw) && raw >= 1 ? Math.floor(raw) : DEFAULT_MAX_CONCURRENCY;
191
+ }
192
+ get queueWaitMs() {
193
+ const raw = Number(this.configService.get('PDF_QUEUE_WAIT_MS'));
194
+ return Number.isFinite(raw) && raw >= 0 ? Math.floor(raw) : DEFAULT_QUEUE_WAIT_MS;
195
+ }
196
+ /**
197
+ * Every render launches a Chromium of its own, which costs a few hundred MB.
198
+ * The API pod is capped well below what a burst of simultaneous report
199
+ * downloads would ask for, and an OOM kill takes the whole API down — not
200
+ * just the PDF. So renders queue, and a queue that waits too long answers a
201
+ * retryable 503 instead of dragging the process down with it.
202
+ */
203
+ async acquireRenderSlot(label) {
204
+ if (this.activeRenders < this.maxConcurrency) {
205
+ this.activeRenders += 1;
206
+ }
207
+ else {
208
+ await new Promise((resolve, reject) => {
209
+ const entry = {
210
+ resolve,
211
+ reject,
212
+ timer: setTimeout(() => {
213
+ const index = this.renderQueue.indexOf(entry);
214
+ if (index >= 0)
215
+ this.renderQueue.splice(index, 1);
216
+ this.logger.warn(`PDF render queue is saturated; gave up after ${this.queueWaitMs}ms${label ? ` (${label})` : ''}.`);
217
+ reject(new common_1.ServiceUnavailableException('The server is busy rendering other documents. Try again in a moment.'));
218
+ }, this.queueWaitMs),
219
+ };
220
+ this.renderQueue.push(entry);
221
+ });
222
+ // Resolved by releaseRenderSlot, which hands its slot over without
223
+ // decrementing — the counter already accounts for this render.
224
+ }
225
+ let released = false;
226
+ return () => {
227
+ if (released)
228
+ return;
229
+ released = true;
230
+ this.releaseRenderSlot();
231
+ };
232
+ }
233
+ releaseRenderSlot() {
234
+ const next = this.renderQueue.shift();
235
+ if (next) {
236
+ clearTimeout(next.timer);
237
+ next.resolve();
238
+ return;
239
+ }
240
+ this.activeRenders = Math.max(0, this.activeRenders - 1);
241
+ }
242
+ /**
243
+ * Opens a Chromium page with the HTML loaded and hands it to `run`, taking
244
+ * care of the slot, the viewport and the teardown.
105
245
  *
106
246
  * Uses dynamic `import()` via `new Function` to remain compatible with
107
247
  * CommonJS bundle output (same pattern as operations.service.ts).
108
248
  */
109
- async generatePdfFromHtml(html, options = {}) {
110
- var _a, _b, _c, _d, _e, _f, _g;
249
+ async renderWithChromium(kind, html, options, run) {
250
+ var _a, _b;
251
+ const release = await this.acquireRenderSlot(options.label);
111
252
  const executablePath = this.configService.get('CHROMIUM_EXECUTABLE_PATH');
112
253
  const noSandbox = this.configService.get('CHROMIUM_NO_SANDBOX') === 'true';
113
254
  const launchArgs = noSandbox
@@ -128,43 +269,42 @@ let PdfService = PdfService_1 = class PdfService {
128
269
  width: parsePxSize(options.width, 794),
129
270
  height: parsePxSize(options.height, 1123),
130
271
  });
131
- await page.setContent(html, { waitUntil: 'networkidle' });
132
- const pdfBuffer = await page.pdf(options.width && options.height
133
- ? {
134
- width: options.width,
135
- height: options.height,
136
- printBackground: (_a = options.printBackground) !== null && _a !== void 0 ? _a : true,
137
- margin: (_b = options.margin) !== null && _b !== void 0 ? _b : { top: '0', right: '0', bottom: '0', left: '0' },
138
- }
139
- : {
140
- format: (_c = options.format) !== null && _c !== void 0 ? _c : 'A4',
141
- printBackground: (_d = options.printBackground) !== null && _d !== void 0 ? _d : true,
142
- landscape: (_e = options.landscape) !== null && _e !== void 0 ? _e : false,
143
- margin: (_f = options.margin) !== null && _f !== void 0 ? _f : { top: '0', right: '0', bottom: '0', left: '0' },
144
- });
145
- return Buffer.from(pdfBuffer);
272
+ await page.setContent(html, Object.assign({ waitUntil: (_a = options.waitUntil) !== null && _a !== void 0 ? _a : 'networkidle' }, (options.timeoutMs ? { timeout: options.timeoutMs } : {})));
273
+ if (options.readyExpression) {
274
+ await page.waitForFunction(options.readyExpression, undefined, Object.assign({}, (options.timeoutMs ? { timeout: options.timeoutMs } : {})));
275
+ }
276
+ return Buffer.from(await run(page));
146
277
  }
147
278
  catch (error) {
148
279
  const errorMessage = error instanceof Error ? error.message : String(error);
149
- const errorStack = error instanceof Error ? ((_g = error.stack) !== null && _g !== void 0 ? _g : errorMessage) : String(error);
280
+ const errorStack = error instanceof Error ? ((_b = error.stack) !== null && _b !== void 0 ? _b : errorMessage) : String(error);
150
281
  const missingRuntime = /Cannot find package ['"]playwright['"]|Cannot find module ['"]playwright['"]|Executable doesn't exist|browserType\.launch|Failed to launch|Please run the following command/i.test(errorMessage);
151
- this.logger.error(`PDF generation failed. ${errorMessage}`, errorStack);
282
+ this.logger.error(`${kind} generation failed. ${errorMessage}`, errorStack);
152
283
  if (missingRuntime) {
153
284
  throw new common_1.InternalServerErrorException('Playwright runtime is not available. Run `pnpm --filter api run playwright:install` in the API environment.');
154
285
  }
155
- throw new common_1.InternalServerErrorException(`PDF generation failed: ${errorMessage}`);
286
+ throw new common_1.InternalServerErrorException(`${kind} generation failed: ${errorMessage}`);
156
287
  }
157
288
  finally {
158
289
  if (browser) {
159
290
  try {
160
291
  await browser.close();
161
292
  }
162
- catch (_h) {
293
+ catch (_c) {
163
294
  // Ignore close errors
164
295
  }
165
296
  }
297
+ release();
166
298
  }
167
299
  }
300
+ // ── HTML → PDF ────────────────────────────────────────────────────────────
301
+ /**
302
+ * Renders an HTML string to a PDF buffer using Playwright/Chromium.
303
+ */
304
+ async generatePdfFromHtml(html, options = {}) {
305
+ const pdfOptions = buildPdfPageOptions(options);
306
+ return this.renderWithChromium('PDF', html, options, (page) => page.pdf(pdfOptions));
307
+ }
168
308
  // ── HTML → PNG image ──────────────────────────────────────────────────────
169
309
  /**
170
310
  * Renders an HTML string to a PNG image buffer via a Playwright/Chromium
@@ -174,48 +314,12 @@ let PdfService = PdfService_1 = class PdfService {
174
314
  * certificate thumbnails on the web/app.
175
315
  */
176
316
  async generateImageFromHtml(html, options = {}) {
177
- var _a;
178
- const executablePath = this.configService.get('CHROMIUM_EXECUTABLE_PATH');
179
- const noSandbox = this.configService.get('CHROMIUM_NO_SANDBOX') === 'true';
180
- const launchArgs = noSandbox
181
- ? ['--no-sandbox', '--disable-setuid-sandbox', '--disable-dev-shm-usage']
182
- : [];
183
317
  const width = parsePxSize(options.width, 794);
184
318
  const height = parsePxSize(options.height, 1123);
185
- let browser = null;
186
- try {
187
- const importPlaywright = new Function('moduleName', 'return import(moduleName);');
188
- const playwright = await importPlaywright('playwright');
189
- browser = await playwright.chromium.launch(Object.assign(Object.assign({ headless: true }, (executablePath ? { executablePath } : {})), { args: launchArgs }));
190
- const page = await browser.newPage();
191
- await page.setViewportSize({ width, height });
192
- await page.setContent(html, { waitUntil: 'networkidle' });
193
- const imageBuffer = await page.screenshot({
194
- type: 'png',
195
- clip: { x: 0, y: 0, width, height },
196
- });
197
- return Buffer.from(imageBuffer);
198
- }
199
- catch (error) {
200
- const errorMessage = error instanceof Error ? error.message : String(error);
201
- const errorStack = error instanceof Error ? ((_a = error.stack) !== null && _a !== void 0 ? _a : errorMessage) : String(error);
202
- const missingRuntime = /Cannot find package ['"]playwright['"]|Cannot find module ['"]playwright['"]|Executable doesn't exist|browserType\.launch|Failed to launch|Please run the following command/i.test(errorMessage);
203
- this.logger.error(`Image generation failed. ${errorMessage}`, errorStack);
204
- if (missingRuntime) {
205
- throw new common_1.InternalServerErrorException('Playwright runtime is not available. Run `pnpm --filter api run playwright:install` in the API environment.');
206
- }
207
- throw new common_1.InternalServerErrorException(`Image generation failed: ${errorMessage}`);
208
- }
209
- finally {
210
- if (browser) {
211
- try {
212
- await browser.close();
213
- }
214
- catch (_b) {
215
- // Ignore close errors
216
- }
217
- }
218
- }
319
+ return this.renderWithChromium('Image', html, options, (page) => page.screenshot({
320
+ type: 'png',
321
+ clip: { x: 0, y: 0, width, height },
322
+ }));
219
323
  }
220
324
  // ── Template engine ───────────────────────────────────────────────────────
221
325
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"pdf.service.js","sourceRoot":"","sources":["../../src/pdf/pdf.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pdf.service.js","sourceRoot":"","sources":["../../src/pdf/pdf.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,96 @@
1
+ import { PdfThemeConfig } from '../interfaces/pdf-theme-config.interface';
2
+ import type { PdfGenerateOptions } from '../pdf.service';
3
+ /**
4
+ * Branding for commercial documents: the area theme plus the lines that used to
5
+ * be hardcoded per company (legal footer, partner line) and the font stacks.
6
+ * Everything comes from the `pdf` setting group, so another installation
7
+ * changes the look without touching code.
8
+ */
9
+ export interface CommercialDocumentTheme extends PdfThemeConfig {
10
+ /** Legal line repeated in the footer of every page (company, tax id, address). */
11
+ legalFooter: string;
12
+ /** Small line under the cover metadata (partners, certifications). */
13
+ partnerLine: string;
14
+ fontFamily: string;
15
+ fontMono: string;
16
+ }
17
+ /**
18
+ * Blocks a section is made of. Strings are escaped by the template; only
19
+ * `html` goes through as is, so the caller must hand it already sanitized.
20
+ */
21
+ export type CommercialProposalBlock = {
22
+ type: 'html';
23
+ html: string;
24
+ } | {
25
+ type: 'paragraphs';
26
+ text: string;
27
+ } | {
28
+ type: 'list';
29
+ items: string[];
30
+ } | {
31
+ type: 'callout';
32
+ title?: string;
33
+ text: string;
34
+ tone?: 'accent' | 'neutral';
35
+ } | {
36
+ type: 'table';
37
+ headers: string[];
38
+ rows: string[][];
39
+ /** Per column; defaults to left. */
40
+ align?: Array<'left' | 'right'>;
41
+ } | {
42
+ type: 'totals';
43
+ rows: Array<{
44
+ label: string;
45
+ value: string;
46
+ emphasis?: boolean;
47
+ }>;
48
+ };
49
+ export interface CommercialProposalSection {
50
+ /** Short uppercase label next to the number: `03 · INVESTIMENTO`. */
51
+ eyebrow: string;
52
+ /** Written as a short sentence, as the proposal standard asks. */
53
+ title: string;
54
+ blocks: CommercialProposalBlock[];
55
+ }
56
+ export interface CommercialProposalSignatory {
57
+ party: string;
58
+ name?: string;
59
+ role?: string;
60
+ }
61
+ export interface CommercialProposalData {
62
+ locale?: string;
63
+ /** Mono line above the title: `PROPOSTA COMERCIAL · BRA20260865`. */
64
+ eyebrow: string;
65
+ title: string;
66
+ /** Second title line, printed in the accent color. */
67
+ titleAccent?: string;
68
+ subtitle?: string;
69
+ meta: Array<{
70
+ label: string;
71
+ value: string;
72
+ }>;
73
+ sections: CommercialProposalSection[];
74
+ signatureTitle?: string;
75
+ signatories?: CommercialProposalSignatory[];
76
+ /** Left side of the footer when no legal footer is configured. */
77
+ documentLabel?: string;
78
+ /** Word used between the page number and the total (`3 / 9`). */
79
+ pageSeparator?: string;
80
+ }
81
+ export interface CommercialProposalRender {
82
+ html: string;
83
+ pdfOptions: PdfGenerateOptions;
84
+ }
85
+ export declare function escapePdfHtml(value: unknown): string;
86
+ /**
87
+ * Commercial proposal — cover with the metadata table, numbered sections
88
+ * (`01 · ESCOPO`), borderless tables, rounded cards and a footer with the
89
+ * legal line and `n / N` on every page.
90
+ *
91
+ * Pure function: the caller resolves the theme (see
92
+ * `PdfService.loadCommercialDocumentTheme`) and the data, so the same input
93
+ * always renders the same document.
94
+ */
95
+ export declare function commercialProposalTemplate(data: CommercialProposalData, theme: CommercialDocumentTheme): CommercialProposalRender;
96
+ //# sourceMappingURL=commercial-proposal.template.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commercial-proposal.template.d.ts","sourceRoot":"","sources":["../../../src/pdf/templates/commercial-proposal.template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,0CAA0C,CAAC;AAC1E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAOzD;;;;;GAKG;AACH,MAAM,WAAW,uBAAwB,SAAQ,cAAc;IAC7D,kFAAkF;IAClF,WAAW,EAAE,MAAM,CAAC;IACpB,sEAAsE;IACtE,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;GAGG;AACH,MAAM,MAAM,uBAAuB,GAC/B;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC9B;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACpC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAA;CAAE,GACjC;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAA;CAAE,GAC9E;IACE,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC;IACjB,oCAAoC;IACpC,KAAK,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC,CAAC;CACjC,GACD;IACE,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;CACnE,CAAC;AAEN,MAAM,WAAW,yBAAyB;IACxC,qEAAqE;IACrE,OAAO,EAAE,MAAM,CAAC;IAChB,kEAAkE;IAClE,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,uBAAuB,EAAE,CAAC;CACnC;AAED,MAAM,WAAW,2BAA2B;IAC1C,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,sBAAsB;IACrC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,qEAAqE;IACrE,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,sDAAsD;IACtD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC9C,QAAQ,EAAE,yBAAyB,EAAE,CAAC;IACtC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,2BAA2B,EAAE,CAAC;IAC5C,kEAAkE;IAClE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iEAAiE;IACjE,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,kBAAkB,CAAC;CAChC;AAMD,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAOpD;AAwFD;;;;;;;;GAQG;AACH,wBAAgB,0BAA0B,CACxC,IAAI,EAAE,sBAAsB,EAC5B,KAAK,EAAE,uBAAuB,GAC7B,wBAAwB,CA+M1B"}