@hed-hog/core 0.0.398 → 0.0.400

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 (664) hide show
  1. package/dist/ai/ai-agent.sort.d.ts +6 -0
  2. package/dist/ai/ai-agent.sort.d.ts.map +1 -0
  3. package/dist/ai/ai-agent.sort.js +21 -0
  4. package/dist/ai/ai-agent.sort.js.map +1 -0
  5. package/dist/ai/ai.controller.d.ts +4 -4
  6. package/dist/ai/ai.service.d.ts +35 -4
  7. package/dist/ai/ai.service.d.ts.map +1 -1
  8. package/dist/ai/ai.service.js +51 -137
  9. package/dist/ai/ai.service.js.map +1 -1
  10. package/dist/ai-instruction/ai-instruction.service.d.ts.map +1 -1
  11. package/dist/ai-instruction/ai-instruction.service.js +26 -23
  12. package/dist/ai-instruction/ai-instruction.service.js.map +1 -1
  13. package/dist/ai-instruction/ai-instruction.sort.d.ts +16 -0
  14. package/dist/ai-instruction/ai-instruction.sort.d.ts.map +1 -0
  15. package/dist/ai-instruction/ai-instruction.sort.js +32 -0
  16. package/dist/ai-instruction/ai-instruction.sort.js.map +1 -0
  17. package/dist/auth/auth.controller.d.ts +24 -8
  18. package/dist/auth/auth.controller.d.ts.map +1 -1
  19. package/dist/auth/auth.module.d.ts.map +1 -1
  20. package/dist/auth/auth.module.js +8 -1
  21. package/dist/auth/auth.module.js.map +1 -1
  22. package/dist/auth/auth.service.d.ts +72 -25
  23. package/dist/auth/auth.service.d.ts.map +1 -1
  24. package/dist/auth/auth.service.js +41 -4
  25. package/dist/auth/auth.service.js.map +1 -1
  26. package/dist/auth/guards/auth.guard.d.ts +3 -1
  27. package/dist/auth/guards/auth.guard.d.ts.map +1 -1
  28. package/dist/auth/guards/auth.guard.js +12 -3
  29. package/dist/auth/guards/auth.guard.js.map +1 -1
  30. package/dist/authorize/authorize.controller.d.ts +30 -6
  31. package/dist/authorize/authorize.controller.d.ts.map +1 -1
  32. package/dist/authorize/authorize.controller.js +120 -13
  33. package/dist/authorize/authorize.controller.js.map +1 -1
  34. package/dist/authorize/authorize.errors.d.ts +34 -0
  35. package/dist/authorize/authorize.errors.d.ts.map +1 -0
  36. package/dist/authorize/authorize.errors.js +37 -0
  37. package/dist/authorize/authorize.errors.js.map +1 -0
  38. package/dist/authorize/authorize.module.d.ts.map +1 -1
  39. package/dist/authorize/authorize.module.js +6 -1
  40. package/dist/authorize/authorize.module.js.map +1 -1
  41. package/dist/authorize/authorize.service.d.ts +78 -4
  42. package/dist/authorize/authorize.service.d.ts.map +1 -1
  43. package/dist/authorize/authorize.service.js +212 -21
  44. package/dist/authorize/authorize.service.js.map +1 -1
  45. package/dist/authorize/dto/authorize-info.dto.d.ts +10 -1
  46. package/dist/authorize/dto/authorize-info.dto.d.ts.map +1 -1
  47. package/dist/authorize/dto/authorize-info.dto.js +16 -1
  48. package/dist/authorize/dto/authorize-info.dto.js.map +1 -1
  49. package/dist/authorize/dto/consent.dto.d.ts +10 -1
  50. package/dist/authorize/dto/consent.dto.d.ts.map +1 -1
  51. package/dist/authorize/dto/consent.dto.js +16 -1
  52. package/dist/authorize/dto/consent.dto.js.map +1 -1
  53. package/dist/authorize/dto/token.dto.d.ts +12 -0
  54. package/dist/authorize/dto/token.dto.d.ts.map +1 -1
  55. package/dist/authorize/dto/token.dto.js +21 -1
  56. package/dist/authorize/dto/token.dto.js.map +1 -1
  57. package/dist/authorize/oauth-exception.filter.d.ts +17 -0
  58. package/dist/authorize/oauth-exception.filter.d.ts.map +1 -0
  59. package/dist/authorize/oauth-exception.filter.js +54 -0
  60. package/dist/authorize/oauth-exception.filter.js.map +1 -0
  61. package/dist/authorize/oauth-metadata.service.d.ts +39 -0
  62. package/dist/authorize/oauth-metadata.service.d.ts.map +1 -0
  63. package/dist/authorize/oauth-metadata.service.js +81 -0
  64. package/dist/authorize/oauth-metadata.service.js.map +1 -0
  65. package/dist/authorize/well-known.controller.d.ts +67 -0
  66. package/dist/authorize/well-known.controller.d.ts.map +1 -0
  67. package/dist/authorize/well-known.controller.js +126 -0
  68. package/dist/authorize/well-known.controller.js.map +1 -0
  69. package/dist/captcha/captcha.service.d.ts +32 -2
  70. package/dist/captcha/captcha.service.d.ts.map +1 -1
  71. package/dist/captcha/captcha.service.js +85 -12
  72. package/dist/captcha/captcha.service.js.map +1 -1
  73. package/dist/challenge/challenge.service.d.ts +2 -2
  74. package/dist/core.module.d.ts.map +1 -1
  75. package/dist/core.module.js +6 -0
  76. package/dist/core.module.js.map +1 -1
  77. package/dist/dashboard/dashboard/dashboard.controller.d.ts +9 -9
  78. package/dist/dashboard/dashboard/dashboard.service.d.ts +9 -9
  79. package/dist/dashboard/dashboard-component/dashboard-component.controller.d.ts +3 -3
  80. package/dist/dashboard/dashboard-component/dashboard-component.service.d.ts +3 -3
  81. package/dist/dashboard/dashboard-component-role/dashboard-component-role.controller.d.ts +3 -3
  82. package/dist/dashboard/dashboard-component-role/dashboard-component-role.service.d.ts +3 -3
  83. package/dist/dashboard/dashboard-component-role/dashboard-component-role.service.d.ts.map +1 -1
  84. package/dist/dashboard/dashboard-component-role/dashboard-component-role.service.js +2 -4
  85. package/dist/dashboard/dashboard-component-role/dashboard-component-role.service.js.map +1 -1
  86. package/dist/dashboard/dashboard-component-role/dashboard-component-role.sort.d.ts +8 -0
  87. package/dist/dashboard/dashboard-component-role/dashboard-component-role.sort.d.ts.map +1 -0
  88. package/dist/dashboard/dashboard-component-role/dashboard-component-role.sort.js +18 -0
  89. package/dist/dashboard/dashboard-component-role/dashboard-component-role.sort.js.map +1 -0
  90. package/dist/dashboard/dashboard-item/dashboard-item.service.d.ts.map +1 -1
  91. package/dist/dashboard/dashboard-item/dashboard-item.service.js +2 -4
  92. package/dist/dashboard/dashboard-item/dashboard-item.service.js.map +1 -1
  93. package/dist/dashboard/dashboard-item/dashboard-item.sort.d.ts +9 -0
  94. package/dist/dashboard/dashboard-item/dashboard-item.sort.d.ts.map +1 -0
  95. package/dist/dashboard/dashboard-item/dashboard-item.sort.js +19 -0
  96. package/dist/dashboard/dashboard-item/dashboard-item.sort.js.map +1 -0
  97. package/dist/dashboard/dashboard-role/dashboard-role.controller.d.ts +3 -3
  98. package/dist/dashboard/dashboard-role/dashboard-role.service.d.ts +3 -3
  99. package/dist/dashboard/dashboard-role/dashboard-role.service.d.ts.map +1 -1
  100. package/dist/dashboard/dashboard-role/dashboard-role.service.js +2 -4
  101. package/dist/dashboard/dashboard-role/dashboard-role.service.js.map +1 -1
  102. package/dist/dashboard/dashboard-role/dashboard-role.sort.d.ts +8 -0
  103. package/dist/dashboard/dashboard-role/dashboard-role.sort.d.ts.map +1 -0
  104. package/dist/dashboard/dashboard-role/dashboard-role.sort.js +16 -0
  105. package/dist/dashboard/dashboard-role/dashboard-role.sort.js.map +1 -0
  106. package/dist/file/file-upload-ticket.service.d.ts +160 -0
  107. package/dist/file/file-upload-ticket.service.d.ts.map +1 -0
  108. package/dist/file/file-upload-ticket.service.js +382 -0
  109. package/dist/file/file-upload-ticket.service.js.map +1 -0
  110. package/dist/file/file.controller.d.ts +24 -1
  111. package/dist/file/file.controller.d.ts.map +1 -1
  112. package/dist/file/file.controller.js +63 -2
  113. package/dist/file/file.controller.js.map +1 -1
  114. package/dist/file/file.module.d.ts.map +1 -1
  115. package/dist/file/file.module.js +14 -2
  116. package/dist/file/file.module.js.map +1 -1
  117. package/dist/file/file.service.d.ts +182 -6
  118. package/dist/file/file.service.d.ts.map +1 -1
  119. package/dist/file/file.service.js +385 -36
  120. package/dist/file/file.service.js.map +1 -1
  121. package/dist/file/filename-encoding.util.d.ts +24 -0
  122. package/dist/file/filename-encoding.util.d.ts.map +1 -0
  123. package/dist/file/filename-encoding.util.js +63 -0
  124. package/dist/file/filename-encoding.util.js.map +1 -0
  125. package/dist/file/image-optimization.service.d.ts +27 -0
  126. package/dist/file/image-optimization.service.d.ts.map +1 -1
  127. package/dist/file/image-optimization.service.js +63 -14
  128. package/dist/file/image-optimization.service.js.map +1 -1
  129. package/dist/file/mcp-file-source.schema.d.ts +33 -0
  130. package/dist/file/mcp-file-source.schema.d.ts.map +1 -0
  131. package/dist/file/mcp-file-source.schema.js +75 -0
  132. package/dist/file/mcp-file-source.schema.js.map +1 -0
  133. package/dist/file/mcp-file-source.service.d.ts +124 -0
  134. package/dist/file/mcp-file-source.service.d.ts.map +1 -0
  135. package/dist/file/mcp-file-source.service.js +262 -0
  136. package/dist/file/mcp-file-source.service.js.map +1 -0
  137. package/dist/file/mimetype-sniff.util.d.ts +62 -0
  138. package/dist/file/mimetype-sniff.util.d.ts.map +1 -0
  139. package/dist/file/mimetype-sniff.util.js +226 -0
  140. package/dist/file/mimetype-sniff.util.js.map +1 -0
  141. package/dist/file/remote-fetch.util.d.ts +35 -0
  142. package/dist/file/remote-fetch.util.d.ts.map +1 -0
  143. package/dist/file/remote-fetch.util.js +236 -0
  144. package/dist/file/remote-fetch.util.js.map +1 -0
  145. package/dist/impersonation/dto/start-impersonation.dto.d.ts +4 -1
  146. package/dist/impersonation/dto/start-impersonation.dto.d.ts.map +1 -1
  147. package/dist/impersonation/dto/start-impersonation.dto.js +1 -1
  148. package/dist/impersonation/dto/start-impersonation.dto.js.map +1 -1
  149. package/dist/impersonation/impersonation.service.d.ts +8 -3
  150. package/dist/impersonation/impersonation.service.d.ts.map +1 -1
  151. package/dist/impersonation/impersonation.service.js +14 -4
  152. package/dist/impersonation/impersonation.service.js.map +1 -1
  153. package/dist/incident/incident.controller.d.ts +2 -1
  154. package/dist/incident/incident.controller.d.ts.map +1 -1
  155. package/dist/incident/incident.controller.js +10 -6
  156. package/dist/incident/incident.controller.js.map +1 -1
  157. package/dist/incident/incident.service.d.ts +2 -0
  158. package/dist/incident/incident.service.d.ts.map +1 -1
  159. package/dist/incident/incident.service.js +4 -0
  160. package/dist/incident/incident.service.js.map +1 -1
  161. package/dist/index.d.ts +17 -0
  162. package/dist/index.d.ts.map +1 -1
  163. package/dist/index.js +17 -0
  164. package/dist/index.js.map +1 -1
  165. package/dist/integration-profile/integration-profile.secrets.d.ts.map +1 -1
  166. package/dist/integration-profile/integration-profile.secrets.js +7 -0
  167. package/dist/integration-profile/integration-profile.secrets.js.map +1 -1
  168. package/dist/integration-profile/integration-profile.service.d.ts +0 -13
  169. package/dist/integration-profile/integration-profile.service.d.ts.map +1 -1
  170. package/dist/integration-profile/integration-profile.service.js +5 -40
  171. package/dist/integration-profile/integration-profile.service.js.map +1 -1
  172. package/dist/integration-profile/integration-profile.utils.js +5 -5
  173. package/dist/integration-profile/integration-profile.utils.js.map +1 -1
  174. package/dist/integration-profile/testers/index.d.ts.map +1 -1
  175. package/dist/integration-profile/testers/index.js +2 -0
  176. package/dist/integration-profile/testers/index.js.map +1 -1
  177. package/dist/integration-profile/testers/shipping.testers.d.ts +3 -0
  178. package/dist/integration-profile/testers/shipping.testers.d.ts.map +1 -0
  179. package/dist/integration-profile/testers/shipping.testers.js +71 -0
  180. package/dist/integration-profile/testers/shipping.testers.js.map +1 -0
  181. package/dist/locale/locale.controller.d.ts +1 -1
  182. package/dist/locale/locale.service.d.ts +1 -1
  183. package/dist/mail/dto/send.dto.d.ts +6 -1
  184. package/dist/mail/dto/send.dto.d.ts.map +1 -1
  185. package/dist/mail/dto/send.dto.js.map +1 -1
  186. package/dist/mail/mail.service.d.ts +9 -0
  187. package/dist/mail/mail.service.d.ts.map +1 -1
  188. package/dist/mail/mail.service.js +34 -14
  189. package/dist/mail/mail.service.js.map +1 -1
  190. package/dist/mail-sent/mail-sent.controller.d.ts +1 -1
  191. package/dist/mail-sent/mail-sent.service.d.ts +1 -1
  192. package/dist/mail-sent/mail-sent.service.d.ts.map +1 -1
  193. package/dist/mail-sent/mail-sent.service.js +2 -1
  194. package/dist/mail-sent/mail-sent.service.js.map +1 -1
  195. package/dist/mail-sent/mail-sent.sort.d.ts +9 -0
  196. package/dist/mail-sent/mail-sent.sort.d.ts.map +1 -0
  197. package/dist/mail-sent/mail-sent.sort.js +19 -0
  198. package/dist/mail-sent/mail-sent.sort.js.map +1 -0
  199. package/dist/mcp/filters/mcp-challenge.filter.d.ts +20 -0
  200. package/dist/mcp/filters/mcp-challenge.filter.d.ts.map +1 -0
  201. package/dist/mcp/filters/mcp-challenge.filter.js +69 -0
  202. package/dist/mcp/filters/mcp-challenge.filter.js.map +1 -0
  203. package/dist/mcp/guards/mcp-auth.guard.d.ts +4 -1
  204. package/dist/mcp/guards/mcp-auth.guard.d.ts.map +1 -1
  205. package/dist/mcp/guards/mcp-auth.guard.js +19 -5
  206. package/dist/mcp/guards/mcp-auth.guard.js.map +1 -1
  207. package/dist/mcp/guards/mcp-permission.guard.d.ts +25 -3
  208. package/dist/mcp/guards/mcp-permission.guard.d.ts.map +1 -1
  209. package/dist/mcp/guards/mcp-permission.guard.js +46 -26
  210. package/dist/mcp/guards/mcp-permission.guard.js.map +1 -1
  211. package/dist/mcp/mcp-audit.service.d.ts +17 -0
  212. package/dist/mcp/mcp-audit.service.d.ts.map +1 -1
  213. package/dist/mcp/mcp-audit.service.js +32 -3
  214. package/dist/mcp/mcp-audit.service.js.map +1 -1
  215. package/dist/mcp/mcp-permission.service.d.ts +64 -0
  216. package/dist/mcp/mcp-permission.service.d.ts.map +1 -0
  217. package/dist/mcp/mcp-permission.service.js +178 -0
  218. package/dist/mcp/mcp-permission.service.js.map +1 -0
  219. package/dist/mcp/mcp-server.service.d.ts +3 -1
  220. package/dist/mcp/mcp-server.service.d.ts.map +1 -1
  221. package/dist/mcp/mcp-server.service.js +36 -15
  222. package/dist/mcp/mcp-server.service.js.map +1 -1
  223. package/dist/mcp/mcp.controller.d.ts.map +1 -1
  224. package/dist/mcp/mcp.controller.js +10 -2
  225. package/dist/mcp/mcp.controller.js.map +1 -1
  226. package/dist/mcp/mcp.module.d.ts.map +1 -1
  227. package/dist/mcp/mcp.module.js +5 -1
  228. package/dist/mcp/mcp.module.js.map +1 -1
  229. package/dist/mcp/tools/core-ai.mcp-tools.js +2 -9
  230. package/dist/mcp/tools/core-ai.mcp-tools.js.map +1 -1
  231. package/dist/mcp/tools/core-dashboard-items.mcp-tools.js +1 -1
  232. package/dist/mcp/tools/core-dashboard-items.mcp-tools.js.map +1 -1
  233. package/dist/mcp/tools/core-dashboard.mcp-tools.js +2 -9
  234. package/dist/mcp/tools/core-dashboard.mcp-tools.js.map +1 -1
  235. package/dist/mcp/tools/core-event-webhooks.mcp-tools.d.ts.map +1 -1
  236. package/dist/mcp/tools/core-event-webhooks.mcp-tools.js +2 -10
  237. package/dist/mcp/tools/core-event-webhooks.mcp-tools.js.map +1 -1
  238. package/dist/mcp/tools/core-files.mcp-tools.d.ts +17 -5
  239. package/dist/mcp/tools/core-files.mcp-tools.d.ts.map +1 -1
  240. package/dist/mcp/tools/core-files.mcp-tools.js +186 -24
  241. package/dist/mcp/tools/core-files.mcp-tools.js.map +1 -1
  242. package/dist/mcp/tools/core-integration-events.mcp-tools.js +2 -9
  243. package/dist/mcp/tools/core-integration-events.mcp-tools.js.map +1 -1
  244. package/dist/mcp/tools/core-mail-sent.mcp-tools.js +2 -14
  245. package/dist/mcp/tools/core-mail-sent.mcp-tools.js.map +1 -1
  246. package/dist/mcp/tools/core-mail.mcp-tools.js +2 -9
  247. package/dist/mcp/tools/core-mail.mcp-tools.js.map +1 -1
  248. package/dist/mcp/tools/core-menus.mcp-tools.d.ts.map +1 -1
  249. package/dist/mcp/tools/core-menus.mcp-tools.js +2 -10
  250. package/dist/mcp/tools/core-menus.mcp-tools.js.map +1 -1
  251. package/dist/mcp/tools/core-notifications.mcp-tools.d.ts.map +1 -1
  252. package/dist/mcp/tools/core-notifications.mcp-tools.js +0 -1
  253. package/dist/mcp/tools/core-notifications.mcp-tools.js.map +1 -1
  254. package/dist/mcp/tools/core-roles.mcp-tools.d.ts.map +1 -1
  255. package/dist/mcp/tools/core-roles.mcp-tools.js +2 -13
  256. package/dist/mcp/tools/core-roles.mcp-tools.js.map +1 -1
  257. package/dist/mcp/tools/core-routes.mcp-tools.d.ts.map +1 -1
  258. package/dist/mcp/tools/core-routes.mcp-tools.js +2 -11
  259. package/dist/mcp/tools/core-routes.mcp-tools.js.map +1 -1
  260. package/dist/mcp/tools/core-screens.mcp-tools.d.ts.map +1 -1
  261. package/dist/mcp/tools/core-screens.mcp-tools.js +2 -11
  262. package/dist/mcp/tools/core-screens.mcp-tools.js.map +1 -1
  263. package/dist/mcp/tools/core-sessions.mcp-tools.d.ts.map +1 -1
  264. package/dist/mcp/tools/core-sessions.mcp-tools.js +0 -2
  265. package/dist/mcp/tools/core-sessions.mcp-tools.js.map +1 -1
  266. package/dist/mcp/tools/core-settings.mcp-tools.d.ts.map +1 -1
  267. package/dist/mcp/tools/core-settings.mcp-tools.js +2 -10
  268. package/dist/mcp/tools/core-settings.mcp-tools.js.map +1 -1
  269. package/dist/mcp/tools/core-users.mcp-tools.js +2 -9
  270. package/dist/mcp/tools/core-users.mcp-tools.js.map +1 -1
  271. package/dist/mcp/tools/core-webhooks.mcp-tools.d.ts.map +1 -1
  272. package/dist/mcp/tools/core-webhooks.mcp-tools.js +2 -10
  273. package/dist/mcp/tools/core-webhooks.mcp-tools.js.map +1 -1
  274. package/dist/mcp/types/mcp-context.type.d.ts +9 -0
  275. package/dist/mcp/types/mcp-context.type.d.ts.map +1 -1
  276. package/dist/mcp-chat/mcp-chat.service.d.ts.map +1 -1
  277. package/dist/mcp-chat/mcp-chat.service.js +8 -0
  278. package/dist/mcp-chat/mcp-chat.service.js.map +1 -1
  279. package/dist/meeting/meeting-provider.registry.d.ts +115 -0
  280. package/dist/meeting/meeting-provider.registry.d.ts.map +1 -1
  281. package/dist/meeting/meeting-provider.registry.js.map +1 -1
  282. package/dist/meeting/meeting.constants.d.ts +70 -0
  283. package/dist/meeting/meeting.constants.d.ts.map +1 -1
  284. package/dist/meeting/meeting.constants.js +9 -1
  285. package/dist/meeting/meeting.constants.js.map +1 -1
  286. package/dist/menu/menu.service.d.ts.map +1 -1
  287. package/dist/menu/menu.service.js +29 -9
  288. package/dist/menu/menu.service.js.map +1 -1
  289. package/dist/message-template/dto/update-message-template.dto.d.ts +18 -0
  290. package/dist/message-template/dto/update-message-template.dto.d.ts.map +1 -0
  291. package/dist/message-template/dto/update-message-template.dto.js +38 -0
  292. package/dist/message-template/dto/update-message-template.dto.js.map +1 -0
  293. package/dist/message-template/message-template-admin.service.d.ts +70 -0
  294. package/dist/message-template/message-template-admin.service.d.ts.map +1 -0
  295. package/dist/message-template/message-template-admin.service.js +226 -0
  296. package/dist/message-template/message-template-admin.service.js.map +1 -0
  297. package/dist/message-template/message-template.controller.d.ts +29 -0
  298. package/dist/message-template/message-template.controller.d.ts.map +1 -0
  299. package/dist/message-template/message-template.controller.js +101 -0
  300. package/dist/message-template/message-template.controller.js.map +1 -0
  301. package/dist/message-template/message-template.module.d.ts +10 -0
  302. package/dist/message-template/message-template.module.d.ts.map +1 -0
  303. package/dist/message-template/message-template.module.js +33 -0
  304. package/dist/message-template/message-template.module.js.map +1 -0
  305. package/dist/message-template/message-template.registry.d.ts +55 -0
  306. package/dist/message-template/message-template.registry.d.ts.map +1 -0
  307. package/dist/message-template/message-template.registry.js +64 -0
  308. package/dist/message-template/message-template.registry.js.map +1 -0
  309. package/dist/message-template/message-template.service.d.ts +59 -0
  310. package/dist/message-template/message-template.service.d.ts.map +1 -0
  311. package/dist/message-template/message-template.service.js +166 -0
  312. package/dist/message-template/message-template.service.js.map +1 -0
  313. package/dist/notification/notification.constants.d.ts +11 -0
  314. package/dist/notification/notification.constants.d.ts.map +1 -0
  315. package/dist/notification/notification.constants.js +14 -0
  316. package/dist/notification/notification.constants.js.map +1 -0
  317. package/dist/notification/notification.controller.d.ts +20 -20
  318. package/dist/notification/notification.module.d.ts.map +1 -1
  319. package/dist/notification/notification.module.js +3 -0
  320. package/dist/notification/notification.module.js.map +1 -1
  321. package/dist/notification/notification.service.d.ts +33 -21
  322. package/dist/notification/notification.service.d.ts.map +1 -1
  323. package/dist/notification/notification.service.js +36 -2
  324. package/dist/notification/notification.service.js.map +1 -1
  325. package/dist/oauth/oauth.controller.d.ts +4 -6
  326. package/dist/oauth/oauth.controller.d.ts.map +1 -1
  327. package/dist/oauth/oauth.controller.js +0 -1
  328. package/dist/oauth/oauth.controller.js.map +1 -1
  329. package/dist/oauth/oauth.errors.d.ts +15 -1
  330. package/dist/oauth/oauth.errors.d.ts.map +1 -1
  331. package/dist/oauth/oauth.errors.js +9 -1
  332. package/dist/oauth/oauth.errors.js.map +1 -1
  333. package/dist/oauth/oauth.module.d.ts.map +1 -1
  334. package/dist/oauth/oauth.module.js +6 -1
  335. package/dist/oauth/oauth.module.js.map +1 -1
  336. package/dist/oauth/oauth.service.d.ts +25 -5
  337. package/dist/oauth/oauth.service.d.ts.map +1 -1
  338. package/dist/oauth/oauth.service.js +63 -27
  339. package/dist/oauth/oauth.service.js.map +1 -1
  340. package/dist/oauth/providers/abstract.provider.d.ts +10 -0
  341. package/dist/oauth/providers/abstract.provider.d.ts.map +1 -1
  342. package/dist/oauth/providers/abstract.provider.js +39 -12
  343. package/dist/oauth/providers/abstract.provider.js.map +1 -1
  344. package/dist/oauth/providers/github.provider.d.ts +1 -1
  345. package/dist/oauth/providers/github.provider.d.ts.map +1 -1
  346. package/dist/oauth/providers/github.provider.js +48 -22
  347. package/dist/oauth/providers/github.provider.js.map +1 -1
  348. package/dist/oauth/providers/microsoft-entra-id.provider.d.ts.map +1 -1
  349. package/dist/oauth/providers/microsoft-entra-id.provider.js +6 -0
  350. package/dist/oauth/providers/microsoft-entra-id.provider.js.map +1 -1
  351. package/dist/observability/monitored-cron.d.ts +29 -12
  352. package/dist/observability/monitored-cron.d.ts.map +1 -1
  353. package/dist/observability/monitored-cron.js +131 -46
  354. package/dist/observability/monitored-cron.js.map +1 -1
  355. package/dist/pairing/pairing.controller.d.ts +9 -9
  356. package/dist/pairing/pairing.service.d.ts +15 -11
  357. package/dist/pairing/pairing.service.d.ts.map +1 -1
  358. package/dist/profile/dto/change-password.dto.d.ts.map +1 -1
  359. package/dist/profile/dto/change-password.dto.js +4 -6
  360. package/dist/profile/dto/change-password.dto.js.map +1 -1
  361. package/dist/profile/profile.controller.d.ts +1 -1
  362. package/dist/profile/profile.service.d.ts +1 -1
  363. package/dist/profile/profile.service.d.ts.map +1 -1
  364. package/dist/profile/profile.service.js +9 -3
  365. package/dist/profile/profile.service.js.map +1 -1
  366. package/dist/realtime/realtime-tick.coalescer.d.ts +34 -0
  367. package/dist/realtime/realtime-tick.coalescer.d.ts.map +1 -0
  368. package/dist/realtime/realtime-tick.coalescer.js +60 -0
  369. package/dist/realtime/realtime-tick.coalescer.js.map +1 -0
  370. package/dist/realtime/realtime.service.d.ts +2 -0
  371. package/dist/realtime/realtime.service.d.ts.map +1 -1
  372. package/dist/realtime/realtime.service.js +22 -2
  373. package/dist/realtime/realtime.service.js.map +1 -1
  374. package/dist/redis/redis-kv.service.d.ts +90 -0
  375. package/dist/redis/redis-kv.service.d.ts.map +1 -0
  376. package/dist/redis/redis-kv.service.js +247 -0
  377. package/dist/redis/redis-kv.service.js.map +1 -0
  378. package/dist/redis/redis-master.d.ts +29 -0
  379. package/dist/redis/redis-master.d.ts.map +1 -0
  380. package/dist/redis/redis-master.js +81 -0
  381. package/dist/redis/redis-master.js.map +1 -0
  382. package/dist/redis/redis-pubsub.d.ts +12 -0
  383. package/dist/redis/redis-pubsub.d.ts.map +1 -1
  384. package/dist/redis/redis-pubsub.js +25 -2
  385. package/dist/redis/redis-pubsub.js.map +1 -1
  386. package/dist/redis/redis.module.d.ts +11 -0
  387. package/dist/redis/redis.module.d.ts.map +1 -0
  388. package/dist/redis/redis.module.js +30 -0
  389. package/dist/redis/redis.module.js.map +1 -0
  390. package/dist/session/session.controller.d.ts +6 -2
  391. package/dist/session/session.controller.d.ts.map +1 -1
  392. package/dist/session/session.service.d.ts +118 -15
  393. package/dist/session/session.service.d.ts.map +1 -1
  394. package/dist/session/session.service.js +251 -77
  395. package/dist/session/session.service.js.map +1 -1
  396. package/dist/setting/setting.controller.d.ts +5 -0
  397. package/dist/setting/setting.controller.d.ts.map +1 -1
  398. package/dist/setting/setting.service.d.ts +7 -0
  399. package/dist/setting/setting.service.d.ts.map +1 -1
  400. package/dist/setting/setting.service.js +38 -3
  401. package/dist/setting/setting.service.js.map +1 -1
  402. package/dist/task/task.service.d.ts +17 -0
  403. package/dist/task/task.service.d.ts.map +1 -1
  404. package/dist/task/task.service.js +48 -13
  405. package/dist/task/task.service.js.map +1 -1
  406. package/dist/token/token.service.d.ts +19 -1
  407. package/dist/token/token.service.d.ts.map +1 -1
  408. package/dist/token/token.service.js +39 -2
  409. package/dist/token/token.service.js.map +1 -1
  410. package/dist/user/user-credential.util.d.ts +10 -0
  411. package/dist/user/user-credential.util.d.ts.map +1 -1
  412. package/dist/user/user-credential.util.js +14 -1
  413. package/dist/user/user-credential.util.js.map +1 -1
  414. package/dist/user/user.service.d.ts +12 -4
  415. package/dist/user/user.service.d.ts.map +1 -1
  416. package/dist/user/user.service.js +2 -11
  417. package/dist/user/user.service.js.map +1 -1
  418. package/dist/user/user.sort.d.ts +16 -0
  419. package/dist/user/user.sort.d.ts.map +1 -0
  420. package/dist/user/user.sort.js +25 -0
  421. package/dist/user/user.sort.js.map +1 -0
  422. package/dist/utils/abbreviate-name.d.ts +13 -0
  423. package/dist/utils/abbreviate-name.d.ts.map +1 -0
  424. package/dist/utils/abbreviate-name.js +42 -0
  425. package/dist/utils/abbreviate-name.js.map +1 -0
  426. package/dist/utils/date-range-query.dto.d.ts +11 -0
  427. package/dist/utils/date-range-query.dto.d.ts.map +1 -0
  428. package/dist/utils/date-range-query.dto.js +63 -0
  429. package/dist/utils/date-range-query.dto.js.map +1 -0
  430. package/dist/utils/date-range.d.ts +96 -0
  431. package/dist/utils/date-range.d.ts.map +1 -0
  432. package/dist/utils/date-range.js +172 -0
  433. package/dist/utils/date-range.js.map +1 -0
  434. package/dist/webhook-integration/webhook-utils.d.ts.map +1 -1
  435. package/dist/webhook-integration/webhook-utils.js +24 -0
  436. package/dist/webhook-integration/webhook-utils.js.map +1 -1
  437. package/dist/whatsapp-sender/whatsapp-recipients.d.ts +49 -0
  438. package/dist/whatsapp-sender/whatsapp-recipients.d.ts.map +1 -0
  439. package/dist/whatsapp-sender/whatsapp-recipients.js +66 -0
  440. package/dist/whatsapp-sender/whatsapp-recipients.js.map +1 -0
  441. package/dist/whatsapp-sender/whatsapp-sender.service.d.ts +25 -0
  442. package/dist/whatsapp-sender/whatsapp-sender.service.d.ts.map +1 -1
  443. package/dist/whatsapp-sender/whatsapp-sender.service.js +46 -5
  444. package/dist/whatsapp-sender/whatsapp-sender.service.js.map +1 -1
  445. package/hedhog/data/integration_provider.yaml +9 -0
  446. package/hedhog/data/integration_type.yaml +6 -0
  447. package/hedhog/data/locale.yaml +0 -1
  448. package/hedhog/data/mail.yaml +2 -2
  449. package/hedhog/data/mail_layout.yaml +6 -3
  450. package/hedhog/data/menu.yaml +25 -5
  451. package/hedhog/data/route.yaml +140 -0
  452. package/hedhog/data/setting_group.yaml +137 -3
  453. package/hedhog/frontend/app/access-log/page.tsx.ejs +47 -53
  454. package/hedhog/frontend/app/account/components/active-sessions.tsx.ejs +33 -8
  455. package/hedhog/frontend/app/account/components/mcp-tokens.tsx.ejs +54 -13
  456. package/hedhog/frontend/app/account/components/mfa-method-card.tsx.ejs +7 -1
  457. package/hedhog/frontend/app/account/components/recovery-codes-dialog.tsx.ejs +1 -0
  458. package/hedhog/frontend/app/account/components/tokens.tsx.ejs +47 -17
  459. package/hedhog/frontend/app/ai_agent/page.tsx.ejs +46 -5
  460. package/hedhog/frontend/app/ai_instruction/_components/ai-instruction-form.tsx.ejs +101 -30
  461. package/hedhog/frontend/app/ai_instruction/_components/ai-instruction-versions.tsx.ejs +24 -8
  462. package/hedhog/frontend/app/ai_instruction/page.tsx.ejs +80 -15
  463. package/hedhog/frontend/app/configurations/[slug]/components/image-optimization-action.tsx.ejs +166 -0
  464. package/hedhog/frontend/app/configurations/[slug]/components/setting-field.test.tsx.ejs +145 -45
  465. package/hedhog/frontend/app/configurations/[slug]/components/setting-field.tsx.ejs +99 -219
  466. package/hedhog/frontend/app/configurations/[slug]/page.tsx.ejs +19 -1
  467. package/hedhog/frontend/app/configurations/layout.tsx.ejs +19 -5
  468. package/hedhog/frontend/app/dashboard/[slug]/widget-renderer.tsx.ejs +2 -8
  469. package/hedhog/frontend/app/dashboard/components/dynamic-widget.tsx.ejs +3 -0
  470. package/hedhog/frontend/app/dashboard/components/widget-wrapper.tsx.ejs +4 -0
  471. package/hedhog/frontend/app/dashboard/dashboard-home-tabs.tsx.ejs +43 -44
  472. package/hedhog/frontend/app/dashboard/management/tabs/component-roles-tab.tsx.ejs +41 -3
  473. package/hedhog/frontend/app/dashboard/management/tabs/components-tab.tsx.ejs +42 -2
  474. package/hedhog/frontend/app/dashboard/management/tabs/dashboard-roles-tab.tsx.ejs +41 -3
  475. package/hedhog/frontend/app/dashboard/management/tabs/dashboards-tab.tsx.ejs +39 -4
  476. package/hedhog/frontend/app/dashboard/management/tabs/items-tab.tsx.ejs +42 -3
  477. package/hedhog/frontend/app/incidents/page.tsx.ejs +60 -31
  478. package/hedhog/frontend/app/integration/profiles/page.tsx.ejs +45 -5
  479. package/hedhog/frontend/app/integrations-webhooks/page.tsx.ejs +92 -15
  480. package/hedhog/frontend/app/mail/log/page.tsx.ejs +109 -61
  481. package/hedhog/frontend/app/mail/template/page.tsx.ejs +125 -23
  482. package/hedhog/frontend/app/mcp_chat/chat-components.tsx.ejs +13 -15
  483. package/hedhog/frontend/app/mcp_chat/page.tsx.ejs +116 -110
  484. package/hedhog/frontend/app/message-templates/_components/message-template-sheet.tsx.ejs +245 -0
  485. package/hedhog/frontend/app/message-templates/_lib/types.ts.ejs +24 -0
  486. package/hedhog/frontend/app/message-templates/page.tsx.ejs +182 -0
  487. package/hedhog/frontend/app/pages/_components/page-wizard-sheet.tsx.ejs +1 -0
  488. package/hedhog/frontend/app/pages/page.tsx.ejs +94 -9
  489. package/hedhog/frontend/app/roles/menus.tsx.ejs +4 -4
  490. package/hedhog/frontend/app/roles/routes.tsx.ejs +4 -4
  491. package/hedhog/frontend/app/roles/users.tsx.ejs +4 -4
  492. package/hedhog/frontend/app/setting-list/page.tsx.ejs +71 -9
  493. package/hedhog/frontend/app/users/page.tsx.ejs +77 -67
  494. package/hedhog/frontend/messages/en.json +183 -36
  495. package/hedhog/frontend/messages/pt.json +183 -36
  496. package/hedhog/table/cron_lock.yaml +17 -0
  497. package/hedhog/table/file.yaml +13 -1
  498. package/hedhog/table/file_upload_chunk.yaml +23 -0
  499. package/hedhog/table/file_upload_ticket.yaml +67 -0
  500. package/hedhog/table/mcp_tool_call_log.yaml +30 -22
  501. package/hedhog/table/message_template.yaml +33 -0
  502. package/hedhog/table/setting.yaml +8 -0
  503. package/hedhog/table/user_session.yaml +36 -1
  504. package/package.json +8 -6
  505. package/src/ai/ai-agent.sort.ts +21 -0
  506. package/src/ai/ai.service.spec.ts +173 -1
  507. package/src/ai/ai.service.ts +64 -193
  508. package/src/ai-instruction/ai-instruction.service.ts +32 -28
  509. package/src/ai-instruction/ai-instruction.sort.ts +32 -0
  510. package/src/auth/auth.module.ts +8 -1
  511. package/src/auth/auth.service.spec.ts +108 -1
  512. package/src/auth/auth.service.ts +59 -5
  513. package/src/auth/guards/auth.guard.ts +9 -1
  514. package/src/authorize/authorize.controller.ts +126 -11
  515. package/src/authorize/authorize.errors.ts +55 -0
  516. package/src/authorize/authorize.module.ts +6 -1
  517. package/src/authorize/authorize.service.spec.ts +379 -7
  518. package/src/authorize/authorize.service.ts +309 -23
  519. package/src/authorize/dto/authorize-info.dto.ts +21 -3
  520. package/src/authorize/dto/consent.dto.ts +21 -3
  521. package/src/authorize/dto/token.dto.ts +24 -2
  522. package/src/authorize/oauth-exception.filter.ts +58 -0
  523. package/src/authorize/oauth-metadata.service.ts +67 -0
  524. package/src/authorize/well-known.controller.spec.ts +84 -0
  525. package/src/authorize/well-known.controller.ts +96 -0
  526. package/src/captcha/captcha.service.spec.ts +211 -4
  527. package/src/captcha/captcha.service.ts +127 -10
  528. package/src/core.module.ts +6 -0
  529. package/src/dashboard/dashboard-component-role/dashboard-component-role.service.ts +2 -3
  530. package/src/dashboard/dashboard-component-role/dashboard-component-role.sort.ts +18 -0
  531. package/src/dashboard/dashboard-item/dashboard-item.service.ts +2 -3
  532. package/src/dashboard/dashboard-item/dashboard-item.sort.ts +19 -0
  533. package/src/dashboard/dashboard-role/dashboard-role.service.ts +2 -3
  534. package/src/dashboard/dashboard-role/dashboard-role.sort.ts +16 -0
  535. package/src/file/file-upload-ticket.service.spec.ts +422 -0
  536. package/src/file/file-upload-ticket.service.ts +513 -0
  537. package/src/file/file.controller.ts +65 -0
  538. package/src/file/file.module.ts +14 -2
  539. package/src/file/file.service.spec.ts +94 -0
  540. package/src/file/file.service.ts +432 -30
  541. package/src/file/filename-encoding.util.spec.ts +54 -0
  542. package/src/file/filename-encoding.util.ts +67 -0
  543. package/src/file/image-optimization.service.spec.ts +156 -19
  544. package/src/file/image-optimization.service.ts +106 -21
  545. package/src/file/mcp-file-source.schema.ts +83 -0
  546. package/src/file/mcp-file-source.service.spec.ts +473 -0
  547. package/src/file/mcp-file-source.service.ts +445 -0
  548. package/src/file/mimetype-sniff.util.spec.ts +126 -0
  549. package/src/file/mimetype-sniff.util.ts +265 -0
  550. package/src/file/remote-fetch.util.spec.ts +117 -0
  551. package/src/file/remote-fetch.util.ts +330 -0
  552. package/src/impersonation/dto/start-impersonation.dto.ts +5 -2
  553. package/src/impersonation/impersonation.service.spec.ts +24 -1
  554. package/src/impersonation/impersonation.service.ts +14 -4
  555. package/src/incident/incident.controller.ts +9 -1
  556. package/src/incident/incident.service.ts +7 -0
  557. package/src/index.ts +17 -0
  558. package/src/integration-profile/integration-profile.secrets.ts +7 -0
  559. package/src/integration-profile/integration-profile.service.ts +7 -64
  560. package/src/integration-profile/integration-profile.utils.spec.ts +9 -0
  561. package/src/integration-profile/integration-profile.utils.ts +5 -5
  562. package/src/integration-profile/testers/index.ts +2 -0
  563. package/src/integration-profile/testers/remaining.testers.spec.ts +79 -0
  564. package/src/integration-profile/testers/shipping.testers.ts +94 -0
  565. package/src/mail/dto/send.dto.ts +6 -1
  566. package/src/mail/mail-template.spec.ts +58 -1
  567. package/src/mail/mail.service.spec.ts +112 -0
  568. package/src/mail/mail.service.ts +42 -4
  569. package/src/mail-sent/mail-sent.service.ts +3 -0
  570. package/src/mail-sent/mail-sent.sort.ts +19 -0
  571. package/src/mcp/filters/mcp-challenge.filter.spec.ts +76 -0
  572. package/src/mcp/filters/mcp-challenge.filter.ts +70 -0
  573. package/src/mcp/guards/mcp-auth.guard.spec.ts +51 -2
  574. package/src/mcp/guards/mcp-auth.guard.ts +24 -1
  575. package/src/mcp/guards/mcp-permission.guard.spec.ts +109 -15
  576. package/src/mcp/guards/mcp-permission.guard.ts +76 -51
  577. package/src/mcp/mcp-audit.service.spec.ts +107 -0
  578. package/src/mcp/mcp-audit.service.ts +37 -1
  579. package/src/mcp/mcp-permission.service.spec.ts +197 -0
  580. package/src/mcp/mcp-permission.service.ts +184 -0
  581. package/src/mcp/mcp-server.service.spec.ts +84 -2
  582. package/src/mcp/mcp-server.service.ts +111 -87
  583. package/src/mcp/mcp.controller.ts +8 -1
  584. package/src/mcp/mcp.module.ts +5 -1
  585. package/src/mcp/tools/core-ai.mcp-tools.ts +1 -1
  586. package/src/mcp/tools/core-dashboard-items.mcp-tools.ts +1 -1
  587. package/src/mcp/tools/core-dashboard.mcp-tools.ts +1 -1
  588. package/src/mcp/tools/core-event-webhooks.mcp-tools.ts +1 -2
  589. package/src/mcp/tools/core-files.mcp-tools.ts +202 -22
  590. package/src/mcp/tools/core-integration-events.mcp-tools.ts +1 -1
  591. package/src/mcp/tools/core-mail-sent.mcp-tools.ts +1 -1
  592. package/src/mcp/tools/core-mail.mcp-tools.ts +1 -1
  593. package/src/mcp/tools/core-menus.mcp-tools.ts +1 -2
  594. package/src/mcp/tools/core-notifications.mcp-tools.ts +0 -1
  595. package/src/mcp/tools/core-roles.mcp-tools.ts +1 -5
  596. package/src/mcp/tools/core-routes.mcp-tools.ts +1 -3
  597. package/src/mcp/tools/core-screens.mcp-tools.ts +1 -3
  598. package/src/mcp/tools/core-sessions.mcp-tools.ts +0 -2
  599. package/src/mcp/tools/core-settings.mcp-tools.ts +1 -2
  600. package/src/mcp/tools/core-users.mcp-tools.ts +1 -1
  601. package/src/mcp/tools/core-webhooks.mcp-tools.ts +1 -2
  602. package/src/mcp/types/mcp-context.type.ts +15 -6
  603. package/src/mcp-chat/mcp-chat.service.ts +8 -0
  604. package/src/meeting/meeting-provider.registry.ts +121 -0
  605. package/src/meeting/meeting.constants.ts +74 -0
  606. package/src/menu/menu.service.spec.ts +89 -0
  607. package/src/menu/menu.service.ts +29 -11
  608. package/src/message-template/dto/update-message-template.dto.ts +22 -0
  609. package/src/message-template/message-template-admin.service.spec.ts +163 -0
  610. package/src/message-template/message-template-admin.service.ts +239 -0
  611. package/src/message-template/message-template.controller.ts +52 -0
  612. package/src/message-template/message-template.module.ts +21 -0
  613. package/src/message-template/message-template.registry.spec.ts +62 -0
  614. package/src/message-template/message-template.registry.ts +125 -0
  615. package/src/message-template/message-template.service.spec.ts +149 -0
  616. package/src/message-template/message-template.service.ts +149 -0
  617. package/src/notification/notification.constants.ts +10 -0
  618. package/src/notification/notification.module.ts +3 -0
  619. package/src/notification/notification.service.spec.ts +75 -1
  620. package/src/notification/notification.service.ts +39 -1
  621. package/src/oauth/oauth.controller.ts +0 -1
  622. package/src/oauth/oauth.errors.ts +7 -0
  623. package/src/oauth/oauth.module.ts +6 -1
  624. package/src/oauth/oauth.service.spec.ts +58 -7
  625. package/src/oauth/oauth.service.ts +71 -32
  626. package/src/oauth/providers/abstract.provider.spec.ts +192 -0
  627. package/src/oauth/providers/abstract.provider.ts +46 -14
  628. package/src/oauth/providers/github.provider.ts +57 -34
  629. package/src/oauth/providers/microsoft-entra-id.provider.ts +8 -1
  630. package/src/observability/monitored-cron.spec.ts +164 -31
  631. package/src/observability/monitored-cron.ts +154 -62
  632. package/src/profile/dto/change-password.dto.ts +25 -7
  633. package/src/profile/profile.service.spec.ts +97 -0
  634. package/src/profile/profile.service.ts +9 -3
  635. package/src/realtime/realtime-tick.coalescer.spec.ts +92 -0
  636. package/src/realtime/realtime-tick.coalescer.ts +60 -0
  637. package/src/realtime/realtime.service.spec.ts +33 -0
  638. package/src/realtime/realtime.service.ts +28 -2
  639. package/src/redis/redis-kv.service.ts +261 -0
  640. package/src/redis/redis-master.spec.ts +111 -0
  641. package/src/redis/redis-master.ts +86 -0
  642. package/src/redis/redis-pubsub.ts +27 -3
  643. package/src/redis/redis.module.ts +17 -0
  644. package/src/session/session.service.spec.ts +121 -42
  645. package/src/session/session.service.ts +279 -82
  646. package/src/setting/setting.service.ts +44 -3
  647. package/src/task/task.service.spec.ts +41 -0
  648. package/src/task/task.service.ts +53 -13
  649. package/src/token/token.service.spec.ts +90 -0
  650. package/src/token/token.service.ts +48 -2
  651. package/src/user/user-credential.util.ts +14 -5
  652. package/src/user/user.service.ts +2 -12
  653. package/src/user/user.sort.ts +25 -0
  654. package/src/utils/abbreviate-name.spec.ts +50 -0
  655. package/src/utils/abbreviate-name.ts +44 -0
  656. package/src/utils/date-range-query.dto.ts +56 -0
  657. package/src/utils/date-range.spec.ts +175 -0
  658. package/src/utils/date-range.ts +246 -0
  659. package/src/webhook-integration/webhook-utils.spec.ts +67 -0
  660. package/src/webhook-integration/webhook-utils.ts +26 -0
  661. package/src/whatsapp-sender/whatsapp-recipients.spec.ts +89 -0
  662. package/src/whatsapp-sender/whatsapp-recipients.ts +83 -0
  663. package/src/whatsapp-sender/whatsapp-sender.service.spec.ts +112 -0
  664. package/src/whatsapp-sender/whatsapp-sender.service.ts +58 -5
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Modelos de mensagem para canal que não é e-mail.
3
+ *
4
+ * Exporta o `MessageTemplateService` porque quem renderiza são as libraries: o
5
+ * SAC para o aviso de chamado, o commerce para o de venda. O serviço da tela
6
+ * fica dentro, que ninguém fora daqui edita template por código.
7
+ */
8
+ export declare class MessageTemplateModule {
9
+ }
10
+ //# sourceMappingURL=message-template.module.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message-template.module.d.ts","sourceRoot":"","sources":["../../src/message-template/message-template.module.ts"],"names":[],"mappings":"AAOA;;;;;;GAMG;AACH,qBAMa,qBAAqB;CAAG"}
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.MessageTemplateModule = void 0;
10
+ const api_prisma_1 = require("@hed-hog/api-prisma");
11
+ const common_1 = require("@nestjs/common");
12
+ const message_template_admin_service_1 = require("./message-template-admin.service");
13
+ const message_template_controller_1 = require("./message-template.controller");
14
+ const message_template_service_1 = require("./message-template.service");
15
+ /**
16
+ * Modelos de mensagem para canal que não é e-mail.
17
+ *
18
+ * Exporta o `MessageTemplateService` porque quem renderiza são as libraries: o
19
+ * SAC para o aviso de chamado, o commerce para o de venda. O serviço da tela
20
+ * fica dentro, que ninguém fora daqui edita template por código.
21
+ */
22
+ let MessageTemplateModule = class MessageTemplateModule {
23
+ };
24
+ exports.MessageTemplateModule = MessageTemplateModule;
25
+ exports.MessageTemplateModule = MessageTemplateModule = __decorate([
26
+ (0, common_1.Module)({
27
+ imports: [(0, common_1.forwardRef)(() => api_prisma_1.PrismaModule)],
28
+ controllers: [message_template_controller_1.MessageTemplateController],
29
+ providers: [message_template_service_1.MessageTemplateService, message_template_admin_service_1.MessageTemplateAdminService],
30
+ exports: [message_template_service_1.MessageTemplateService],
31
+ })
32
+ ], MessageTemplateModule);
33
+ //# sourceMappingURL=message-template.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message-template.module.js","sourceRoot":"","sources":["../../src/message-template/message-template.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,oDAAmD;AACnD,2CAAoD;AAEpD,qFAA+E;AAC/E,+EAA0E;AAC1E,yEAAoE;AAEpE;;;;;;GAMG;AAOI,IAAM,qBAAqB,GAA3B,MAAM,qBAAqB;CAAG,CAAA;AAAxB,sDAAqB;gCAArB,qBAAqB;IANjC,IAAA,eAAM,EAAC;QACN,OAAO,EAAE,CAAC,IAAA,mBAAU,EAAC,GAAG,EAAE,CAAC,yBAAY,CAAC,CAAC;QACzC,WAAW,EAAE,CAAC,uDAAyB,CAAC;QACxC,SAAS,EAAE,CAAC,iDAAsB,EAAE,4DAA2B,CAAC;QAChE,OAAO,EAAE,CAAC,iDAAsB,CAAC;KAClC,CAAC;GACW,qBAAqB,CAAG"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * Declaração de um modelo de mensagem cujo texto canônico vive em código.
3
+ *
4
+ * O registry é o que faz da tabela `message_template` um **override** em vez da
5
+ * única cópia: o render cai no `fallback` sempre que a linha do banco falta,
6
+ * está desligada, vazia ou com sintaxe quebrada; a tela oferece "restaurar
7
+ * padrão"; e uma library recém-instalada já aparece na tela sem migration
8
+ * nenhuma — a listagem é o registry, não um `SELECT`.
9
+ *
10
+ * Esse último ponto é a diferença deliberada em relação aos prompts de IA, que
11
+ * seguem o mesmo desenho mas listam do banco: lá, prompt registrado sem seed
12
+ * funciona e não aparece na tela, e é preciso uma migration por conjunto.
13
+ */
14
+ export type MessageTemplateVariable = {
15
+ /** Explica o que a variável carrega. Aparece no editor, ao lado do botão. */
16
+ description?: string;
17
+ /**
18
+ * Valor de exemplo, usado no preview.
19
+ *
20
+ * É obrigatório porque o preview é a única forma de ver onde o texto quebra no
21
+ * balão do WhatsApp antes de ele chegar ao grupo.
22
+ */
23
+ sample: string | number | boolean;
24
+ };
25
+ export type MessageTemplateDefinition = {
26
+ /** `<module>.<nome>` — ver assertSlugGrammar. */
27
+ slug: string;
28
+ /** Precisa ser igual ao primeiro segmento do slug. */
29
+ moduleSlug: string;
30
+ /** Rótulo na tela, por código de locale. `pt` é obrigatório. */
31
+ name: Record<string, string>;
32
+ /** Uma linha dizendo quando a mensagem sai. Opcional, por locale. */
33
+ description?: Record<string, string>;
34
+ /**
35
+ * Texto canônico por locale, em Handlebars com o markdown do WhatsApp.
36
+ *
37
+ * É ele que renderiza enquanto ninguém editou — e continua sendo a rede
38
+ * quando o texto editado falha. `pt` é obrigatório.
39
+ */
40
+ fallback: Record<string, string>;
41
+ variables: Record<string, MessageTemplateVariable>;
42
+ };
43
+ /**
44
+ * Chamado no carregamento do módulo de cada library, a partir do
45
+ * `*.message-templates.ts` dela. Slug duplicado lança, então duas libraries não
46
+ * reivindicam o mesmo modelo em silêncio.
47
+ */
48
+ export declare function registerMessageTemplates(definitions: MessageTemplateDefinition[]): void;
49
+ export declare function getMessageTemplateDefinition(slug: string): MessageTemplateDefinition | undefined;
50
+ export declare function listMessageTemplateDefinitions(moduleSlug?: string): MessageTemplateDefinition[];
51
+ /** Os módulos que registraram algum modelo, para o agrupamento da tela. */
52
+ export declare function listMessageTemplateModules(): string[];
53
+ /** Auxiliar de teste — o registry é estado de módulo. */
54
+ export declare function clearMessageTemplateRegistry(): void;
55
+ //# sourceMappingURL=message-template.registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message-template.registry.d.ts","sourceRoot":"","sources":["../../src/message-template/message-template.registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,uBAAuB,GAAG;IACpC,6EAA6E;IAC7E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;OAKG;IACH,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;CACnC,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IACtC,iDAAiD;IACjD,IAAI,EAAE,MAAM,CAAC;IACb,sDAAsD;IACtD,UAAU,EAAE,MAAM,CAAC;IACnB,gEAAgE;IAChE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,qEAAqE;IACrE,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC;;;;;OAKG;IACH,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC;CACpD,CAAC;AAwCF;;;;GAIG;AACH,wBAAgB,wBAAwB,CACtC,WAAW,EAAE,yBAAyB,EAAE,GACvC,IAAI,CAWN;AAED,wBAAgB,4BAA4B,CAC1C,IAAI,EAAE,MAAM,GACX,yBAAyB,GAAG,SAAS,CAEvC;AAED,wBAAgB,8BAA8B,CAC5C,UAAU,CAAC,EAAE,MAAM,GAClB,yBAAyB,EAAE,CAI7B;AAED,2EAA2E;AAC3E,wBAAgB,0BAA0B,IAAI,MAAM,EAAE,CAErD;AAED,yDAAyD;AACzD,wBAAgB,4BAA4B,IAAI,IAAI,CAEnD"}
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.registerMessageTemplates = registerMessageTemplates;
4
+ exports.getMessageTemplateDefinition = getMessageTemplateDefinition;
5
+ exports.listMessageTemplateDefinitions = listMessageTemplateDefinitions;
6
+ exports.listMessageTemplateModules = listMessageTemplateModules;
7
+ exports.clearMessageTemplateRegistry = clearMessageTemplateRegistry;
8
+ const registry = new Map();
9
+ const SLUG_RE = /^([a-z0-9-]+)\.([a-z0-9-]+)$/;
10
+ /** O locale que todo template precisa ter: é o idioma em que a equipe lê o aviso. */
11
+ const REQUIRED_LOCALE = 'pt';
12
+ function assertDefinition(definition) {
13
+ var _a, _b, _c, _d;
14
+ const match = SLUG_RE.exec(definition.slug);
15
+ if (!match) {
16
+ throw new Error(`Slug de modelo de mensagem inválido: "${definition.slug}". ` +
17
+ 'Esperado <module>.<nome>, em minúsculas.');
18
+ }
19
+ // Sem isto, duas libraries poderiam brigar por um slug curto como "paid" e a
20
+ // tela não teria como dizer de quem é o modelo.
21
+ if (match[1] !== definition.moduleSlug) {
22
+ throw new Error(`O modelo "${definition.slug}" declara moduleSlug "${definition.moduleSlug}", ` +
23
+ `mas o slug diz "${match[1]}".`);
24
+ }
25
+ if (!((_b = (_a = definition.name) === null || _a === void 0 ? void 0 : _a[REQUIRED_LOCALE]) === null || _b === void 0 ? void 0 : _b.trim())) {
26
+ throw new Error(`O modelo "${definition.slug}" não tem nome em "${REQUIRED_LOCALE}".`);
27
+ }
28
+ if (!((_d = (_c = definition.fallback) === null || _c === void 0 ? void 0 : _c[REQUIRED_LOCALE]) === null || _d === void 0 ? void 0 : _d.trim())) {
29
+ throw new Error(`O modelo "${definition.slug}" não tem texto padrão em "${REQUIRED_LOCALE}". ` +
30
+ 'Sem ele, uma linha quebrada no banco deixaria o aviso mudo.');
31
+ }
32
+ }
33
+ /**
34
+ * Chamado no carregamento do módulo de cada library, a partir do
35
+ * `*.message-templates.ts` dela. Slug duplicado lança, então duas libraries não
36
+ * reivindicam o mesmo modelo em silêncio.
37
+ */
38
+ function registerMessageTemplates(definitions) {
39
+ for (const definition of definitions) {
40
+ assertDefinition(definition);
41
+ const existing = registry.get(definition.slug);
42
+ if (existing && existing !== definition) {
43
+ throw new Error(`O modelo de mensagem "${definition.slug}" já está registrado.`);
44
+ }
45
+ registry.set(definition.slug, definition);
46
+ }
47
+ }
48
+ function getMessageTemplateDefinition(slug) {
49
+ return registry.get(slug);
50
+ }
51
+ function listMessageTemplateDefinitions(moduleSlug) {
52
+ const all = [...registry.values()];
53
+ const filtered = moduleSlug ? all.filter((d) => d.moduleSlug === moduleSlug) : all;
54
+ return filtered.sort((a, b) => a.slug.localeCompare(b.slug));
55
+ }
56
+ /** Os módulos que registraram algum modelo, para o agrupamento da tela. */
57
+ function listMessageTemplateModules() {
58
+ return [...new Set([...registry.values()].map((d) => d.moduleSlug))].sort();
59
+ }
60
+ /** Auxiliar de teste — o registry é estado de módulo. */
61
+ function clearMessageTemplateRegistry() {
62
+ registry.clear();
63
+ }
64
+ //# sourceMappingURL=message-template.registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message-template.registry.js","sourceRoot":"","sources":["../../src/message-template/message-template.registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,59 @@
1
+ import { PrismaService } from '@hed-hog/api-prisma';
2
+ import { MessageTemplateDefinition } from './message-template.registry';
3
+ /**
4
+ * Idioma em que a plataforma escreve para a própria equipe.
5
+ *
6
+ * O aviso interno não é mensagem ao cliente: quem lê é quem trabalha aqui, e o
7
+ * fato gerador pode ter chegado em qualquer idioma. Por isso o corpo sai no
8
+ * idioma do painel, e não no de quem comprou ou abriu o chamado.
9
+ */
10
+ export declare const DEFAULT_MESSAGE_LOCALE = "pt";
11
+ /**
12
+ * Renderiza o texto das mensagens que saem por canal que não é e-mail.
13
+ *
14
+ * O corpo é texto puro com o markdown do WhatsApp, e não HTML: não dá para
15
+ * reusar o `MailService`, cujo render troca quebra de linha por `<br/>` — o que
16
+ * no WhatsApp apareceria literal na tela.
17
+ *
18
+ * **Nunca devolve nulo para um slug registrado.** Linha ausente, `is_active`
19
+ * desligado, corpo em branco, sintaxe quebrada ou banco fora do ar caem no texto
20
+ * canônico do registry. Isso é o que permite ao chamador parar de manter um
21
+ * construtor de texto em código só como rede: a rede é o `fallback`.
22
+ */
23
+ export declare class MessageTemplateService {
24
+ private readonly prisma;
25
+ private readonly logger;
26
+ constructor(prisma: PrismaService);
27
+ /**
28
+ * O texto pronto, ou `null` quando o slug não está registrado.
29
+ *
30
+ * Nulo aqui é erro de programação (slug digitado errado, library não
31
+ * carregada), não configuração — daí ser o único caso.
32
+ */
33
+ render(slug: string, variables: Record<string, unknown>, locale?: string): Promise<string | null>;
34
+ /**
35
+ * Renderiza o texto canônico do registry.
36
+ *
37
+ * Estático e público porque o teste que varre o registry inteiro o usa para
38
+ * afirmar que todo modelo registrado compila com as suas amostras — é ele que
39
+ * substitui a manutenção do texto em dois lugares.
40
+ */
41
+ static renderFallback(definition: MessageTemplateDefinition, variables: Record<string, unknown>, locale?: string): string | null;
42
+ /**
43
+ * Compila e renderiza, ou `null` em qualquer desfecho ruim.
44
+ *
45
+ * `noEscape` de propósito: escapar encheria o WhatsApp de `&#x27;`. Template
46
+ * preenchido só com blocos que não casaram renderiza vazio, e mandar mensagem
47
+ * em branco para o grupo é pior que mandar o texto padrão.
48
+ */
49
+ private static compile;
50
+ /**
51
+ * O corpo editado no painel, ou `null` quando não há nada utilizável.
52
+ *
53
+ * Sem linha no idioma pedido, usa a primeira que existir: um texto escrito só
54
+ * em português continua valendo para quem abriu o painel em inglês — o
55
+ * contrário seria a equipe receber o padrão por causa do idioma da sessão.
56
+ */
57
+ private readEditedBody;
58
+ }
59
+ //# sourceMappingURL=message-template.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message-template.service.d.ts","sourceRoot":"","sources":["../../src/message-template/message-template.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAIpD,OAAO,EACL,yBAAyB,EAE1B,MAAM,6BAA6B,CAAC;AAErC;;;;;;GAMG;AACH,eAAO,MAAM,sBAAsB,OAAO,CAAC;AAE3C;;;;;;;;;;;GAWG;AACH,qBACa,sBAAsB;IAK/B,OAAO,CAAC,QAAQ,CAAC,MAAM;IAJzB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA2C;gBAI/C,MAAM,EAAE,aAAa;IAGxC;;;;;OAKG;IACG,MAAM,CACV,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClC,MAAM,SAAyB,GAC9B,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAyBzB;;;;;;OAMG;IACH,MAAM,CAAC,cAAc,CACnB,UAAU,EAAE,yBAAyB,EACrC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClC,MAAM,SAAyB,GAC9B,MAAM,GAAG,IAAI;IAOhB;;;;;;OAMG;IACH,OAAO,CAAC,MAAM,CAAC,OAAO;IAYtB;;;;;;OAMG;YACW,cAAc;CA8B7B"}
@@ -0,0 +1,166 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
19
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
20
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
21
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
22
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
23
+ };
24
+ var __importStar = (this && this.__importStar) || (function () {
25
+ var ownKeys = function(o) {
26
+ ownKeys = Object.getOwnPropertyNames || function (o) {
27
+ var ar = [];
28
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
29
+ return ar;
30
+ };
31
+ return ownKeys(o);
32
+ };
33
+ return function (mod) {
34
+ if (mod && mod.__esModule) return mod;
35
+ var result = {};
36
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
37
+ __setModuleDefault(result, mod);
38
+ return result;
39
+ };
40
+ })();
41
+ var __metadata = (this && this.__metadata) || function (k, v) {
42
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
43
+ };
44
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
45
+ return function (target, key) { decorator(target, key, paramIndex); }
46
+ };
47
+ var MessageTemplateService_1;
48
+ Object.defineProperty(exports, "__esModule", { value: true });
49
+ exports.MessageTemplateService = exports.DEFAULT_MESSAGE_LOCALE = void 0;
50
+ const api_prisma_1 = require("@hed-hog/api-prisma");
51
+ const common_1 = require("@nestjs/common");
52
+ const Handlebars = __importStar(require("handlebars"));
53
+ const message_template_registry_1 = require("./message-template.registry");
54
+ /**
55
+ * Idioma em que a plataforma escreve para a própria equipe.
56
+ *
57
+ * O aviso interno não é mensagem ao cliente: quem lê é quem trabalha aqui, e o
58
+ * fato gerador pode ter chegado em qualquer idioma. Por isso o corpo sai no
59
+ * idioma do painel, e não no de quem comprou ou abriu o chamado.
60
+ */
61
+ exports.DEFAULT_MESSAGE_LOCALE = 'pt';
62
+ /**
63
+ * Renderiza o texto das mensagens que saem por canal que não é e-mail.
64
+ *
65
+ * O corpo é texto puro com o markdown do WhatsApp, e não HTML: não dá para
66
+ * reusar o `MailService`, cujo render troca quebra de linha por `<br/>` — o que
67
+ * no WhatsApp apareceria literal na tela.
68
+ *
69
+ * **Nunca devolve nulo para um slug registrado.** Linha ausente, `is_active`
70
+ * desligado, corpo em branco, sintaxe quebrada ou banco fora do ar caem no texto
71
+ * canônico do registry. Isso é o que permite ao chamador parar de manter um
72
+ * construtor de texto em código só como rede: a rede é o `fallback`.
73
+ */
74
+ let MessageTemplateService = MessageTemplateService_1 = class MessageTemplateService {
75
+ constructor(prisma) {
76
+ this.prisma = prisma;
77
+ this.logger = new common_1.Logger(MessageTemplateService_1.name);
78
+ }
79
+ /**
80
+ * O texto pronto, ou `null` quando o slug não está registrado.
81
+ *
82
+ * Nulo aqui é erro de programação (slug digitado errado, library não
83
+ * carregada), não configuração — daí ser o único caso.
84
+ */
85
+ async render(slug, variables, locale = exports.DEFAULT_MESSAGE_LOCALE) {
86
+ const definition = (0, message_template_registry_1.getMessageTemplateDefinition)(slug);
87
+ if (!definition) {
88
+ this.logger.error(`Modelo de mensagem "${slug}" não está registrado; nada a renderizar.`);
89
+ return null;
90
+ }
91
+ const edited = await this.readEditedBody(slug, locale);
92
+ if (edited) {
93
+ const rendered = MessageTemplateService_1.compile(edited, variables);
94
+ if (rendered)
95
+ return rendered;
96
+ // Texto editado que não compila ou renderiza vazio não pode calar o aviso.
97
+ this.logger.warn(`O texto editado do modelo "${slug}" não pôde ser usado; caindo no padrão.`);
98
+ }
99
+ return MessageTemplateService_1.renderFallback(definition, variables, locale);
100
+ }
101
+ /**
102
+ * Renderiza o texto canônico do registry.
103
+ *
104
+ * Estático e público porque o teste que varre o registry inteiro o usa para
105
+ * afirmar que todo modelo registrado compila com as suas amostras — é ele que
106
+ * substitui a manutenção do texto em dois lugares.
107
+ */
108
+ static renderFallback(definition, variables, locale = exports.DEFAULT_MESSAGE_LOCALE) {
109
+ var _a;
110
+ const body = (_a = definition.fallback[locale]) !== null && _a !== void 0 ? _a : definition.fallback[exports.DEFAULT_MESSAGE_LOCALE];
111
+ return body ? MessageTemplateService_1.compile(body, variables) : null;
112
+ }
113
+ /**
114
+ * Compila e renderiza, ou `null` em qualquer desfecho ruim.
115
+ *
116
+ * `noEscape` de propósito: escapar encheria o WhatsApp de `&#x27;`. Template
117
+ * preenchido só com blocos que não casaram renderiza vazio, e mandar mensagem
118
+ * em branco para o grupo é pior que mandar o texto padrão.
119
+ */
120
+ static compile(body, variables) {
121
+ try {
122
+ const rendered = Handlebars.compile(body, { noEscape: true })(variables).trim();
123
+ return rendered || null;
124
+ }
125
+ catch (_a) {
126
+ return null;
127
+ }
128
+ }
129
+ /**
130
+ * O corpo editado no painel, ou `null` quando não há nada utilizável.
131
+ *
132
+ * Sem linha no idioma pedido, usa a primeira que existir: um texto escrito só
133
+ * em português continua valendo para quem abriu o painel em inglês — o
134
+ * contrário seria a equipe receber o padrão por causa do idioma da sessão.
135
+ */
136
+ async readEditedBody(slug, locale) {
137
+ var _a, _b, _c, _d;
138
+ try {
139
+ const template = await this.prisma.message_template.findUnique({
140
+ where: { slug },
141
+ select: {
142
+ is_active: true,
143
+ message_template_locale: {
144
+ select: { body: true, locale: { select: { code: true } } },
145
+ },
146
+ },
147
+ });
148
+ if (!(template === null || template === void 0 ? void 0 : template.is_active))
149
+ return null;
150
+ const rows = (_a = template.message_template_locale) !== null && _a !== void 0 ? _a : [];
151
+ const match = (_b = rows.find((row) => { var _a; return ((_a = row.locale) === null || _a === void 0 ? void 0 : _a.code) === locale; })) !== null && _b !== void 0 ? _b : rows[0];
152
+ return String((_c = match === null || match === void 0 ? void 0 : match.body) !== null && _c !== void 0 ? _c : '').trim() || null;
153
+ }
154
+ catch (error) {
155
+ this.logger.warn(`Não foi possível ler o modelo "${slug}": ${(_d = error === null || error === void 0 ? void 0 : error.message) !== null && _d !== void 0 ? _d : 'erro desconhecido'}`);
156
+ return null;
157
+ }
158
+ }
159
+ };
160
+ exports.MessageTemplateService = MessageTemplateService;
161
+ exports.MessageTemplateService = MessageTemplateService = MessageTemplateService_1 = __decorate([
162
+ (0, common_1.Injectable)(),
163
+ __param(0, (0, common_1.Inject)((0, common_1.forwardRef)(() => api_prisma_1.PrismaService))),
164
+ __metadata("design:paramtypes", [api_prisma_1.PrismaService])
165
+ ], MessageTemplateService);
166
+ //# sourceMappingURL=message-template.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message-template.service.js","sourceRoot":"","sources":["../../src/message-template/message-template.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Nome do evento de notificação no WebSocket (`/realtime`).
3
+ *
4
+ * Segue a convenção `dominio:evento` dos outros produtores (`presence:update`,
5
+ * `lms:waiting-room:tick`). O payload é o mesmo `NotificationStreamEvent` que o
6
+ * SSE já entrega — os dois transportes convivem por tempo indeterminado (o
7
+ * class-app publicado nas lojas só fala SSE), e transporte que carrega dado
8
+ * diferente faz o comportamento do cliente depender de qual dos dois está vivo.
9
+ */
10
+ export declare const NOTIFICATION_REALTIME_EVENT = "notification:event";
11
+ //# sourceMappingURL=notification.constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notification.constants.d.ts","sourceRoot":"","sources":["../../src/notification/notification.constants.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,eAAO,MAAM,2BAA2B,uBAAuB,CAAC"}
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NOTIFICATION_REALTIME_EVENT = void 0;
4
+ /**
5
+ * Nome do evento de notificação no WebSocket (`/realtime`).
6
+ *
7
+ * Segue a convenção `dominio:evento` dos outros produtores (`presence:update`,
8
+ * `lms:waiting-room:tick`). O payload é o mesmo `NotificationStreamEvent` que o
9
+ * SSE já entrega — os dois transportes convivem por tempo indeterminado (o
10
+ * class-app publicado nas lojas só fala SSE), e transporte que carrega dado
11
+ * diferente faz o comportamento do cliente depender de qual dos dois está vivo.
12
+ */
13
+ exports.NOTIFICATION_REALTIME_EVENT = 'notification:event';
14
+ //# sourceMappingURL=notification.constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notification.constants.js","sourceRoot":"","sources":["../../src/notification/notification.constants.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;GAQG;AACU,QAAA,2BAA2B,GAAG,oBAAoB,CAAC"}
@@ -34,18 +34,18 @@ export declare class NotificationController {
34
34
  user_id: number;
35
35
  created_at: Date;
36
36
  updated_at: Date;
37
- type: import("@prisma/client").$Enums.notification_type_934e7a71cc_enum;
37
+ status: import("@prisma/client").$Enums.notification_status_enum;
38
+ started_at: Date | null;
39
+ finished_at: Date | null;
40
+ type: import("@prisma/client").$Enums.notification_type_enum;
38
41
  body: string | null;
39
- status: import("@prisma/client").$Enums.notification_status_3a7944cf59_enum;
40
42
  icon: string | null;
41
43
  title: string;
42
44
  progress: number | null;
43
- action_type: import("@prisma/client").$Enums.notification_action_type_f5ed983546_enum | null;
45
+ action_type: import("@prisma/client").$Enums.notification_action_type_enum | null;
44
46
  action_data: import("@prisma/client/runtime/library").JsonValue | null;
45
47
  action_url: string | null;
46
48
  auto_remove: boolean;
47
- started_at: Date | null;
48
- finished_at: Date | null;
49
49
  }>;
