@hed-hog/core 0.0.387 → 0.0.390

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 (535) hide show
  1. package/README.md +12 -11
  2. package/dist/access-log/access-log.interceptor.d.ts.map +1 -1
  3. package/dist/access-log/access-log.interceptor.js +4 -2
  4. package/dist/access-log/access-log.interceptor.js.map +1 -1
  5. package/dist/ai/ai-attachment.fragments.d.ts +23 -0
  6. package/dist/ai/ai-attachment.fragments.d.ts.map +1 -0
  7. package/dist/ai/ai-attachment.fragments.js +34 -0
  8. package/dist/ai/ai-attachment.fragments.js.map +1 -0
  9. package/dist/ai/ai.controller.d.ts +7 -16
  10. package/dist/ai/ai.controller.d.ts.map +1 -1
  11. package/dist/ai/ai.prompts.d.ts +16 -0
  12. package/dist/ai/ai.prompts.d.ts.map +1 -0
  13. package/dist/ai/ai.prompts.js +37 -0
  14. package/dist/ai/ai.prompts.js.map +1 -0
  15. package/dist/ai/ai.service.d.ts +63 -12
  16. package/dist/ai/ai.service.d.ts.map +1 -1
  17. package/dist/ai/ai.service.js +215 -88
  18. package/dist/ai/ai.service.js.map +1 -1
  19. package/dist/ai/dto/chat.dto.d.ts +4 -1
  20. package/dist/ai/dto/chat.dto.d.ts.map +1 -1
  21. package/dist/ai/dto/chat.dto.js +23 -1
  22. package/dist/ai/dto/chat.dto.js.map +1 -1
  23. package/dist/ai/dto/create-agent.dto.d.ts +1 -1
  24. package/dist/ai/dto/create-agent.dto.d.ts.map +1 -1
  25. package/dist/ai/dto/create-agent.dto.js +1 -1
  26. package/dist/ai/dto/create-agent.dto.js.map +1 -1
  27. package/dist/ai/dto/update-agent.dto.d.ts +1 -1
  28. package/dist/ai/dto/update-agent.dto.d.ts.map +1 -1
  29. package/dist/ai/dto/update-agent.dto.js +1 -1
  30. package/dist/ai/dto/update-agent.dto.js.map +1 -1
  31. package/dist/ai-instruction/ai-instruction.controller.d.ts +61 -7
  32. package/dist/ai-instruction/ai-instruction.controller.d.ts.map +1 -1
  33. package/dist/ai-instruction/ai-instruction.controller.js +63 -20
  34. package/dist/ai-instruction/ai-instruction.controller.js.map +1 -1
  35. package/dist/ai-instruction/ai-instruction.module.d.ts.map +1 -1
  36. package/dist/ai-instruction/ai-instruction.module.js +13 -2
  37. package/dist/ai-instruction/ai-instruction.module.js.map +1 -1
  38. package/dist/ai-instruction/ai-instruction.service.d.ts +131 -6
  39. package/dist/ai-instruction/ai-instruction.service.d.ts.map +1 -1
  40. package/dist/ai-instruction/ai-instruction.service.js +533 -60
  41. package/dist/ai-instruction/ai-instruction.service.js.map +1 -1
  42. package/dist/ai-instruction/ai-prompt-builder.service.d.ts +8 -0
  43. package/dist/ai-instruction/ai-prompt-builder.service.d.ts.map +1 -1
  44. package/dist/ai-instruction/ai-prompt-builder.service.js +10 -1
  45. package/dist/ai-instruction/ai-prompt-builder.service.js.map +1 -1
  46. package/dist/ai-instruction/ai-prompt-registry.d.ts +45 -0
  47. package/dist/ai-instruction/ai-prompt-registry.d.ts.map +1 -0
  48. package/dist/ai-instruction/ai-prompt-registry.js +49 -0
  49. package/dist/ai-instruction/ai-prompt-registry.js.map +1 -0
  50. package/dist/ai-instruction/ai-prompt-resolver.service.d.ts +89 -0
  51. package/dist/ai-instruction/ai-prompt-resolver.service.d.ts.map +1 -0
  52. package/dist/ai-instruction/ai-prompt-resolver.service.js +222 -0
  53. package/dist/ai-instruction/ai-prompt-resolver.service.js.map +1 -0
  54. package/dist/ai-instruction/ai-prompt-template.util.d.ts +70 -0
  55. package/dist/ai-instruction/ai-prompt-template.util.d.ts.map +1 -0
  56. package/dist/ai-instruction/ai-prompt-template.util.js +154 -0
  57. package/dist/ai-instruction/ai-prompt-template.util.js.map +1 -0
  58. package/dist/ai-instruction/dto/create-ai-instruction.dto.d.ts +5 -0
  59. package/dist/ai-instruction/dto/create-ai-instruction.dto.d.ts.map +1 -1
  60. package/dist/ai-instruction/dto/create-ai-instruction.dto.js +27 -1
  61. package/dist/ai-instruction/dto/create-ai-instruction.dto.js.map +1 -1
  62. package/dist/ai-instruction/dto/preview-ai-instruction.dto.d.ts +14 -0
  63. package/dist/ai-instruction/dto/preview-ai-instruction.dto.d.ts.map +1 -0
  64. package/dist/ai-instruction/dto/preview-ai-instruction.dto.js +42 -0
  65. package/dist/ai-instruction/dto/preview-ai-instruction.dto.js.map +1 -0
  66. package/dist/ai-instruction/dto/update-ai-instruction.dto.d.ts +11 -0
  67. package/dist/ai-instruction/dto/update-ai-instruction.dto.d.ts.map +1 -1
  68. package/dist/ai-instruction/dto/update-ai-instruction.dto.js +34 -0
  69. package/dist/ai-instruction/dto/update-ai-instruction.dto.js.map +1 -1
  70. package/dist/ai-instruction/types/ai-instruction.types.d.ts +13 -1
  71. package/dist/ai-instruction/types/ai-instruction.types.d.ts.map +1 -1
  72. package/dist/ai-instruction/types/ai-instruction.types.js +10 -0
  73. package/dist/ai-instruction/types/ai-instruction.types.js.map +1 -1
  74. package/dist/auth/auth.controller.d.ts +24 -9
  75. package/dist/auth/auth.controller.d.ts.map +1 -1
  76. package/dist/auth/auth.controller.js +49 -21
  77. package/dist/auth/auth.controller.js.map +1 -1
  78. package/dist/auth/auth.service.d.ts +33 -8
  79. package/dist/auth/auth.service.d.ts.map +1 -1
  80. package/dist/auth/auth.service.js +78 -29
  81. package/dist/auth/auth.service.js.map +1 -1
  82. package/dist/captcha/captcha.module.d.ts +3 -0
  83. package/dist/captcha/captcha.module.d.ts.map +1 -0
  84. package/dist/captcha/captcha.module.js +23 -0
  85. package/dist/captcha/captcha.module.js.map +1 -0
  86. package/dist/captcha/captcha.service.d.ts +38 -0
  87. package/dist/captcha/captcha.service.d.ts.map +1 -0
  88. package/dist/captcha/captcha.service.js +144 -0
  89. package/dist/captcha/captcha.service.js.map +1 -0
  90. package/dist/challenge/challenge.service.d.ts +16 -7
  91. package/dist/challenge/challenge.service.d.ts.map +1 -1
  92. package/dist/challenge/challenge.service.js +64 -16
  93. package/dist/challenge/challenge.service.js.map +1 -1
  94. package/dist/core.module.d.ts +3 -1
  95. package/dist/core.module.d.ts.map +1 -1
  96. package/dist/core.module.js +29 -2
  97. package/dist/core.module.js.map +1 -1
  98. package/dist/dashboard/dashboard/dashboard.controller.d.ts +15 -15
  99. package/dist/dashboard/dashboard/dashboard.service.d.ts +15 -15
  100. package/dist/dashboard/dashboard-component/dashboard-component.controller.d.ts +6 -6
  101. package/dist/dashboard/dashboard-component/dashboard-component.service.d.ts +6 -6
  102. package/dist/dashboard/dashboard-component-role/dashboard-component-role.controller.d.ts +20 -20
  103. package/dist/dashboard/dashboard-component-role/dashboard-component-role.service.d.ts +20 -20
  104. package/dist/dashboard/dashboard-core/dashboard-core.controller.d.ts +1 -1
  105. package/dist/dashboard/dashboard-core/dashboard-core.service.d.ts +1 -1
  106. package/dist/dashboard/dashboard-role/dashboard-role.controller.d.ts +13 -13
  107. package/dist/dashboard/dashboard-role/dashboard-role.service.d.ts +13 -13
  108. package/dist/file/file.service.d.ts +6 -0
  109. package/dist/file/file.service.d.ts.map +1 -1
  110. package/dist/file/file.service.js +44 -4
  111. package/dist/file/file.service.js.map +1 -1
  112. package/dist/incident/incident-notifier.service.d.ts +36 -0
  113. package/dist/incident/incident-notifier.service.d.ts.map +1 -0
  114. package/dist/incident/incident-notifier.service.js +208 -0
  115. package/dist/incident/incident-notifier.service.js.map +1 -0
  116. package/dist/incident/incident.controller.d.ts +23 -0
  117. package/dist/incident/incident.controller.d.ts.map +1 -0
  118. package/dist/incident/incident.controller.js +75 -0
  119. package/dist/incident/incident.controller.js.map +1 -0
  120. package/dist/incident/incident.module.d.ts +7 -0
  121. package/dist/incident/incident.module.d.ts.map +1 -0
  122. package/dist/incident/incident.module.js +32 -0
  123. package/dist/incident/incident.module.js.map +1 -0
  124. package/dist/incident/incident.service.d.ts +72 -0
  125. package/dist/incident/incident.service.d.ts.map +1 -0
  126. package/dist/incident/incident.service.js +184 -0
  127. package/dist/incident/incident.service.js.map +1 -0
  128. package/dist/index.d.ts +26 -0
  129. package/dist/index.d.ts.map +1 -1
  130. package/dist/index.js +30 -0
  131. package/dist/index.js.map +1 -1
  132. package/dist/integration-profile/dto/test.dto.d.ts +13 -0
  133. package/dist/integration-profile/dto/test.dto.d.ts.map +1 -0
  134. package/dist/integration-profile/dto/test.dto.js +26 -0
  135. package/dist/integration-profile/dto/test.dto.js.map +1 -0
  136. package/dist/integration-profile/integration-profile.controller.d.ts +12 -1
  137. package/dist/integration-profile/integration-profile.controller.d.ts.map +1 -1
  138. package/dist/integration-profile/integration-profile.controller.js +9 -1
  139. package/dist/integration-profile/integration-profile.controller.js.map +1 -1
  140. package/dist/integration-profile/integration-profile.module.d.ts +6 -1
  141. package/dist/integration-profile/integration-profile.module.d.ts.map +1 -1
  142. package/dist/integration-profile/integration-profile.module.js +26 -3
  143. package/dist/integration-profile/integration-profile.module.js.map +1 -1
  144. package/dist/integration-profile/integration-profile.secrets.d.ts.map +1 -1
  145. package/dist/integration-profile/integration-profile.secrets.js +9 -1
  146. package/dist/integration-profile/integration-profile.secrets.js.map +1 -1
  147. package/dist/integration-profile/integration-profile.service.d.ts +26 -7
  148. package/dist/integration-profile/integration-profile.service.d.ts.map +1 -1
  149. package/dist/integration-profile/integration-profile.service.js +94 -91
  150. package/dist/integration-profile/integration-profile.service.js.map +1 -1
  151. package/dist/integration-profile/integration-profile.utils.d.ts +13 -1
  152. package/dist/integration-profile/integration-profile.utils.d.ts.map +1 -1
  153. package/dist/integration-profile/integration-profile.utils.js +20 -5
  154. package/dist/integration-profile/integration-profile.utils.js.map +1 -1
  155. package/dist/integration-profile/testers/ai.testers.d.ts +3 -0
  156. package/dist/integration-profile/testers/ai.testers.d.ts.map +1 -0
  157. package/dist/integration-profile/testers/ai.testers.js +125 -0
  158. package/dist/integration-profile/testers/ai.testers.js.map +1 -0
  159. package/dist/integration-profile/testers/captcha.testers.d.ts +3 -0
  160. package/dist/integration-profile/testers/captcha.testers.d.ts.map +1 -0
  161. package/dist/integration-profile/testers/captcha.testers.js +121 -0
  162. package/dist/integration-profile/testers/captcha.testers.js.map +1 -0
  163. package/dist/integration-profile/testers/email.testers.d.ts +3 -0
  164. package/dist/integration-profile/testers/email.testers.d.ts.map +1 -0
  165. package/dist/integration-profile/testers/email.testers.js +128 -0
  166. package/dist/integration-profile/testers/email.testers.js.map +1 -0
  167. package/dist/integration-profile/testers/http-probe.d.ts +57 -0
  168. package/dist/integration-profile/testers/http-probe.d.ts.map +1 -0
  169. package/dist/integration-profile/testers/http-probe.js +140 -0
  170. package/dist/integration-profile/testers/http-probe.js.map +1 -0
  171. package/dist/integration-profile/testers/index.d.ts +12 -0
  172. package/dist/integration-profile/testers/index.d.ts.map +1 -0
  173. package/dist/integration-profile/testers/index.js +45 -0
  174. package/dist/integration-profile/testers/index.js.map +1 -0
  175. package/dist/integration-profile/testers/infrastructure.testers.d.ts +3 -0
  176. package/dist/integration-profile/testers/infrastructure.testers.d.ts.map +1 -0
  177. package/dist/integration-profile/testers/infrastructure.testers.js +105 -0
  178. package/dist/integration-profile/testers/infrastructure.testers.js.map +1 -0
  179. package/dist/integration-profile/testers/integration-tester.registry.d.ts +17 -0
  180. package/dist/integration-profile/testers/integration-tester.registry.d.ts.map +1 -0
  181. package/dist/integration-profile/testers/integration-tester.registry.js +52 -0
  182. package/dist/integration-profile/testers/integration-tester.registry.js.map +1 -0
  183. package/dist/integration-profile/testers/integration-tester.types.d.ts +55 -0
  184. package/dist/integration-profile/testers/integration-tester.types.d.ts.map +1 -0
  185. package/dist/integration-profile/testers/integration-tester.types.js +16 -0
  186. package/dist/integration-profile/testers/integration-tester.types.js.map +1 -0
  187. package/dist/integration-profile/testers/messaging.testers.d.ts +3 -0
  188. package/dist/integration-profile/testers/messaging.testers.d.ts.map +1 -0
  189. package/dist/integration-profile/testers/messaging.testers.js +70 -0
  190. package/dist/integration-profile/testers/messaging.testers.js.map +1 -0
  191. package/dist/integration-profile/testers/oauth.testers.d.ts +3 -0
  192. package/dist/integration-profile/testers/oauth.testers.d.ts.map +1 -0
  193. package/dist/integration-profile/testers/oauth.testers.js +285 -0
  194. package/dist/integration-profile/testers/oauth.testers.js.map +1 -0
  195. package/dist/integration-profile/testers/payment.testers.d.ts +3 -0
  196. package/dist/integration-profile/testers/payment.testers.d.ts.map +1 -0
  197. package/dist/integration-profile/testers/payment.testers.js +169 -0
  198. package/dist/integration-profile/testers/payment.testers.js.map +1 -0
  199. package/dist/integration-profile/testers/storage.testers.d.ts +3 -0
  200. package/dist/integration-profile/testers/storage.testers.d.ts.map +1 -0
  201. package/dist/integration-profile/testers/storage.testers.js +208 -0
  202. package/dist/integration-profile/testers/storage.testers.js.map +1 -0
  203. package/dist/language/en.json +4 -2
  204. package/dist/language/pt.json +4 -2
  205. package/dist/leaked-password/leaked-password.controller.d.ts +24 -0
  206. package/dist/leaked-password/leaked-password.controller.d.ts.map +1 -0
  207. package/dist/leaked-password/leaked-password.controller.js +78 -0
  208. package/dist/leaked-password/leaked-password.controller.js.map +1 -0
  209. package/dist/leaked-password/leaked-password.module.d.ts +8 -0
  210. package/dist/leaked-password/leaked-password.module.d.ts.map +1 -0
  211. package/dist/leaked-password/leaked-password.module.js +31 -0
  212. package/dist/leaked-password/leaked-password.module.js.map +1 -0
  213. package/dist/leaked-password/leaked-password.service.d.ts +64 -0
  214. package/dist/leaked-password/leaked-password.service.d.ts.map +1 -0
  215. package/dist/leaked-password/leaked-password.service.js +218 -0
  216. package/dist/leaked-password/leaked-password.service.js.map +1 -0
  217. package/dist/locale/locale.controller.d.ts +1 -1
  218. package/dist/locale/locale.service.d.ts +1 -1
  219. package/dist/mail/dto/preview.dto.d.ts +18 -0
  220. package/dist/mail/dto/preview.dto.d.ts.map +1 -0
  221. package/dist/mail/dto/preview.dto.js +66 -0
  222. package/dist/mail/dto/preview.dto.js.map +1 -0
  223. package/dist/mail/dto/send.dto.d.ts +7 -0
  224. package/dist/mail/dto/send.dto.d.ts.map +1 -1
  225. package/dist/mail/dto/send.dto.js +10 -0
  226. package/dist/mail/dto/send.dto.js.map +1 -1
  227. package/dist/mail/mail.controller.d.ts +4 -0
  228. package/dist/mail/mail.controller.d.ts.map +1 -1
  229. package/dist/mail/mail.controller.js +16 -2
  230. package/dist/mail/mail.controller.js.map +1 -1
  231. package/dist/mail/mail.service.d.ts +23 -2
  232. package/dist/mail/mail.service.d.ts.map +1 -1
  233. package/dist/mail/mail.service.js +102 -13
  234. package/dist/mail/mail.service.js.map +1 -1
  235. package/dist/mail-layout/dto/update.dto.d.ts +17 -0
  236. package/dist/mail-layout/dto/update.dto.d.ts.map +1 -0
  237. package/dist/mail-layout/dto/update.dto.js +27 -0
  238. package/dist/mail-layout/dto/update.dto.js.map +1 -0
  239. package/dist/mail-layout/mail-layout.controller.d.ts +15 -0
  240. package/dist/mail-layout/mail-layout.controller.d.ts.map +1 -0
  241. package/dist/mail-layout/mail-layout.controller.js +71 -0
  242. package/dist/mail-layout/mail-layout.controller.js.map +1 -0
  243. package/dist/mail-layout/mail-layout.module.d.ts +3 -0
  244. package/dist/mail-layout/mail-layout.module.d.ts.map +1 -0
  245. package/dist/mail-layout/mail-layout.module.js +35 -0
  246. package/dist/mail-layout/mail-layout.module.js.map +1 -0
  247. package/dist/mail-layout/mail-layout.service.d.ts +27 -0
  248. package/dist/mail-layout/mail-layout.service.d.ts.map +1 -0
  249. package/dist/mail-layout/mail-layout.service.js +80 -0
  250. package/dist/mail-layout/mail-layout.service.js.map +1 -0
  251. package/dist/mcp-chat/mcp-chat.controller.d.ts +2 -2
  252. package/dist/mcp-chat/mcp-chat.service.d.ts +24 -2
  253. package/dist/mcp-chat/mcp-chat.service.d.ts.map +1 -1
  254. package/dist/mcp-chat/mcp-chat.service.js +80 -24
  255. package/dist/mcp-chat/mcp-chat.service.js.map +1 -1
  256. package/dist/menu/menu.controller.d.ts +3 -3
  257. package/dist/menu/menu.service.d.ts +3 -3
  258. package/dist/notification/notification.controller.d.ts +12 -12
  259. package/dist/notification/notification.service.d.ts +12 -12
  260. package/dist/oauth/oauth-token-broker.service.d.ts +72 -0
  261. package/dist/oauth/oauth-token-broker.service.d.ts.map +1 -0
  262. package/dist/oauth/oauth-token-broker.service.js +258 -0
  263. package/dist/oauth/oauth-token-broker.service.js.map +1 -0
  264. package/dist/oauth/oauth.module.d.ts.map +1 -1
  265. package/dist/oauth/oauth.module.js +3 -1
  266. package/dist/oauth/oauth.module.js.map +1 -1
  267. package/dist/oauth/oauth.service.d.ts +2 -0
  268. package/dist/oauth/oauth.service.d.ts.map +1 -1
  269. package/dist/oauth/oauth.service.js +6 -3
  270. package/dist/oauth/oauth.service.js.map +1 -1
  271. package/dist/pdf/pdf.service.d.ts +8 -0
  272. package/dist/pdf/pdf.service.d.ts.map +1 -1
  273. package/dist/pdf/pdf.service.js +52 -0
  274. package/dist/pdf/pdf.service.js.map +1 -1
  275. package/dist/presence/presence.controller.d.ts +16 -0
  276. package/dist/presence/presence.controller.d.ts.map +1 -0
  277. package/dist/presence/presence.controller.js +60 -0
  278. package/dist/presence/presence.controller.js.map +1 -0
  279. package/dist/presence/presence.listener.d.ts +29 -0
  280. package/dist/presence/presence.listener.d.ts.map +1 -0
  281. package/dist/presence/presence.listener.js +82 -0
  282. package/dist/presence/presence.listener.js.map +1 -0
  283. package/dist/presence/presence.module.d.ts +3 -0
  284. package/dist/presence/presence.module.d.ts.map +1 -0
  285. package/dist/presence/presence.module.js +32 -0
  286. package/dist/presence/presence.module.js.map +1 -0
  287. package/dist/presence/presence.service.d.ts +42 -0
  288. package/dist/presence/presence.service.d.ts.map +1 -0
  289. package/dist/presence/presence.service.js +147 -0
  290. package/dist/presence/presence.service.js.map +1 -0
  291. package/dist/profile/dto/delete-account.dto.d.ts +8 -0
  292. package/dist/profile/dto/delete-account.dto.d.ts.map +1 -0
  293. package/dist/profile/dto/delete-account.dto.js +22 -0
  294. package/dist/profile/dto/delete-account.dto.js.map +1 -0
  295. package/dist/profile/events/profile-account-deleted.event.d.ts +12 -0
  296. package/dist/profile/events/profile-account-deleted.event.d.ts.map +1 -0
  297. package/dist/profile/events/profile-account-deleted.event.js +17 -0
  298. package/dist/profile/events/profile-account-deleted.event.js.map +1 -0
  299. package/dist/profile/profile.controller.d.ts +21 -15
  300. package/dist/profile/profile.controller.d.ts.map +1 -1
  301. package/dist/profile/profile.controller.js +75 -46
  302. package/dist/profile/profile.controller.js.map +1 -1
  303. package/dist/profile/profile.service.d.ts +30 -18
  304. package/dist/profile/profile.service.d.ts.map +1 -1
  305. package/dist/profile/profile.service.js +113 -37
  306. package/dist/profile/profile.service.js.map +1 -1
  307. package/dist/realtime/realtime.gateway.d.ts +48 -0
  308. package/dist/realtime/realtime.gateway.d.ts.map +1 -0
  309. package/dist/realtime/realtime.gateway.js +156 -0
  310. package/dist/realtime/realtime.gateway.js.map +1 -0
  311. package/dist/realtime/realtime.module.d.ts +8 -0
  312. package/dist/realtime/realtime.module.d.ts.map +1 -0
  313. package/dist/realtime/realtime.module.js +29 -0
  314. package/dist/realtime/realtime.module.js.map +1 -0
  315. package/dist/realtime/realtime.service.d.ts +51 -0
  316. package/dist/realtime/realtime.service.d.ts.map +1 -0
  317. package/dist/realtime/realtime.service.js +177 -0
  318. package/dist/realtime/realtime.service.js.map +1 -0
  319. package/dist/redis/redis-pubsub.d.ts +27 -0
  320. package/dist/redis/redis-pubsub.d.ts.map +1 -0
  321. package/dist/redis/redis-pubsub.js +140 -0
  322. package/dist/redis/redis-pubsub.js.map +1 -0
  323. package/dist/role/role.controller.d.ts +3 -3
  324. package/dist/role/role.service.d.ts +3 -3
  325. package/dist/setting/dto/create.dto.d.ts.map +1 -1
  326. package/dist/setting/dto/create.dto.js +9 -2
  327. package/dist/setting/dto/create.dto.js.map +1 -1
  328. package/dist/setting/setting.controller.d.ts +5 -5
  329. package/dist/setting/setting.service.d.ts +8 -5
  330. package/dist/setting/setting.service.d.ts.map +1 -1
  331. package/dist/setting/setting.service.js +25 -1
  332. package/dist/setting/setting.service.js.map +1 -1
  333. package/dist/user/dto/create-with-email-and-password.dto.d.ts +2 -0
  334. package/dist/user/dto/create-with-email-and-password.dto.d.ts.map +1 -1
  335. package/dist/user/dto/create-with-email-and-password.dto.js +5 -0
  336. package/dist/user/dto/create-with-email-and-password.dto.js.map +1 -1
  337. package/dist/user/dto/query-user-mail-list.dto.d.ts +5 -0
  338. package/dist/user/dto/query-user-mail-list.dto.d.ts.map +1 -0
  339. package/dist/user/dto/query-user-mail-list.dto.js +25 -0
  340. package/dist/user/dto/query-user-mail-list.dto.js.map +1 -0
  341. package/dist/user/user-credential.util.d.ts +19 -0
  342. package/dist/user/user-credential.util.d.ts.map +1 -0
  343. package/dist/user/user-credential.util.js +32 -0
  344. package/dist/user/user-credential.util.js.map +1 -0
  345. package/dist/user/user.controller.d.ts +17 -5
  346. package/dist/user/user.controller.d.ts.map +1 -1
  347. package/dist/user/user.controller.js +18 -3
  348. package/dist/user/user.controller.js.map +1 -1
  349. package/dist/user/user.service.d.ts +28 -6
  350. package/dist/user/user.service.d.ts.map +1 -1
  351. package/dist/user/user.service.js +204 -13
  352. package/dist/user/user.service.js.map +1 -1
  353. package/dist/validators/is-strong-password-with-settings.validator.d.ts.map +1 -1
  354. package/dist/validators/is-strong-password-with-settings.validator.js +11 -0
  355. package/dist/validators/is-strong-password-with-settings.validator.js.map +1 -1
  356. package/dist/validators/service-locator.d.ts +9 -0
  357. package/dist/validators/service-locator.d.ts.map +1 -1
  358. package/dist/validators/service-locator.js +12 -0
  359. package/dist/validators/service-locator.js.map +1 -1
  360. package/dist/whatsapp-sender/whatsapp-sender.module.d.ts +3 -0
  361. package/dist/whatsapp-sender/whatsapp-sender.module.d.ts.map +1 -0
  362. package/dist/whatsapp-sender/whatsapp-sender.module.js +23 -0
  363. package/dist/whatsapp-sender/whatsapp-sender.module.js.map +1 -0
  364. package/dist/whatsapp-sender/whatsapp-sender.service.d.ts +50 -0
  365. package/dist/whatsapp-sender/whatsapp-sender.service.d.ts.map +1 -0
  366. package/dist/whatsapp-sender/whatsapp-sender.service.js +224 -0
  367. package/dist/whatsapp-sender/whatsapp-sender.service.js.map +1 -0
  368. package/hedhog/data/integration_provider.yaml +16 -0
  369. package/hedhog/data/mail.yaml +88 -61
  370. package/hedhog/data/mail_layout.yaml +188 -0
  371. package/hedhog/data/menu.yaml +67 -3
  372. package/hedhog/data/route.yaml +135 -0
  373. package/hedhog/data/setting_group.yaml +139 -1
  374. package/hedhog/frontend/app/account/components/mfa-setup-dialog.tsx.ejs +36 -0
  375. package/hedhog/frontend/app/account/components/two-factor-auth.tsx.ejs +2 -0
  376. package/hedhog/frontend/app/account/hooks/use-mfa-setup.ts.ejs +10 -7
  377. package/hedhog/frontend/app/ai_agent/page.tsx.ejs +7 -4
  378. package/hedhog/frontend/app/ai_instruction/_components/ai-instruction-form.tsx.ejs +580 -0
  379. package/hedhog/frontend/app/ai_instruction/_components/ai-instruction-preview.tsx.ejs +150 -0
  380. package/hedhog/frontend/app/ai_instruction/_components/ai-instruction-versions.tsx.ejs +199 -0
  381. package/hedhog/frontend/app/ai_instruction/_components/prompt-diff.tsx.ejs +63 -0
  382. package/hedhog/frontend/app/ai_instruction/_lib/line-diff.spec.ts.ejs +59 -0
  383. package/hedhog/frontend/app/ai_instruction/_lib/line-diff.ts.ejs +72 -0
  384. package/hedhog/frontend/app/ai_instruction/_lib/prompt-template.spec.ts.ejs +170 -0
  385. package/hedhog/frontend/app/ai_instruction/_lib/prompt-template.ts.ejs +167 -0
  386. package/hedhog/frontend/app/ai_instruction/_lib/types.ts.ejs +99 -0
  387. package/hedhog/frontend/app/ai_instruction/page.tsx.ejs +422 -0
  388. package/hedhog/frontend/app/configurations/[slug]/components/setting-field.tsx.ejs +51 -4
  389. package/hedhog/frontend/app/incidents/page.tsx.ejs +400 -0
  390. package/hedhog/frontend/app/integration/profiles/page.tsx.ejs +153 -84
  391. package/hedhog/frontend/app/mail/layout/page.tsx.ejs +344 -0
  392. package/hedhog/frontend/app/mail/template/page.tsx.ejs +155 -121
  393. package/hedhog/frontend/app/mcp_chat/page.tsx.ejs +129 -17
  394. package/hedhog/frontend/app/pages/_components/page-delete-dialog.tsx.ejs +343 -0
  395. package/hedhog/frontend/app/pages/_components/page-detail-sheet.tsx.ejs +438 -0
  396. package/hedhog/frontend/app/pages/_components/page-wizard-sheet.tsx.ejs +1009 -0
  397. package/hedhog/frontend/app/pages/_components/system-page-types.ts.ejs +56 -0
  398. package/hedhog/frontend/app/pages/_components/use-system-pages.ts.ejs +171 -0
  399. package/hedhog/frontend/app/pages/page.tsx.ejs +514 -0
  400. package/hedhog/frontend/app/users/page.tsx.ejs +119 -13
  401. package/hedhog/frontend/app/users/user-activity-timeline.tsx.ejs +231 -0
  402. package/hedhog/frontend/app/users/user-mails.tsx.ejs +399 -0
  403. package/hedhog/frontend/app/users/user-sheet.tsx.ejs +60 -75
  404. package/hedhog/frontend/messages/en.json +499 -3
  405. package/hedhog/frontend/messages/pt.json +499 -3
  406. package/hedhog/table/ai_agent.yaml +1 -0
  407. package/hedhog/table/ai_instruction.yaml +15 -0
  408. package/hedhog/table/leaked_password.yaml +18 -0
  409. package/hedhog/table/mail_layout.yaml +35 -0
  410. package/hedhog/table/mail_var.yaml +4 -0
  411. package/hedhog/table/setting.yaml +1 -0
  412. package/hedhog/table/system_incident.yaml +59 -0
  413. package/hedhog/table/user_presence.yaml +36 -0
  414. package/package.json +8 -4
  415. package/src/access-log/access-log.interceptor.ts +4 -2
  416. package/src/ai/ai-attachment.fragments.spec.ts +319 -0
  417. package/src/ai/ai-attachment.fragments.ts +35 -0
  418. package/src/ai/ai.prompts.ts +38 -0
  419. package/src/ai/ai.service.spec.ts +280 -0
  420. package/src/ai/ai.service.ts +338 -82
  421. package/src/ai/dto/chat.dto.ts +33 -3
  422. package/src/ai/dto/create-agent.dto.ts +2 -2
  423. package/src/ai/dto/update-agent.dto.ts +2 -2
  424. package/src/ai-instruction/ai-instruction.controller.ts +40 -9
  425. package/src/ai-instruction/ai-instruction.module.ts +13 -2
  426. package/src/ai-instruction/ai-instruction.service.spec.ts +658 -0
  427. package/src/ai-instruction/ai-instruction.service.ts +661 -62
  428. package/src/ai-instruction/ai-prompt-builder.service.ts +10 -1
  429. package/src/ai-instruction/ai-prompt-registry.ts +87 -0
  430. package/src/ai-instruction/ai-prompt-resolver.service.spec.ts +375 -0
  431. package/src/ai-instruction/ai-prompt-resolver.service.ts +295 -0
  432. package/src/ai-instruction/ai-prompt-template.util.spec.ts +162 -0
  433. package/src/ai-instruction/ai-prompt-template.util.ts +199 -0
  434. package/src/ai-instruction/dto/create-ai-instruction.dto.ts +39 -3
  435. package/src/ai-instruction/dto/preview-ai-instruction.dto.ts +26 -0
  436. package/src/ai-instruction/dto/update-ai-instruction.dto.ts +42 -1
  437. package/src/ai-instruction/types/ai-instruction.types.ts +24 -1
  438. package/src/auth/auth.controller.ts +31 -5
  439. package/src/auth/auth.service.spec.ts +3 -1
  440. package/src/auth/auth.service.ts +101 -36
  441. package/src/captcha/captcha.module.ts +10 -0
  442. package/src/captcha/captcha.service.spec.ts +210 -0
  443. package/src/captcha/captcha.service.ts +191 -0
  444. package/src/challenge/challenge.service.spec.ts +39 -4
  445. package/src/challenge/challenge.service.ts +72 -17
  446. package/src/core.module.ts +27 -1
  447. package/src/file/file.service.spec.ts +105 -0
  448. package/src/file/file.service.ts +60 -3
  449. package/src/incident/incident-notifier.service.spec.ts +205 -0
  450. package/src/incident/incident-notifier.service.ts +241 -0
  451. package/src/incident/incident.controller.ts +38 -0
  452. package/src/incident/incident.module.ts +19 -0
  453. package/src/incident/incident.service.spec.ts +150 -0
  454. package/src/incident/incident.service.ts +209 -0
  455. package/src/index.ts +37 -0
  456. package/src/integration-profile/dto/test.dto.ts +19 -0
  457. package/src/integration-profile/integration-profile.controller.ts +10 -1
  458. package/src/integration-profile/integration-profile.module.spec.ts +51 -0
  459. package/src/integration-profile/integration-profile.module.ts +23 -4
  460. package/src/integration-profile/integration-profile.secrets.ts +9 -1
  461. package/src/integration-profile/integration-profile.service.spec.ts +279 -0
  462. package/src/integration-profile/integration-profile.service.ts +120 -124
  463. package/src/integration-profile/integration-profile.utils.spec.ts +22 -0
  464. package/src/integration-profile/integration-profile.utils.ts +40 -3
  465. package/src/integration-profile/testers/ai.testers.ts +165 -0
  466. package/src/integration-profile/testers/captcha.testers.spec.ts +92 -0
  467. package/src/integration-profile/testers/captcha.testers.ts +139 -0
  468. package/src/integration-profile/testers/email.testers.ts +161 -0
  469. package/src/integration-profile/testers/http-probe.spec.ts +153 -0
  470. package/src/integration-profile/testers/http-probe.ts +171 -0
  471. package/src/integration-profile/testers/index.ts +30 -0
  472. package/src/integration-profile/testers/infrastructure.testers.ts +122 -0
  473. package/src/integration-profile/testers/integration-tester.registry.spec.ts +75 -0
  474. package/src/integration-profile/testers/integration-tester.registry.ts +43 -0
  475. package/src/integration-profile/testers/integration-tester.types.ts +61 -0
  476. package/src/integration-profile/testers/messaging.testers.ts +102 -0
  477. package/src/integration-profile/testers/oauth.testers.spec.ts +220 -0
  478. package/src/integration-profile/testers/oauth.testers.ts +305 -0
  479. package/src/integration-profile/testers/payment.testers.ts +185 -0
  480. package/src/integration-profile/testers/remaining.testers.spec.ts +401 -0
  481. package/src/integration-profile/testers/storage.testers.spec.ts +185 -0
  482. package/src/integration-profile/testers/storage.testers.ts +226 -0
  483. package/src/integration-profile/testers/tester-coverage.spec.ts +58 -0
  484. package/src/language/en.json +4 -2
  485. package/src/language/pt.json +4 -2
  486. package/src/leaked-password/README.md +83 -0
  487. package/src/leaked-password/leaked-password.controller.ts +52 -0
  488. package/src/leaked-password/leaked-password.module.ts +18 -0
  489. package/src/leaked-password/leaked-password.service.ts +242 -0
  490. package/src/leaked-password/seed/build-seed-sql.mjs +180 -0
  491. package/src/leaked-password/seed/common-passwords.txt +335 -0
  492. package/src/mail/dto/preview.dto.ts +50 -0
  493. package/src/mail/dto/send.dto.ts +14 -1
  494. package/src/mail/mail-template.spec.ts +197 -0
  495. package/src/mail/mail.controller.ts +9 -2
  496. package/src/mail/mail.service.spec.ts +116 -1
  497. package/src/mail/mail.service.ts +118 -12
  498. package/src/mail-layout/dto/update.dto.ts +19 -0
  499. package/src/mail-layout/mail-layout.controller.ts +47 -0
  500. package/src/mail-layout/mail-layout.module.ts +22 -0
  501. package/src/mail-layout/mail-layout.service.ts +94 -0
  502. package/src/mcp-chat/mcp-chat.service.spec.ts +236 -0
  503. package/src/mcp-chat/mcp-chat.service.ts +122 -26
  504. package/src/oauth/oauth-token-broker.service.spec.ts +172 -0
  505. package/src/oauth/oauth-token-broker.service.ts +363 -0
  506. package/src/oauth/oauth.module.ts +3 -1
  507. package/src/oauth/oauth.service.ts +8 -2
  508. package/src/pdf/pdf.service.ts +75 -0
  509. package/src/presence/presence.controller.ts +29 -0
  510. package/src/presence/presence.listener.ts +53 -0
  511. package/src/presence/presence.module.ts +19 -0
  512. package/src/presence/presence.service.spec.ts +97 -0
  513. package/src/presence/presence.service.ts +160 -0
  514. package/src/profile/dto/delete-account.dto.ts +11 -0
  515. package/src/profile/events/profile-account-deleted.event.ts +13 -0
  516. package/src/profile/profile.controller.ts +46 -34
  517. package/src/profile/profile.service.ts +138 -38
  518. package/src/realtime/realtime.gateway.ts +138 -0
  519. package/src/realtime/realtime.module.ts +16 -0
  520. package/src/realtime/realtime.service.spec.ts +50 -0
  521. package/src/realtime/realtime.service.ts +187 -0
  522. package/src/redis/redis-pubsub.ts +179 -0
  523. package/src/setting/dto/create.dto.ts +13 -2
  524. package/src/setting/setting.service.spec.ts +56 -0
  525. package/src/setting/setting.service.ts +29 -1
  526. package/src/user/dto/create-with-email-and-password.dto.ts +6 -1
  527. package/src/user/dto/query-user-mail-list.dto.ts +10 -0
  528. package/src/user/user-credential.util.ts +35 -0
  529. package/src/user/user.controller.ts +17 -2
  530. package/src/user/user.service.spec.ts +153 -0
  531. package/src/user/user.service.ts +255 -12
  532. package/src/validators/is-strong-password-with-settings.validator.ts +12 -0
  533. package/src/validators/service-locator.ts +15 -0
  534. package/src/whatsapp-sender/whatsapp-sender.module.ts +10 -0
  535. package/src/whatsapp-sender/whatsapp-sender.service.ts +313 -0