50
50
  updateProgress({ id: userId }: {
51
51
  id: any;
@@ -54,18 +54,18 @@ export declare class NotificationController {
54
54
  user_id: number;
55
55
  created_at: Date;
56
56
  updated_at: Date;
57
- type: import("@prisma/client").$Enums.notification_type_934e7a71cc_enum;
57
+ status: import("@prisma/client").$Enums.notification_status_enum;
58
+ started_at: Date | null;
59
+ finished_at: Date | null;
60
+ type: import("@prisma/client").$Enums.notification_type_enum;
58
61
  body: string | null;
59
- status: import("@prisma/client").$Enums.notification_status_3a7944cf59_enum;
60
62
  icon: string | null;
61
63
  title: string;
62
64
  progress: number | null;
63
- action_type: import("@prisma/client").$Enums.notification_action_type_f5ed983546_enum | null;
65
+ action_type: import("@prisma/client").$Enums.notification_action_type_enum | null;
64
66
  action_data: import("@prisma/client/runtime/library").JsonValue | null;
65
67
  action_url: string | null;
66
68
  auto_remove: boolean;
67
- started_at: Date | null;
68
- finished_at: Date | null;
69
69
  }>;
70
70
  deleteAll({ id }: {
71
71
  id: any;
@@ -77,36 +77,36 @@ export declare class NotificationController {
77
77
  user_id: number;
78
78
  created_at: Date;
79
79
  updated_at: Date;
80
- type: import("@prisma/client").$Enums.notification_type_934e7a71cc_enum;
80
+ status: import("@prisma/client").$Enums.notification_status_enum;
81
+ started_at: Date | null;
82
+ finished_at: Date | null;
83
+ type: import("@prisma/client").$Enums.notification_type_enum;
81
84
  body: string | null;
82
- status: import("@prisma/client").$Enums.notification_status_3a7944cf59_enum;
83
85
  icon: string | null;
84
86
  title: string;
85
87
  progress: number | null;
86
- action_type: import("@prisma/client").$Enums.notification_action_type_f5ed983546_enum | null;
88
+ action_type: import("@prisma/client").$Enums.notification_action_type_enum | null;
87
89
  action_data: import("@prisma/client/runtime/library").JsonValue | null;
88
90
  action_url: string | null;
89
91
  auto_remove: boolean;
90
- started_at: Date | null;
91
- finished_at: Date | null;
92
92
  }>;
93
93
  create(data: CreateNotificationDto): Promise<{
94
94
  id: number;
95
95
  user_id: number;
96
96
  created_at: Date;
97
97
  updated_at: Date;
98
- type: import("@prisma/client").$Enums.notification_type_934e7a71cc_enum;
98
+ status: import("@prisma/client").$Enums.notification_status_enum;
99
+ started_at: Date | null;
100
+ finished_at: Date | null;
101
+ type: import("@prisma/client").$Enums.notification_type_enum;
99
102
  body: string | null;
100
- status: import("@prisma/client").$Enums.notification_status_3a7944cf59_enum;
101
103
  icon: string | null;
102
104
  title: string;
103
105
  progress: number | null;
104
- action_type: import("@prisma/client").$Enums.notification_action_type_f5ed983546_enum | null;
106
+ action_type: import("@prisma/client").$Enums.notification_action_type_enum | null;
105
107
  action_data: import("@prisma/client/runtime/library").JsonValue | null;
106
108
  action_url: string | null;
107
109
  auto_remove: boolean;
108
- started_at: Date | null;
109
- finished_at: Date | null;
110
110
  }>;
111
111
  }
112
112
  //# sourceMappingURL=notification.controller.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"notification.module.d.ts","sourceRoot":"","sources":["../../src/notification/notification.module.ts"],"names":[],"mappings":"AAMA,qBASa,kBAAkB;CAAG"}
1
+ {"version":3,"file":"notification.module.d.ts","sourceRoot":"","sources":["../../src/notification/notification.module.ts"],"names":[],"mappings":"AAOA,qBAWa,kBAAkB;CAAG"}
@@ -10,6 +10,7 @@ exports.NotificationModule = void 0;
10
10
  const api_pagination_1 = require("@hed-hog/api-pagination");
11
11
  const api_prisma_1 = require("@hed-hog/api-prisma");
12
12
  const common_1 = require("@nestjs/common");
13
+ const realtime_module_1 = require("../realtime/realtime.module");
13
14
  const notification_controller_1 = require("./notification.controller");
14
15
  const notification_service_1 = require("./notification.service");
15
16
  let NotificationModule = class NotificationModule {
@@ -20,6 +21,8 @@ exports.NotificationModule = NotificationModule = __decorate([
20
21
  imports: [
21
22
  (0, common_1.forwardRef)(() => api_prisma_1.PrismaModule),
22
23
  (0, common_1.forwardRef)(() => api_pagination_1.PaginationModule),
24
+ // O funil de eventos empurra a notificação pelo WebSocket além do SSE.
25
+ (0, common_1.forwardRef)(() => realtime_module_1.RealtimeModule),
23
26
  ],
24
27
  controllers: [notification_controller_1.NotificationController],
25
28
  providers: [notification_service_1.NotificationService],
@@ -1 +1 @@
1
- {"version":3,"file":"notification.module.js","sourceRoot":"","sources":["../../src/notification/notification.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,4DAA2D;AAC3D,oDAAmD;AACnD,2CAAoD;AACpD,uEAAmE;AACnE,iEAA6D;AAWtD,IAAM,kBAAkB,GAAxB,MAAM,kBAAkB;CAAG,CAAA;AAArB,gDAAkB;6BAAlB,kBAAkB;IAT9B,IAAA,eAAM,EAAC;QACN,OAAO,EAAE;YACP,IAAA,mBAAU,EAAC,GAAG,EAAE,CAAC,yBAAY,CAAC;YAC9B,IAAA,mBAAU,EAAC,GAAG,EAAE,CAAC,iCAAgB,CAAC;SACnC;QACD,WAAW,EAAE,CAAC,gDAAsB,CAAC;QACrC,SAAS,EAAE,CAAC,0CAAmB,CAAC;QAChC,OAAO,EAAE,CAAC,0CAAmB,CAAC;KAC/B,CAAC;GACW,kBAAkB,CAAG"}
1
+ {"version":3,"file":"notification.module.js","sourceRoot":"","sources":["../../src/notification/notification.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,4DAA2D;AAC3D,oDAAmD;AACnD,2CAAoD;AACpD,iEAA6D;AAC7D,uEAAmE;AACnE,iEAA6D;AAatD,IAAM,kBAAkB,GAAxB,MAAM,kBAAkB;CAAG,CAAA;AAArB,gDAAkB;6BAAlB,kBAAkB;IAX9B,IAAA,eAAM,EAAC;QACN,OAAO,EAAE;YACP,IAAA,mBAAU,EAAC,GAAG,EAAE,CAAC,yBAAY,CAAC;YAC9B,IAAA,mBAAU,EAAC,GAAG,EAAE,CAAC,iCAAgB,CAAC;YAClC,uEAAuE;YACvE,IAAA,mBAAU,EAAC,GAAG,EAAE,CAAC,gCAAc,CAAC;SACjC;QACD,WAAW,EAAE,CAAC,gDAAsB,CAAC;QACrC,SAAS,EAAE,CAAC,0CAAmB,CAAC;QAChC,OAAO,EAAE,CAAC,0CAAmB,CAAC;KAC/B,CAAC;GACW,kBAAkB,CAAG"}