@@ -0,0 +1,335 @@
1
+ # Lista base de senhas notoriamente vazadas / triviais.
2
+ #
3
+ # ESCOPO: este arquivo é uma BASE CURADA, não o top-N do Have I Been Pwned. São
4
+ # as senhas que aparecem em toda publicação anual de "senhas mais usadas", mais
5
+ # os padrões brasileiros equivalentes. O gerador (build-seed-sql.mjs) expande
6
+ # cada palavra-base com os sufixos/variações que dominam corpus de vazamento
7
+ # (ano, sequência numérica, capitalização, leet), chegando a alguns milhares de
8
+ # entradas — o suficiente para barrar o reuso óbvio.
9
+ #
10
+ # Cobertura real (centenas de milhões de hashes) vem do comando de import de
11
+ # dump do Pwned Passwords; ver ../README.md.
12
+ #
13
+ # Formato: uma senha/palavra-base por linha. Linha com # é comentário.
14
+ # Palavras marcadas com "=" no início entram SÓ como literal, sem expansão
15
+ # (são senhas completas, não bases: expandir "123456" em "1234561990" só gera
16
+ # ruído).
17
+
18
+ # --- sequências numéricas e de teclado (literais, sem expansão) ---
19
+ =123456
20
+ =1234567
21
+ =12345678
22
+ =123456789
23
+ =1234567890
24
+ =12345
25
+ =1234
26
+ =123
27
+ =111111
28
+ =1111111
29
+ =11111111
30
+ =000000
31
+ =00000000
32
+ =121212
33
+ =123123
34
+ =123321
35
+ =112233
36
+ =102030
37
+ =147258
38
+ =159753
39
+ =654321
40
+ =7654321
41
+ =87654321
42
+ =987654321
43
+ =9876543210
44
+ =1q2w3e
45
+ =1q2w3e4r
46
+ =1q2w3e4r5t
47
+ =1qaz2wsx
48
+ =1qaz2wsx3edc
49
+ =qwerty
50
+ =qwertyui
51
+ =qwertyuiop
52
+ =qwerty123
53
+ =qwe123
54
+ =asdfgh
55
+ =asdfghjkl
56
+ =asdf1234
57
+ =zxcvbn
58
+ =zxcvbnm
59
+ =qazwsx
60
+ =qazwsxedc
61
+ =poiuytrewq
62
+ =mnbvcxz
63
+ =abcdef
64
+ =abcdefg
65
+ =abcdefgh
66
+ =abc123
67
+ =a1b2c3
68
+ =aaaaaa
69
+ =aaaaaaaa
70
+ =abcd1234
71
+ =asdasd
72
+ =asdfasdf
73
+ =qweqwe
74
+ =zaq12wsx
75
+ =1a2b3c
76
+
77
+ # --- clássicos em inglês (expandem) ---
78
+ password
79
+ passwd
80
+ pass
81
+ admin
82
+ administrator
83
+ root
84
+ toor
85
+ guest
86
+ user
87
+ test
88
+ demo
89
+ default
90
+ login
91
+ logon
92
+ welcome
93
+ letmein
94
+ changeme
95
+ secret
96
+ master
97
+ manager
98
+ system
99
+ service
100
+ oracle
101
+ postgres
102
+ mysql
103
+ sqlserver
104
+ database
105
+ backup
106
+ temp
107
+ public
108
+ private
109
+ access
110
+ qwertz
111
+ monkey
112
+ dragon
113
+ shadow
114
+ sunshine
115
+ princess
116
+ football
117
+ baseball
118
+ basketball
119
+ soccer
120
+ hockey
121
+ superman
122
+ batman
123
+ spiderman
124
+ ironman
125
+ starwars
126
+ pokemon
127
+ minecraft
128
+ fortnite
129
+ computer
130
+ internet
131
+ whatever
132
+ freedom
133
+ trustno
134
+ hunter
135
+ ranger
136
+ killer
137
+ hammer
138
+ cheese
139
+ cookie
140
+ chocolate
141
+ banana
142
+ orange
143
+ purple
144
+ yellow
145
+ silver
146
+ golden
147
+ diamond
148
+ phoenix
149
+ thunder
150
+ tiger
151
+ eagle
152
+ falcon
153
+ wolf
154
+ bear
155
+ lion
156
+ snake
157
+ angel
158
+ devil
159
+ heaven
160
+ summer
161
+ winter
162
+ spring
163
+ autumn
164
+ flower
165
+ butterfly
166
+ rainbow
167
+ forever
168
+ iloveyou
169
+ loveme
170
+ lovely
171
+ sweetie
172
+ honey
173
+ baby
174
+ darling
175
+ kisses
176
+ friend
177
+ family
178
+ mother
179
+ father
180
+ michael
181
+ jennifer
182
+ jessica
183
+ ashley
184
+ daniel
185
+ matthew
186
+ joshua
187
+ andrew
188
+ nicole
189
+ robert
190
+ william
191
+ thomas
192
+ charlie
193
+ george
194
+ oliver
195
+ harry
196
+ jack
197
+ liverpool
198
+ chelsea
199
+ arsenal
200
+ barcelona
201
+ juventus
202
+
203
+ # --- padrões brasileiros (expandem) ---
204
+ senha
205
+ senhas
206
+ minhasenha
207
+ novasenha
208
+ mudar
209
+ mudarsenha
210
+ alterar
211
+ usuario
212
+ administrador
213
+ convidado
214
+ teste
215
+ padrao
216
+ acesso
217
+ entrar
218
+ brasil
219
+ brasileiro
220
+ saopaulo
221
+ riodejaneiro
222
+ belohorizonte
223
+ salvador
224
+ fortaleza
225
+ curitiba
226
+ recife
227
+ portoalegre
228
+ manaus
229
+ brasilia
230
+ goiania
231
+ flamengo
232
+ corinthians
233
+ palmeiras
234
+ santos
235
+ gremio
236
+ internacional
237
+ cruzeiro
238
+ atletico
239
+ vasco
240
+ botafogo
241
+ fluminense
242
+ bahia
243
+ sport
244
+ ceara
245
+ fortalezaec
246
+ coritiba
247
+ mengao
248
+ timao
249
+ verdao
250
+ galo
251
+ colorado
252
+ tricolor
253
+ jesus
254
+ jesuscristo
255
+ deus
256
+ deusefiel
257
+ deusnocomando
258
+ amem
259
+ familia
260
+ familiaunida
261
+ amomeufilho
262
+ amominhafilha
263
+ amomeuamor
264
+ teamo
265
+ teamomuito
266
+ saudade
267
+ felicidade
268
+ esperanca
269
+ liberdade
270
+ vitoria
271
+ guerreiro
272
+ campeao
273
+ maria
274
+ joao
275
+ jose
276
+ ana
277
+ pedro
278
+ paulo
279
+ lucas
280
+ gabriel
281
+ rafael
282
+ felipe
283
+ bruno
284
+ carlos
285
+ antonio
286
+ francisco
287
+ marcos
288
+ luiz
289
+ juliana
290
+ fernanda
291
+ patricia
292
+ camila
293
+ amanda
294
+ leticia
295
+ mariana
296
+ carolina
297
+ beatriz
298
+ larissa
299
+ cachorro
300
+ gato
301
+ amor
302
+ coracao
303
+ sorriso
304
+ estrela
305
+ sol
306
+ lua
307
+ mar
308
+ praia
309
+ festa
310
+ carnaval
311
+ samba
312
+ futebol
313
+ churrasco
314
+ feijoada
315
+ cerveja
316
+ caipirinha
317
+ motorista
318
+ professor
319
+ medico
320
+ enfermeira
321
+ policia
322
+ bombeiro
323
+ seguranca
324
+ financeiro
325
+ comercial
326
+ vendas
327
+ suporte
328
+ empresa
329
+ escritorio
330
+ trabalho
331
+ escola
332
+ faculdade
333
+ universidade
334
+ hcode
335
+ hedhog
@@ -0,0 +1,50 @@
1
+ import { Type } from 'class-transformer';
2
+ import {
3
+ IsBoolean,
4
+ IsObject,
5
+ IsOptional,
6
+ IsString,
7
+ ValidateNested,
8
+ } from 'class-validator';
9
+
10
+ /**
11
+ * Layout enviado inline pelo editor do admin, para pre-visualizar alteracoes
12
+ * ainda nao salvas. Quando ausente, o preview usa o layout padrao do banco.
13
+ */
14
+ export class PreviewLayoutDTO {
15
+ @IsString()
16
+ @IsOptional()
17
+ wrapper?: string;
18
+
19
+ @IsString()
20
+ @IsOptional()
21
+ header?: string;
22
+
23
+ @IsString()
24
+ @IsOptional()
25
+ footer?: string;
26
+ }
27
+
28
+ export class PreviewDTO {
29
+ @IsString()
30
+ @IsOptional()
31
+ subject?: string;
32
+
33
+ @IsString()
34
+ @IsOptional()
35
+ body?: string;
36
+
37
+ @IsObject()
38
+ @IsOptional()
39
+ variables?: Record<string, string>;
40
+
41
+ /** `false` renderiza o corpo sem o layout base. */
42
+ @IsBoolean()
43
+ @IsOptional()
44
+ use_layout?: boolean;
45
+
46
+ @ValidateNested()
47
+ @Type(() => PreviewLayoutDTO)
48
+ @IsOptional()
49
+ layout?: PreviewLayoutDTO;
50
+ }
@@ -1,5 +1,5 @@
1
1
  import { getLocaleText } from '@hed-hog/api-locale';
2
- import { IsNotEmpty, IsObject, IsString } from 'class-validator';
2
+ import { IsNotEmpty, IsObject, IsOptional, IsString } from 'class-validator';
3
3
 
4
4
  export class SendTemplatedMailDTO {
5
5
  @IsString({ message: (args) => getLocaleText('validation.stringRequired', args.value) })
@@ -12,4 +12,17 @@ export class SendTemplatedMailDTO {
12
12
 
13
13
  @IsObject({ message: (args) => getLocaleText('validation.objectRequired', args.value) })
14
14
  variables: Record<string, string>;
15
+
16
+ /**
17
+ * Slug do perfil de integração de e-mail a usar neste envio.
18
+ * Quando ausente, vale o perfil global do setting `mail-integration-profile-id`.
19
+ */
20
+ @IsOptional()
21
+ @IsString({ message: (args) => getLocaleText('validation.stringRequired', args.value) })
22
+ profileSlug?: string;
23
+
24
+ /** Chave do app de origem (ex.: "class"), usada para resolver o nome de marca via a setting `app-names`. */
25
+ @IsOptional()
26
+ @IsString({ message: (args) => getLocaleText('validation.stringRequired', args.value) })
27
+ app?: string;
15
28
  }
@@ -0,0 +1,197 @@
1
+ import { describe, it, expect } from '@jest/globals';
2
+ import { DEFAULT_MAIL_LAYOUT, renderMailTemplate } from '@hed-hog/api-mail';
3
+
4
+ // Testes do renderizador de e-mail moram aqui (e nao em packages/api-mail)
5
+ // porque o api-mail nao tem jest configurado; o jest do core resolve o pacote.
6
+
7
+ describe('renderMailTemplate', () => {
8
+ it('devolve string vazia quando nao ha corpo', () => {
9
+ expect(renderMailTemplate({ subject: 'Oi', body: '' })).toBe('');
10
+ expect(renderMailTemplate({ subject: 'Oi', body: ' ' })).toBe('');
11
+ expect(renderMailTemplate({ subject: 'Oi' })).toBe('');
12
+ });
13
+
14
+ it('devolve documentos HTML completos intactos, sem envolver', () => {
15
+ const doc = '<!DOCTYPE html><html><body>Ja pronto</body></html>';
16
+ expect(renderMailTemplate({ subject: 'Oi', body: doc })).toBe(doc);
17
+
18
+ const noDoctype = '<html lang="pt"><body>Ja pronto</body></html>';
19
+ expect(renderMailTemplate({ subject: 'Oi', body: noDoctype })).toBe(
20
+ noDoctype,
21
+ );
22
+ });
23
+
24
+ it('usa o layout embutido quando nenhum layout e informado', () => {
25
+ const html = renderMailTemplate({
26
+ subject: 'Bem-vindo',
27
+ body: '<p>Ola</p>',
28
+ });
29
+
30
+ expect(html).toContain('<!DOCTYPE html>');
31
+ expect(html).toContain('class="panel-accent"');
32
+ expect(html).toContain('<p>Ola</p>');
33
+ expect(html).toContain('HedHog');
34
+ // Nenhum token pode sobrar no HTML final.
35
+ expect(html).not.toContain('{{{content}}}');
36
+ expect(html).not.toContain('{{subject}}');
37
+ });
38
+
39
+ it('escapa o assunto no title e no header', () => {
40
+ const html = renderMailTemplate({
41
+ subject: '<script>alert(1)</script>',
42
+ body: '<p>Ola</p>',
43
+ });
44
+
45
+ expect(html).toContain('&lt;script&gt;alert(1)&lt;/script&gt;');
46
+ expect(html).not.toContain('<title><script>');
47
+ });
48
+
49
+ it('resolve {{subject}} dentro do header', () => {
50
+ const html = renderMailTemplate({
51
+ subject: 'Assunto X',
52
+ body: 'corpo',
53
+ layout: {
54
+ wrapper: '<html><body>{{{header}}}|{{{content}}}</body></html>',
55
+ header: '<h1>{{subject}}</h1>',
56
+ footer: '',
57
+ },
58
+ });
59
+
60
+ expect(html).toContain('<h1>Assunto X</h1>');
61
+ });
62
+
63
+ it('preserva $& e $1 no conteudo do usuario', () => {
64
+ // Regressao: String.replace(string, string) interpretaria esses padroes
65
+ // como referencias de captura e corromperia o HTML silenciosamente.
66
+ const body = "<p>Total: $1,00 e $& e $` e $'</p>";
67
+ const html = renderMailTemplate({
68
+ subject: 'Cobranca',
69
+ body,
70
+ layout: {
71
+ wrapper: '<html><body>{{{content}}}</body></html>',
72
+ header: '',
73
+ footer: '',
74
+ },
75
+ });
76
+
77
+ expect(html).toBe(`<html><body>${body}</body></html>`);
78
+ });
79
+
80
+ it('preserva $& tambem no header e no footer', () => {
81
+ const html = renderMailTemplate({
82
+ subject: 'x',
83
+ body: 'corpo',
84
+ layout: {
85
+ wrapper: '<html>{{{header}}}|{{{content}}}|{{{footer}}}</html>',
86
+ header: 'H$&H',
87
+ footer: 'F$1F',
88
+ },
89
+ });
90
+
91
+ expect(html).toBe('<html>H$&H|corpo|F$1F</html>');
92
+ });
93
+
94
+ it('nao reinterpreta tokens presentes no corpo do usuario', () => {
95
+ // O conteudo entra por ultimo justamente para isto: um corpo que contenha
96
+ // "{{{footer}}}" e texto, nao um slot a preencher.
97
+ const html = renderMailTemplate({
98
+ subject: 'x',
99
+ body: 'texto {{{footer}}} literal',
100
+ layout: {
101
+ wrapper: '<html>{{{content}}}|{{{footer}}}</html>',
102
+ header: '',
103
+ footer: 'RODAPE',
104
+ },
105
+ });
106
+
107
+ expect(html).toBe('<html>texto {{{footer}}} literal|RODAPE</html>');
108
+ });
109
+
110
+ it('devolve o corpo sem envelope quando o wrapper esta vazio', () => {
111
+ expect(
112
+ renderMailTemplate({
113
+ subject: 'x',
114
+ body: '<p>solto</p>',
115
+ layout: { wrapper: '', header: 'H', footer: 'F' },
116
+ }),
117
+ ).toBe('<p>solto</p>');
118
+ });
119
+
120
+ it('respeita header e footer vazios salvos pelo admin', () => {
121
+ const html = renderMailTemplate({
122
+ subject: 'x',
123
+ body: 'corpo',
124
+ layout: {
125
+ wrapper: '<html>[{{{header}}}]{{{content}}}[{{{footer}}}]</html>',
126
+ header: '',
127
+ footer: '',
128
+ },
129
+ });
130
+
131
+ expect(html).toBe('<html>[]corpo[]</html>');
132
+ });
133
+
134
+ it('substitui brandName, lang e year', () => {
135
+ const html = renderMailTemplate({
136
+ subject: 'x',
137
+ body: 'corpo',
138
+ brandName: 'Acme',
139
+ lang: 'pt',
140
+ layout: {
141
+ wrapper: '<html lang="{{lang}}">{{brandName}} {{year}} {{{content}}}</html>',
142
+ header: '',
143
+ footer: '',
144
+ },
145
+ });
146
+
147
+ expect(html).toContain('lang="pt"');
148
+ expect(html).toContain('Acme');
149
+ expect(html).toContain(String(new Date().getFullYear()));
150
+ });
151
+
152
+ it('escapa brandName vindo do setting', () => {
153
+ const html = renderMailTemplate({
154
+ subject: 'x',
155
+ body: 'corpo',
156
+ brandName: 'A & B <b>',
157
+ layout: {
158
+ wrapper: '<html>{{brandName}}{{{content}}}</html>',
159
+ header: '',
160
+ footer: '',
161
+ },
162
+ });
163
+
164
+ expect(html).toContain('A &amp; B &lt;b&gt;');
165
+ });
166
+
167
+ it('aceita {{content}} alem de {{{content}}}', () => {
168
+ const html = renderMailTemplate({
169
+ subject: 'x',
170
+ body: 'corpo',
171
+ layout: { wrapper: '<html>{{content}}</html>', header: '', footer: '' },
172
+ });
173
+
174
+ expect(html).toBe('<html>corpo</html>');
175
+ });
176
+
177
+ it('usa o assunto como marca de fallback quando nao ha assunto', () => {
178
+ const html = renderMailTemplate({
179
+ body: 'corpo',
180
+ brandName: 'Acme',
181
+ layout: {
182
+ wrapper: '<html>{{subject}}|{{{content}}}</html>',
183
+ header: '',
184
+ footer: '',
185
+ },
186
+ });
187
+
188
+ expect(html).toBe('<html>Acme|corpo</html>');
189
+ });
190
+
191
+ it('DEFAULT_MAIL_LAYOUT expoe os tres slots', () => {
192
+ expect(DEFAULT_MAIL_LAYOUT.wrapper).toContain('{{{content}}}');
193
+ expect(DEFAULT_MAIL_LAYOUT.wrapper).toContain('{{{header}}}');
194
+ expect(DEFAULT_MAIL_LAYOUT.wrapper).toContain('{{{footer}}}');
195
+ expect(DEFAULT_MAIL_LAYOUT.header).toContain('{{brandName}}');
196
+ });
197
+ });
@@ -1,6 +1,5 @@
1
1
  import { DeleteDTO, Role } from '@hed-hog/api';
2
2
  import { Locale } from '@hed-hog/api-locale';
3
- import { renderMailTemplate } from '@hed-hog/api-mail';
4
3
  import { Pagination } from '@hed-hog/api-pagination';
5
4
  import {
6
5
  Body,
@@ -20,6 +19,7 @@ import {
20
19
  import { Response } from 'express';
21
20
  import { CreateDTO } from './dto/create.dto';
22
21
  import { ImportDTO } from './dto/import.dto';
22
+ import { PreviewDTO } from './dto/preview.dto';
23
23
  import { TestMailDTO } from './dto/test-mail.dto';
24
24
  import { UpdateDTO } from './dto/update.dto';
25
25
  import { MailService } from './mail.service';
@@ -57,7 +57,9 @@ export class MailController {
57
57
  ) {
58
58
  const locale = queryLocale || decoratorLocale;
59
59
  const mail = await this.mailService.get(locale, id);
60
- const html = renderMailTemplate({
60
+ // Passa pelo preview para que o arquivo baixado use o mesmo layout base do
61
+ // envio real, e nao uma segunda renderizacao que diverge com o tempo.
62
+ const { html } = await this.mailService.preview(locale, {
61
63
  subject: mail.subject,
62
64
  body: mail.body,
63
65
  });
@@ -66,6 +68,11 @@ export class MailController {
66
68
  res.send(html);
67
69
  }
68
70
 
71
+ @Post('preview')
72
+ async preview(@Locale() decoratorLocale: string, @Body() data: PreviewDTO, @Query('locale') queryLocale?: string) {
73
+ return this.mailService.preview(queryLocale || decoratorLocale, data);
74
+ }
75
+
69
76
  @Post()
70
77
  async create(@Body() data: CreateDTO) {
71
78
  return this.mailService.create(data);