@hed-hog/core 0.0.390 → 0.0.393

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 (528) hide show
  1. package/README.md +39 -0
  2. package/dist/access-log/access-log.controller.d.ts.map +1 -1
  3. package/dist/access-log/access-log.controller.js +1 -1
  4. package/dist/access-log/access-log.controller.js.map +1 -1
  5. package/dist/access-log/access-log.interceptor.d.ts.map +1 -1
  6. package/dist/access-log/access-log.interceptor.js +8 -5
  7. package/dist/access-log/access-log.interceptor.js.map +1 -1
  8. package/dist/access-log/access-log.service.d.ts +4 -0
  9. package/dist/access-log/access-log.service.d.ts.map +1 -1
  10. package/dist/access-log/access-log.service.js +31 -4
  11. package/dist/access-log/access-log.service.js.map +1 -1
  12. package/dist/access-log/dto/query-access-log.dto.d.ts +2 -0
  13. package/dist/access-log/dto/query-access-log.dto.d.ts.map +1 -1
  14. package/dist/access-log/dto/query-access-log.dto.js +5 -0
  15. package/dist/access-log/dto/query-access-log.dto.js.map +1 -1
  16. package/dist/ai/ai.controller.d.ts +12 -8
  17. package/dist/ai/ai.controller.d.ts.map +1 -1
  18. package/dist/ai/ai.controller.js +17 -2
  19. package/dist/ai/ai.controller.js.map +1 -1
  20. package/dist/ai/ai.module.d.ts.map +1 -1
  21. package/dist/ai/ai.module.js +3 -2
  22. package/dist/ai/ai.module.js.map +1 -1
  23. package/dist/ai/ai.service.d.ts +30 -1
  24. package/dist/ai/ai.service.d.ts.map +1 -1
  25. package/dist/ai/ai.service.js +97 -3
  26. package/dist/ai/ai.service.js.map +1 -1
  27. package/dist/ai/dto/richtext-edit-html.dto.d.ts +5 -0
  28. package/dist/ai/dto/richtext-edit-html.dto.d.ts.map +1 -0
  29. package/dist/ai/dto/richtext-edit-html.dto.js +27 -0
  30. package/dist/ai/dto/richtext-edit-html.dto.js.map +1 -0
  31. package/dist/ai/richtext-ai.prompts.d.ts +5 -0
  32. package/dist/ai/richtext-ai.prompts.d.ts.map +1 -0
  33. package/dist/ai/richtext-ai.prompts.js +57 -0
  34. package/dist/ai/richtext-ai.prompts.js.map +1 -0
  35. package/dist/ai/richtext-ai.service.d.ts +34 -0
  36. package/dist/ai/richtext-ai.service.d.ts.map +1 -0
  37. package/dist/ai/richtext-ai.service.js +95 -0
  38. package/dist/ai/richtext-ai.service.js.map +1 -0
  39. package/dist/ai-instruction/ai-instruction.controller.d.ts +5 -5
  40. package/dist/auth/auth.controller.d.ts +66 -7
  41. package/dist/auth/auth.controller.d.ts.map +1 -1
  42. package/dist/auth/auth.controller.js +67 -23
  43. package/dist/auth/auth.controller.js.map +1 -1
  44. package/dist/auth/auth.module.d.ts.map +1 -1
  45. package/dist/auth/auth.module.js +2 -0
  46. package/dist/auth/auth.module.js.map +1 -1
  47. package/dist/auth/auth.service.d.ts +136 -4
  48. package/dist/auth/auth.service.d.ts.map +1 -1
  49. package/dist/auth/auth.service.js +246 -48
  50. package/dist/auth/auth.service.js.map +1 -1
  51. package/dist/auth/dto/confirm-email.dto.d.ts +4 -0
  52. package/dist/auth/dto/confirm-email.dto.d.ts.map +1 -0
  53. package/dist/auth/dto/confirm-email.dto.js +22 -0
  54. package/dist/auth/dto/confirm-email.dto.js.map +1 -0
  55. package/dist/auth/dto/resend-confirmation.dto.d.ts +8 -0
  56. package/dist/auth/dto/resend-confirmation.dto.d.ts.map +1 -0
  57. package/dist/auth/dto/resend-confirmation.dto.js +36 -0
  58. package/dist/auth/dto/resend-confirmation.dto.js.map +1 -0
  59. package/dist/authorize/authorize.controller.d.ts +1 -1
  60. package/dist/authorize/authorize.controller.d.ts.map +1 -1
  61. package/dist/authorize/authorize.controller.js +4 -2
  62. package/dist/authorize/authorize.controller.js.map +1 -1
  63. package/dist/authorize/authorize.service.d.ts +7 -0
  64. package/dist/authorize/authorize.service.d.ts.map +1 -1
  65. package/dist/authorize/authorize.service.js +1 -1
  66. package/dist/authorize/authorize.service.js.map +1 -1
  67. package/dist/challenge/challenge.service.d.ts +18 -5
  68. package/dist/challenge/challenge.service.d.ts.map +1 -1
  69. package/dist/challenge/challenge.service.js +50 -3
  70. package/dist/challenge/challenge.service.js.map +1 -1
  71. package/dist/core.module.d.ts.map +1 -1
  72. package/dist/core.module.js +17 -0
  73. package/dist/core.module.js.map +1 -1
  74. package/dist/dashboard/dashboard/dashboard.controller.d.ts +6 -6
  75. package/dist/dashboard/dashboard/dashboard.service.d.ts +6 -6
  76. package/dist/dashboard/dashboard-component/dashboard-component.controller.d.ts +4 -4
  77. package/dist/dashboard/dashboard-component/dashboard-component.service.d.ts +4 -4
  78. package/dist/dashboard/dashboard-component-role/dashboard-component-role.controller.d.ts +1 -1
  79. package/dist/dashboard/dashboard-component-role/dashboard-component-role.service.d.ts +1 -1
  80. package/dist/dashboard/dashboard-core/dashboard-core.controller.d.ts +2 -2
  81. package/dist/dashboard/dashboard-core/dashboard-core.service.d.ts +2 -2
  82. package/dist/dashboard/dashboard-item/dashboard-item.controller.d.ts +2 -2
  83. package/dist/dashboard/dashboard-item/dashboard-item.service.d.ts +2 -2
  84. package/dist/file/file.controller.d.ts +8 -1
  85. package/dist/file/file.controller.d.ts.map +1 -1
  86. package/dist/file/file.controller.js +45 -7
  87. package/dist/file/file.controller.js.map +1 -1
  88. package/dist/file/file.service.d.ts +128 -1
  89. package/dist/file/file.service.d.ts.map +1 -1
  90. package/dist/file/file.service.js +319 -8
  91. package/dist/file/file.service.js.map +1 -1
  92. package/dist/file/image-optimization.service.d.ts +43 -0
  93. package/dist/file/image-optimization.service.d.ts.map +1 -1
  94. package/dist/file/image-optimization.service.js +154 -0
  95. package/dist/file/image-optimization.service.js.map +1 -1
  96. package/dist/file/provider/abstract.provider.d.ts +16 -0
  97. package/dist/file/provider/abstract.provider.d.ts.map +1 -1
  98. package/dist/file/provider/abstract.provider.js +4 -0
  99. package/dist/file/provider/abstract.provider.js.map +1 -1
  100. package/dist/file/provider/gcs.provider.d.ts +2 -0
  101. package/dist/file/provider/gcs.provider.d.ts.map +1 -1
  102. package/dist/file/provider/gcs.provider.js +10 -0
  103. package/dist/file/provider/gcs.provider.js.map +1 -1
  104. package/dist/file/provider/local.provider.d.ts +1 -0
  105. package/dist/file/provider/local.provider.d.ts.map +1 -1
  106. package/dist/file/provider/local.provider.js +13 -0
  107. package/dist/file/provider/local.provider.js.map +1 -1
  108. package/dist/file/provider/s3.provider.d.ts +5 -0
  109. package/dist/file/provider/s3.provider.d.ts.map +1 -1
  110. package/dist/file/provider/s3.provider.js +15 -0
  111. package/dist/file/provider/s3.provider.js.map +1 -1
  112. package/dist/file/provider/spaces.provider.d.ts +5 -0
  113. package/dist/file/provider/spaces.provider.d.ts.map +1 -1
  114. package/dist/file/provider/spaces.provider.js +16 -0
  115. package/dist/file/provider/spaces.provider.js.map +1 -1
  116. package/dist/impersonation/dto/redeem-impersonation.dto.d.ts +4 -0
  117. package/dist/impersonation/dto/redeem-impersonation.dto.d.ts.map +1 -0
  118. package/dist/impersonation/dto/redeem-impersonation.dto.js +23 -0
  119. package/dist/impersonation/dto/redeem-impersonation.dto.js.map +1 -0
  120. package/dist/impersonation/dto/start-impersonation.dto.d.ts +7 -0
  121. package/dist/impersonation/dto/start-impersonation.dto.d.ts.map +1 -0
  122. package/dist/impersonation/dto/start-impersonation.dto.js +27 -0
  123. package/dist/impersonation/dto/start-impersonation.dto.js.map +1 -0
  124. package/dist/impersonation/impersonation-restrictions.d.ts +26 -0
  125. package/dist/impersonation/impersonation-restrictions.d.ts.map +1 -0
  126. package/dist/impersonation/impersonation-restrictions.js +76 -0
  127. package/dist/impersonation/impersonation-restrictions.js.map +1 -0
  128. package/dist/impersonation/impersonation.controller.d.ts +90 -0
  129. package/dist/impersonation/impersonation.controller.d.ts.map +1 -0
  130. package/dist/impersonation/impersonation.controller.js +135 -0
  131. package/dist/impersonation/impersonation.controller.js.map +1 -0
  132. package/dist/impersonation/impersonation.module.d.ts +8 -0
  133. package/dist/impersonation/impersonation.module.d.ts.map +1 -0
  134. package/dist/impersonation/impersonation.module.js +44 -0
  135. package/dist/impersonation/impersonation.module.js.map +1 -0
  136. package/dist/impersonation/impersonation.service.d.ts +164 -0
  137. package/dist/impersonation/impersonation.service.d.ts.map +1 -0
  138. package/dist/impersonation/impersonation.service.js +408 -0
  139. package/dist/impersonation/impersonation.service.js.map +1 -0
  140. package/dist/index.d.ts +17 -0
  141. package/dist/index.d.ts.map +1 -1
  142. package/dist/index.js +19 -0
  143. package/dist/index.js.map +1 -1
  144. package/dist/integration/services/outbox-polling.coordinator.d.ts +2 -0
  145. package/dist/integration/services/outbox-polling.coordinator.d.ts.map +1 -1
  146. package/dist/integration/services/outbox-polling.coordinator.js +50 -30
  147. package/dist/integration/services/outbox-polling.coordinator.js.map +1 -1
  148. package/dist/integration/services/outbox.service.d.ts.map +1 -1
  149. package/dist/integration/services/outbox.service.js +5 -1
  150. package/dist/integration/services/outbox.service.js.map +1 -1
  151. package/dist/integration-profile/integration-profile.secrets.d.ts.map +1 -1
  152. package/dist/integration-profile/integration-profile.secrets.js +3 -0
  153. package/dist/integration-profile/integration-profile.secrets.js.map +1 -1
  154. package/dist/integration-profile/integration-profile.utils.d.ts +14 -0
  155. package/dist/integration-profile/integration-profile.utils.d.ts.map +1 -1
  156. package/dist/integration-profile/integration-profile.utils.js +26 -0
  157. package/dist/integration-profile/integration-profile.utils.js.map +1 -1
  158. package/dist/integration-profile/testers/email.testers.d.ts.map +1 -1
  159. package/dist/integration-profile/testers/email.testers.js +28 -0
  160. package/dist/integration-profile/testers/email.testers.js.map +1 -1
  161. package/dist/language/en.json +11 -0
  162. package/dist/language/pt.json +11 -0
  163. package/dist/mail/dto/send.dto.d.ts +38 -1
  164. package/dist/mail/dto/send.dto.d.ts.map +1 -1
  165. package/dist/mail/dto/send.dto.js +10 -0
  166. package/dist/mail/dto/send.dto.js.map +1 -1
  167. package/dist/mail/mail.controller.d.ts +1 -0
  168. package/dist/mail/mail.controller.d.ts.map +1 -1
  169. package/dist/mail/mail.module.d.ts.map +1 -1
  170. package/dist/mail/mail.module.js +2 -0
  171. package/dist/mail/mail.module.js.map +1 -1
  172. package/dist/mail/mail.service.d.ts +48 -4
  173. package/dist/mail/mail.service.d.ts.map +1 -1
  174. package/dist/mail/mail.service.js +187 -35
  175. package/dist/mail/mail.service.js.map +1 -1
  176. package/dist/mail-delivery/mail-delivery-provision.service.d.ts +21 -0
  177. package/dist/mail-delivery/mail-delivery-provision.service.d.ts.map +1 -0
  178. package/dist/mail-delivery/mail-delivery-provision.service.js +64 -0
  179. package/dist/mail-delivery/mail-delivery-provision.service.js.map +1 -0
  180. package/dist/mail-delivery/mail-delivery.constants.d.ts +17 -0
  181. package/dist/mail-delivery/mail-delivery.constants.d.ts.map +1 -0
  182. package/dist/mail-delivery/mail-delivery.constants.js +31 -0
  183. package/dist/mail-delivery/mail-delivery.constants.js.map +1 -0
  184. package/dist/mail-delivery/mail-delivery.controller.d.ts +19 -0
  185. package/dist/mail-delivery/mail-delivery.controller.d.ts.map +1 -0
  186. package/dist/mail-delivery/mail-delivery.controller.js +53 -0
  187. package/dist/mail-delivery/mail-delivery.controller.js.map +1 -0
  188. package/dist/mail-delivery/mail-delivery.module.d.ts +7 -0
  189. package/dist/mail-delivery/mail-delivery.module.d.ts.map +1 -0
  190. package/dist/mail-delivery/mail-delivery.module.js +36 -0
  191. package/dist/mail-delivery/mail-delivery.module.js.map +1 -0
  192. package/dist/mail-delivery/mail-delivery.service.d.ts +38 -0
  193. package/dist/mail-delivery/mail-delivery.service.d.ts.map +1 -0
  194. package/dist/mail-delivery/mail-delivery.service.js +140 -0
  195. package/dist/mail-delivery/mail-delivery.service.js.map +1 -0
  196. package/dist/mail-delivery/ses-event.parser.d.ts +27 -0
  197. package/dist/mail-delivery/ses-event.parser.d.ts.map +1 -0
  198. package/dist/mail-delivery/ses-event.parser.js +131 -0
  199. package/dist/mail-delivery/ses-event.parser.js.map +1 -0
  200. package/dist/mail-delivery/ses-webhook.service.d.ts +58 -0
  201. package/dist/mail-delivery/ses-webhook.service.d.ts.map +1 -0
  202. package/dist/mail-delivery/ses-webhook.service.js +214 -0
  203. package/dist/mail-delivery/ses-webhook.service.js.map +1 -0
  204. package/dist/mail-delivery/sns-message.util.d.ts +38 -0
  205. package/dist/mail-delivery/sns-message.util.d.ts.map +1 -0
  206. package/dist/mail-delivery/sns-message.util.js +109 -0
  207. package/dist/mail-delivery/sns-message.util.js.map +1 -0
  208. package/dist/mail-sent/dto/query-mail-sent-list.dto.d.ts +5 -0
  209. package/dist/mail-sent/dto/query-mail-sent-list.dto.d.ts.map +1 -1
  210. package/dist/mail-sent/dto/query-mail-sent-list.dto.js +6 -0
  211. package/dist/mail-sent/dto/query-mail-sent-list.dto.js.map +1 -1
  212. package/dist/mail-sent/mail-sent.controller.d.ts +39 -0
  213. package/dist/mail-sent/mail-sent.controller.d.ts.map +1 -1
  214. package/dist/mail-sent/mail-sent.service.d.ts +39 -0
  215. package/dist/mail-sent/mail-sent.service.d.ts.map +1 -1
  216. package/dist/mail-sent/mail-sent.service.js +45 -4
  217. package/dist/mail-sent/mail-sent.service.js.map +1 -1
  218. package/dist/mailbox/mailbox-fetcher.registry.d.ts +100 -0
  219. package/dist/mailbox/mailbox-fetcher.registry.d.ts.map +1 -0
  220. package/dist/mailbox/mailbox-fetcher.registry.js +59 -0
  221. package/dist/mailbox/mailbox-fetcher.registry.js.map +1 -0
  222. package/dist/mailbox/mailbox.module.d.ts +8 -0
  223. package/dist/mailbox/mailbox.module.d.ts.map +1 -0
  224. package/dist/mailbox/mailbox.module.js +27 -0
  225. package/dist/mailbox/mailbox.module.js.map +1 -0
  226. package/dist/meeting/meeting-provider.registry.d.ts +155 -0
  227. package/dist/meeting/meeting-provider.registry.d.ts.map +1 -0
  228. package/dist/meeting/meeting-provider.registry.js +53 -0
  229. package/dist/meeting/meeting-provider.registry.js.map +1 -0
  230. package/dist/meeting/meeting.constants.d.ts +47 -0
  231. package/dist/meeting/meeting.constants.d.ts.map +1 -0
  232. package/dist/meeting/meeting.constants.js +21 -0
  233. package/dist/meeting/meeting.constants.js.map +1 -0
  234. package/dist/meeting/meeting.module.d.ts +7 -0
  235. package/dist/meeting/meeting.module.d.ts.map +1 -0
  236. package/dist/meeting/meeting.module.js +26 -0
  237. package/dist/meeting/meeting.module.js.map +1 -0
  238. package/dist/middlewares/locale-injection.middleware.d.ts +12 -0
  239. package/dist/middlewares/locale-injection.middleware.d.ts.map +1 -1
  240. package/dist/middlewares/locale-injection.middleware.js +20 -4
  241. package/dist/middlewares/locale-injection.middleware.js.map +1 -1
  242. package/dist/oauth/providers/google.provider.d.ts +7 -0
  243. package/dist/oauth/providers/google.provider.d.ts.map +1 -1
  244. package/dist/oauth/providers/google.provider.js +43 -13
  245. package/dist/oauth/providers/google.provider.js.map +1 -1
  246. package/dist/observability/monitored-cron.d.ts +34 -0
  247. package/dist/observability/monitored-cron.d.ts.map +1 -0
  248. package/dist/observability/monitored-cron.js +118 -0
  249. package/dist/observability/monitored-cron.js.map +1 -0
  250. package/dist/pairing/dto/approve-reverse-pairing.dto.d.ts +12 -0
  251. package/dist/pairing/dto/approve-reverse-pairing.dto.d.ts.map +1 -0
  252. package/dist/pairing/dto/approve-reverse-pairing.dto.js +30 -0
  253. package/dist/pairing/dto/approve-reverse-pairing.dto.js.map +1 -0
  254. package/dist/pairing/dto/claim-pairing.dto.d.ts +11 -0
  255. package/dist/pairing/dto/claim-pairing.dto.d.ts.map +1 -0
  256. package/dist/pairing/dto/claim-pairing.dto.js +35 -0
  257. package/dist/pairing/dto/claim-pairing.dto.js.map +1 -0
  258. package/dist/pairing/dto/confirm-pairing.dto.d.ts +10 -0
  259. package/dist/pairing/dto/confirm-pairing.dto.d.ts.map +1 -0
  260. package/dist/pairing/dto/confirm-pairing.dto.js +24 -0
  261. package/dist/pairing/dto/confirm-pairing.dto.js.map +1 -0
  262. package/dist/pairing/dto/poll-reverse-pairing.dto.d.ts +5 -0
  263. package/dist/pairing/dto/poll-reverse-pairing.dto.d.ts.map +1 -0
  264. package/dist/pairing/dto/poll-reverse-pairing.dto.js +24 -0
  265. package/dist/pairing/dto/poll-reverse-pairing.dto.js.map +1 -0
  266. package/dist/pairing/dto/start-pairing.dto.d.ts +11 -0
  267. package/dist/pairing/dto/start-pairing.dto.d.ts.map +1 -0
  268. package/dist/pairing/dto/start-pairing.dto.js +30 -0
  269. package/dist/pairing/dto/start-pairing.dto.js.map +1 -0
  270. package/dist/pairing/dto/start-reverse-pairing.dto.d.ts +24 -0
  271. package/dist/pairing/dto/start-reverse-pairing.dto.d.ts.map +1 -0
  272. package/dist/pairing/dto/start-reverse-pairing.dto.js +47 -0
  273. package/dist/pairing/dto/start-reverse-pairing.dto.js.map +1 -0
  274. package/dist/pairing/pairing.controller.d.ts +118 -0
  275. package/dist/pairing/pairing.controller.d.ts.map +1 -0
  276. package/dist/pairing/pairing.controller.js +296 -0
  277. package/dist/pairing/pairing.controller.js.map +1 -0
  278. package/dist/pairing/pairing.module.d.ts +10 -0
  279. package/dist/pairing/pairing.module.d.ts.map +1 -0
  280. package/dist/pairing/pairing.module.js +40 -0
  281. package/dist/pairing/pairing.module.js.map +1 -0
  282. package/dist/pairing/pairing.service.d.ts +238 -0
  283. package/dist/pairing/pairing.service.d.ts.map +1 -0
  284. package/dist/pairing/pairing.service.js +495 -0
  285. package/dist/pairing/pairing.service.js.map +1 -0
  286. package/dist/pdf/pdf.service.d.ts +3 -6
  287. package/dist/pdf/pdf.service.d.ts.map +1 -1
  288. package/dist/pdf/pdf.service.js +8 -20
  289. package/dist/pdf/pdf.service.js.map +1 -1
  290. package/dist/profile/profile.controller.d.ts +11 -0
  291. package/dist/profile/profile.controller.d.ts.map +1 -1
  292. package/dist/profile/profile.service.d.ts +11 -0
  293. package/dist/profile/profile.service.d.ts.map +1 -1
  294. package/dist/profile/profile.service.js +20 -11
  295. package/dist/profile/profile.service.js.map +1 -1
  296. package/dist/redis/redis-pubsub.d.ts.map +1 -1
  297. package/dist/redis/redis-pubsub.js +44 -0
  298. package/dist/redis/redis-pubsub.js.map +1 -1
  299. package/dist/role/guards/role.guard.d.ts +5 -0
  300. package/dist/role/guards/role.guard.d.ts.map +1 -1
  301. package/dist/role/guards/role.guard.js +41 -39
  302. package/dist/role/guards/role.guard.js.map +1 -1
  303. package/dist/session/session.controller.d.ts +2 -0
  304. package/dist/session/session.controller.d.ts.map +1 -1
  305. package/dist/session/session.service.d.ts +39 -0
  306. package/dist/session/session.service.d.ts.map +1 -1
  307. package/dist/session/session.service.js +91 -8
  308. package/dist/session/session.service.js.map +1 -1
  309. package/dist/setting/brand-asset.service.d.ts +48 -0
  310. package/dist/setting/brand-asset.service.d.ts.map +1 -0
  311. package/dist/setting/brand-asset.service.js +130 -0
  312. package/dist/setting/brand-asset.service.js.map +1 -0
  313. package/dist/setting/setting.module.d.ts.map +1 -1
  314. package/dist/setting/setting.module.js +3 -2
  315. package/dist/setting/setting.module.js.map +1 -1
  316. package/dist/setting/setting.service.d.ts +33 -0
  317. package/dist/setting/setting.service.d.ts.map +1 -1
  318. package/dist/setting/setting.service.js +88 -0
  319. package/dist/setting/setting.service.js.map +1 -1
  320. package/dist/token/token.service.d.ts +23 -2
  321. package/dist/token/token.service.d.ts.map +1 -1
  322. package/dist/token/token.service.js +39 -4
  323. package/dist/token/token.service.js.map +1 -1
  324. package/dist/user/user.controller.d.ts +8 -22
  325. package/dist/user/user.controller.d.ts.map +1 -1
  326. package/dist/user/user.service.d.ts +44 -24
  327. package/dist/user/user.service.d.ts.map +1 -1
  328. package/dist/user/user.service.js +89 -6
  329. package/dist/user/user.service.js.map +1 -1
  330. package/dist/user-device/user-device.controller.d.ts +54 -0
  331. package/dist/user-device/user-device.controller.d.ts.map +1 -0
  332. package/dist/user-device/user-device.controller.js +103 -0
  333. package/dist/user-device/user-device.controller.js.map +1 -0
  334. package/dist/user-device/user-device.module.d.ts +3 -0
  335. package/dist/user-device/user-device.module.d.ts.map +1 -0
  336. package/dist/user-device/user-device.module.js +26 -0
  337. package/dist/user-device/user-device.module.js.map +1 -0
  338. package/dist/user-device/user-device.service.d.ts +71 -0
  339. package/dist/user-device/user-device.service.d.ts.map +1 -0
  340. package/dist/user-device/user-device.service.js +158 -0
  341. package/dist/user-device/user-device.service.js.map +1 -0
  342. package/dist/utils/device-key.d.ts +23 -0
  343. package/dist/utils/device-key.d.ts.map +1 -0
  344. package/dist/utils/device-key.js +31 -0
  345. package/dist/utils/device-key.js.map +1 -0
  346. package/dist/utils/geo-ip.d.ts +38 -0
  347. package/dist/utils/geo-ip.d.ts.map +1 -0
  348. package/dist/utils/geo-ip.js +122 -0
  349. package/dist/utils/geo-ip.js.map +1 -0
  350. package/dist/utils/locale-context.d.ts +10 -7
  351. package/dist/utils/locale-context.d.ts.map +1 -1
  352. package/dist/utils/locale-context.js +14 -8
  353. package/dist/utils/locale-context.js.map +1 -1
  354. package/dist/utils/security-event-vars.d.ts +56 -0
  355. package/dist/utils/security-event-vars.d.ts.map +1 -0
  356. package/dist/utils/security-event-vars.js +109 -0
  357. package/dist/utils/security-event-vars.js.map +1 -0
  358. package/dist/utils/user-agent.d.ts +19 -0
  359. package/dist/utils/user-agent.d.ts.map +1 -0
  360. package/dist/utils/user-agent.js +36 -0
  361. package/dist/utils/user-agent.js.map +1 -0
  362. package/dist/webhook-integration/webhook-integration.service.d.ts +5 -0
  363. package/dist/webhook-integration/webhook-integration.service.d.ts.map +1 -1
  364. package/dist/webhook-integration/webhook-integration.service.js +50 -4
  365. package/dist/webhook-integration/webhook-integration.service.js.map +1 -1
  366. package/dist/webhook-integration/webhook-protocol.registry.d.ts +6 -0
  367. package/dist/webhook-integration/webhook-protocol.registry.d.ts.map +1 -1
  368. package/dist/webhook-integration/webhook-protocol.registry.js.map +1 -1
  369. package/hedhog/data/integration_provider.yaml +9 -0
  370. package/hedhog/data/mail.yaml +198 -62
  371. package/hedhog/data/mail_layout.yaml +43 -33
  372. package/hedhog/data/menu.yaml +2 -0
  373. package/hedhog/data/role.yaml +16 -0
  374. package/hedhog/data/route.yaml +172 -3
  375. package/hedhog/data/setting_group.yaml +178 -2
  376. package/hedhog/data/setting_subgroup.yaml +8 -0
  377. package/hedhog/frontend/app/_lib/hooks/use-core-access.test.tsx.ejs +125 -0
  378. package/hedhog/frontend/app/_lib/hooks/use-core-access.ts.ejs +29 -0
  379. package/hedhog/frontend/app/_lib/hooks/use-impersonation-access.test.ts.ejs +71 -0
  380. package/hedhog/frontend/app/_lib/hooks/use-impersonation-access.ts.ejs +32 -0
  381. package/hedhog/frontend/app/access-log/page.tsx.ejs +96 -22
  382. package/hedhog/frontend/app/account/components/active-sessions.tsx.ejs +17 -1
  383. package/hedhog/frontend/app/account/components/known-devices.tsx.ejs +89 -0
  384. package/hedhog/frontend/app/account/components/profile-form.tsx.ejs +2 -1
  385. package/hedhog/frontend/app/account/components/user-devices-list.tsx.ejs +186 -0
  386. package/hedhog/frontend/app/account/devices/page.tsx.ejs +5 -0
  387. package/hedhog/frontend/app/account/layout.tsx.ejs +2 -0
  388. package/hedhog/frontend/app/configurations/[slug]/components/setting-field.test.tsx.ejs +298 -0
  389. package/hedhog/frontend/app/configurations/[slug]/components/setting-field.tsx.ejs +376 -1236
  390. package/hedhog/frontend/app/mail/log/page.tsx.ejs +210 -3
  391. package/hedhog/frontend/app/mail/template/page.tsx.ejs +190 -132
  392. package/hedhog/frontend/app/users/active-session.tsx.ejs +58 -11
  393. package/hedhog/frontend/app/users/page.tsx.ejs +69 -10
  394. package/hedhog/frontend/app/users/simulate-access-dialog.test.tsx.ejs +202 -0
  395. package/hedhog/frontend/app/users/simulate-access-dialog.tsx.ejs +170 -0
  396. package/hedhog/frontend/app/users/user-activity-timeline.tsx.ejs +19 -0
  397. package/hedhog/frontend/app/users/user-devices.tsx.ejs +89 -0
  398. package/hedhog/frontend/app/users/user-logs.tsx.ejs +13 -1
  399. package/hedhog/frontend/app/users/user-sheet.tsx.ejs +46 -24
  400. package/hedhog/frontend/messages/en.json +146 -48
  401. package/hedhog/frontend/messages/pt.json +146 -48
  402. package/hedhog/table/access_log.yaml +7 -0
  403. package/hedhog/table/file.yaml +8 -0
  404. package/hedhog/table/mail_delivery_event.yaml +76 -0
  405. package/hedhog/table/mail_sent.yaml +23 -0
  406. package/hedhog/table/user_activity.yaml +9 -0
  407. package/hedhog/table/user_device.yaml +52 -0
  408. package/hedhog/table/user_session.yaml +20 -1
  409. package/package.json +6 -5
  410. package/src/access-log/access-log.controller.ts +1 -0
  411. package/src/access-log/access-log.interceptor.ts +5 -1
  412. package/src/access-log/access-log.service.spec.ts +33 -2
  413. package/src/access-log/access-log.service.ts +38 -0
  414. package/src/access-log/dto/query-access-log.dto.ts +5 -0
  415. package/src/ai/ai.controller.ts +9 -0
  416. package/src/ai/ai.module.ts +3 -2
  417. package/src/ai/ai.service.ts +150 -13
  418. package/src/ai/dto/richtext-edit-html.dto.ts +11 -0
  419. package/src/ai/richtext-ai.prompts.ts +57 -0
  420. package/src/ai/richtext-ai.service.ts +109 -0
  421. package/src/auth/auth.controller.ts +47 -8
  422. package/src/auth/auth.module.ts +2 -0
  423. package/src/auth/auth.service.spec.ts +383 -6
  424. package/src/auth/auth.service.ts +345 -56
  425. package/src/auth/dto/confirm-email.dto.ts +7 -0
  426. package/src/auth/dto/resend-confirmation.dto.ts +20 -0
  427. package/src/authorize/authorize.controller.ts +2 -0
  428. package/src/authorize/authorize.service.spec.ts +23 -0
  429. package/src/authorize/authorize.service.ts +8 -0
  430. package/src/challenge/challenge.service.spec.ts +73 -0
  431. package/src/challenge/challenge.service.ts +62 -3
  432. package/src/core.module.ts +19 -0
  433. package/src/file/file.controller.ts +54 -4
  434. package/src/file/file.service.spec.ts +275 -105
  435. package/src/file/file.service.ts +409 -14
  436. package/src/file/image-optimization.service.spec.ts +92 -0
  437. package/src/file/image-optimization.service.ts +202 -0
  438. package/src/file/provider/abstract.provider.ts +23 -0
  439. package/src/file/provider/gcs.provider.ts +17 -0
  440. package/src/file/provider/local.provider.ts +21 -0
  441. package/src/file/provider/s3.provider.ts +25 -0
  442. package/src/file/provider/spaces.provider.ts +26 -0
  443. package/src/impersonation/dto/redeem-impersonation.dto.ts +8 -0
  444. package/src/impersonation/dto/start-impersonation.dto.ts +13 -0
  445. package/src/impersonation/impersonation-restrictions.ts +84 -0
  446. package/src/impersonation/impersonation.controller.ts +109 -0
  447. package/src/impersonation/impersonation.module.ts +31 -0
  448. package/src/impersonation/impersonation.service.spec.ts +427 -0
  449. package/src/impersonation/impersonation.service.ts +577 -0
  450. package/src/index.ts +21 -0
  451. package/src/integration/services/outbox-polling.coordinator.spec.ts +90 -0
  452. package/src/integration/services/outbox-polling.coordinator.ts +62 -40
  453. package/src/integration/services/outbox.service.spec.ts +8 -0
  454. package/src/integration/services/outbox.service.ts +19 -13
  455. package/src/integration-profile/integration-profile.secrets.ts +3 -0
  456. package/src/integration-profile/integration-profile.utils.ts +38 -0
  457. package/src/integration-profile/testers/email.testers.ts +34 -1
  458. package/src/language/en.json +11 -0
  459. package/src/language/pt.json +11 -0
  460. package/src/mail/dto/send.dto.ts +46 -2
  461. package/src/mail/mail-template.spec.ts +79 -2
  462. package/src/mail/mail.module.ts +2 -0
  463. package/src/mail/mail.service.spec.ts +307 -6
  464. package/src/mail/mail.service.ts +227 -30
  465. package/src/mail-delivery/mail-delivery-provision.service.ts +66 -0
  466. package/src/mail-delivery/mail-delivery.constants.ts +31 -0
  467. package/src/mail-delivery/mail-delivery.controller.ts +38 -0
  468. package/src/mail-delivery/mail-delivery.module.ts +23 -0
  469. package/src/mail-delivery/mail-delivery.service.spec.ts +136 -0
  470. package/src/mail-delivery/mail-delivery.service.ts +152 -0
  471. package/src/mail-delivery/ses-event.parser.spec.ts +140 -0
  472. package/src/mail-delivery/ses-event.parser.ts +191 -0
  473. package/src/mail-delivery/ses-webhook.service.spec.ts +170 -0
  474. package/src/mail-delivery/ses-webhook.service.ts +240 -0
  475. package/src/mail-delivery/sns-message.util.spec.ts +163 -0
  476. package/src/mail-delivery/sns-message.util.ts +125 -0
  477. package/src/mail-sent/dto/query-mail-sent-list.dto.ts +15 -0
  478. package/src/mail-sent/mail-sent.service.ts +46 -2
  479. package/src/mailbox/mailbox-fetcher.registry.ts +132 -0
  480. package/src/mailbox/mailbox.module.ts +14 -0
  481. package/src/meeting/meeting-provider.registry.ts +193 -0
  482. package/src/meeting/meeting.constants.ts +53 -0
  483. package/src/meeting/meeting.module.ts +13 -0
  484. package/src/middlewares/locale-injection.middleware.ts +25 -6
  485. package/src/oauth/providers/google.provider.ts +49 -15
  486. package/src/observability/monitored-cron.spec.ts +102 -0
  487. package/src/observability/monitored-cron.ts +110 -0
  488. package/src/pairing/dto/approve-reverse-pairing.dto.ts +20 -0
  489. package/src/pairing/dto/claim-pairing.dto.ts +19 -0
  490. package/src/pairing/dto/confirm-pairing.dto.ts +14 -0
  491. package/src/pairing/dto/poll-reverse-pairing.dto.ts +9 -0
  492. package/src/pairing/dto/start-pairing.dto.ts +19 -0
  493. package/src/pairing/dto/start-reverse-pairing.dto.ts +45 -0
  494. package/src/pairing/pairing.controller.ts +246 -0
  495. package/src/pairing/pairing.module.ts +27 -0
  496. package/src/pairing/pairing.service.spec.ts +462 -0
  497. package/src/pairing/pairing.service.ts +614 -0
  498. package/src/pdf/pdf.service.ts +6 -24
  499. package/src/profile/profile.service.ts +26 -8
  500. package/src/redis/redis-pubsub.ts +11 -0
  501. package/src/role/guards/role.guard.spec.ts +75 -0
  502. package/src/role/guards/role.guard.ts +64 -46
  503. package/src/session/session.service.spec.ts +81 -0
  504. package/src/session/session.service.ts +93 -6
  505. package/src/setting/brand-asset.service.ts +137 -0
  506. package/src/setting/setting.module.ts +3 -2
  507. package/src/setting/setting.service.spec.ts +79 -1
  508. package/src/setting/setting.service.ts +109 -1
  509. package/src/token/token.service.spec.ts +62 -0
  510. package/src/token/token.service.ts +57 -3
  511. package/src/user/user.service.spec.ts +33 -2
  512. package/src/user/user.service.ts +108 -6
  513. package/src/user-device/user-device.controller.ts +77 -0
  514. package/src/user-device/user-device.module.ts +13 -0
  515. package/src/user-device/user-device.service.spec.ts +234 -0
  516. package/src/user-device/user-device.service.ts +168 -0
  517. package/src/utils/device-key.spec.ts +57 -0
  518. package/src/utils/device-key.ts +32 -0
  519. package/src/utils/geo-ip.spec.ts +134 -0
  520. package/src/utils/geo-ip.ts +93 -0
  521. package/src/utils/locale-context.spec.ts +27 -1
  522. package/src/utils/locale-context.ts +15 -12
  523. package/src/utils/security-event-vars.spec.ts +161 -0
  524. package/src/utils/security-event-vars.ts +153 -0
  525. package/src/utils/user-agent.spec.ts +37 -0
  526. package/src/utils/user-agent.ts +46 -0
  527. package/src/webhook-integration/webhook-integration.service.ts +57 -3
  528. package/src/webhook-integration/webhook-protocol.registry.ts +6 -0
@@ -37,6 +37,36 @@ export declare class MailSentController {
37
37
  next: number;
38
38
  }>;
39
39
  get(id: number, locale: string): Promise<{
40
+ mail_sent_user: {
41
+ id: number;
42
+ user_id: number;
43
+ created_at: Date;
44
+ updated_at: Date;
45
+ status: import("@prisma/client").$Enums.mail_sent_user_status_606696b06e_enum;
46
+ mail_id: number;
47
+ mail_sent_id: number | null;
48
+ user_identifier_id: number | null;
49
+ recipient_email: string;
50
+ read_at: Date | null;
51
+ error_code: string | null;
52
+ error_message: string | null;
53
+ }[];
54
+ mail_delivery_event: {
55
+ id: number;
56
+ created_at: Date;
57
+ updated_at: Date;
58
+ provider_message_id: string;
59
+ mail_sent_id: number | null;
60
+ recipient_email: string | null;
61
+ event_type: string;
62
+ bounce_type: string | null;
63
+ bounce_subtype: string | null;
64
+ diagnostic_code: string | null;
65
+ reporting_mta: string | null;
66
+ payload: import("@prisma/client/runtime/library").JsonValue | null;
67
+ occurred_at: Date;
68
+ }[];
69
+ } & {
40
70
  id: number;
41
71
  created_at: Date;
42
72
  updated_at: Date;
@@ -47,6 +77,9 @@ export declare class MailSentController {
47
77
  cc: string | null;
48
78
  bcc: string | null;
49
79
  body: string;
80
+ provider_message_id: string | null;
81
+ delivery_status: string | null;
82
+ delivery_updated_at: Date | null;
50
83
  }>;
51
84
  create(data: CreateDTO): Promise<{
52
85
  id: number;
@@ -59,6 +92,9 @@ export declare class MailSentController {
59
92
  cc: string | null;
60
93
  bcc: string | null;
61
94
  body: string;
95
+ provider_message_id: string | null;
96
+ delivery_status: string | null;
97
+ delivery_updated_at: Date | null;
62
98
  }>;
63
99
  update(locale: string, id: number, data: UpdateDTO): Promise<{
64
100
  id: number;
@@ -71,6 +107,9 @@ export declare class MailSentController {
71
107
  cc: string | null;
72
108
  bcc: string | null;
73
109
  body: string;
110
+ provider_message_id: string | null;
111
+ delivery_status: string | null;
112
+ delivery_updated_at: Date | null;
74
113
  }>;
75
114
  delete(locale: string, data: DeleteDTO): Promise<{
76
115
  count: number;
@@ -1 +1 @@
1
- {"version":3,"file":"mail-sent.controller.d.ts","sourceRoot":"","sources":["../../src/mail-sent/mail-sent.controller.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAQ,MAAM,cAAc,CAAC;AAgB/C,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD,qBAEa,kBAAkB;IAG3B,OAAO,CAAC,QAAQ,CAAC,eAAe;gBAAf,eAAe,EAAE,eAAe;IAI7C,IAAI,CACM,gBAAgB,KAAA,EACrB,KAAK,EAAE,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAahC,GAAG,CACoB,EAAE,EAAE,MAAM,EAC3B,MAAM,EAAE,MAAM;;;;;;;;;;;;IAMpB,MAAM,CAAS,IAAI,EAAE,SAAS;;;;;;;;;;;;IAK9B,MAAM,CAAW,MAAM,EAAE,MAAM,EAA4B,EAAE,EAAE,MAAM,EAAU,IAAI,EAAE,SAAS;;;;;;;;;;;;IAQ9F,MAAM,CAAW,MAAM,EAAE,MAAM,EAAS,IAAI,EAAE,SAAS;;;CAG9D"}
1
+ {"version":3,"file":"mail-sent.controller.d.ts","sourceRoot":"","sources":["../../src/mail-sent/mail-sent.controller.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAQ,MAAM,cAAc,CAAC;AAgB/C,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD,qBAEa,kBAAkB;IAG3B,OAAO,CAAC,QAAQ,CAAC,eAAe;gBAAf,eAAe,EAAE,eAAe;IAI7C,IAAI,CACM,gBAAgB,KAAA,EACrB,KAAK,EAAE,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAahC,GAAG,CACoB,EAAE,EAAE,MAAM,EAC3B,MAAM,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAMpB,MAAM,CAAS,IAAI,EAAE,SAAS;;;;;;;;;;;;;;;IAK9B,MAAM,CAAW,MAAM,EAAE,MAAM,EAA4B,EAAE,EAAE,MAAM,EAAU,IAAI,EAAE,SAAS;;;;;;;;;;;;;;;IAQ9F,MAAM,CAAW,MAAM,EAAE,MAAM,EAAS,IAAI,EAAE,SAAS;;;CAG9D"}
@@ -41,6 +41,36 @@ export declare class MailSentService {
41
41
  next: number;
42
42
  }>;
43
43
  get(locale: string, id: number): Promise<{
44
+ mail_sent_user: {
45
+ id: number;
46
+ user_id: number;
47
+ created_at: Date;
48
+ updated_at: Date;
49
+ status: import("@prisma/client").$Enums.mail_sent_user_status_606696b06e_enum;
50
+ mail_id: number;
51
+ mail_sent_id: number | null;
52
+ user_identifier_id: number | null;
53
+ recipient_email: string;
54
+ read_at: Date | null;
55
+ error_code: string | null;
56
+ error_message: string | null;
57
+ }[];
58
+ mail_delivery_event: {
59
+ id: number;
60
+ created_at: Date;
61
+ updated_at: Date;
62
+ provider_message_id: string;
63
+ mail_sent_id: number | null;
64
+ recipient_email: string | null;
65
+ event_type: string;
66
+ bounce_type: string | null;
67
+ bounce_subtype: string | null;
68
+ diagnostic_code: string | null;
69
+ reporting_mta: string | null;
70
+ payload: import("@prisma/client/runtime/library").JsonValue | null;
71
+ occurred_at: Date;
72
+ }[];
73
+ } & {
44
74
  id: number;
45
75
  created_at: Date;
46
76
  updated_at: Date;
@@ -51,6 +81,9 @@ export declare class MailSentService {
51
81
  cc: string | null;
52
82
  bcc: string | null;
53
83
  body: string;
84
+ provider_message_id: string | null;
85
+ delivery_status: string | null;
86
+ delivery_updated_at: Date | null;
54
87
  }>;
55
88
  create({ body, from, mail_id, subject, bcc, cc, to }: CreateDTO): Promise<{
56
89
  id: number;
@@ -63,6 +96,9 @@ export declare class MailSentService {
63
96
  cc: string | null;
64
97
  bcc: string | null;
65
98
  body: string;
99
+ provider_message_id: string | null;
100
+ delivery_status: string | null;
101
+ delivery_updated_at: Date | null;
66
102
  }>;
67
103
  update(locale: string, { id, data }: {
68
104
  id: number;
@@ -78,6 +114,9 @@ export declare class MailSentService {
78
114
  cc: string | null;
79
115
  bcc: string | null;
80
116
  body: string;
117
+ provider_message_id: string | null;
118
+ delivery_status: string | null;
119
+ delivery_updated_at: Date | null;
81
120
  }>;
82
121
  delete(locale: string, { ids }: DeleteDTO): Promise<{
83
122
  count: number;
@@ -1 +1 @@
1
- {"version":3,"file":"mail-sent.service.d.ts","sourceRoot":"","sources":["../../src/mail-sent/mail-sent.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAQpD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C,KAAK,kBAAkB,GAAG,UAAU,GAAG,MAAM,GAAG,OAAO,CAAC;AAExD,KAAK,eAAe,GAAG;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,kBAAkB,CAAC;IAC3B,OAAO,EAAE,IAAI,GAAG,IAAI,CAAC;IACrB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,UAAU,EAAE,IAAI,CAAC;IACjB,UAAU,EAAE,IAAI,CAAC;CAClB,CAAC;AAMF,qBACa,eAAe;IAGxB,OAAO,CAAC,QAAQ,CAAC,aAAa;IAE9B,OAAO,CAAC,QAAQ,CAAC,iBAAiB;gBAFjB,aAAa,EAAE,aAAa,EAE5B,iBAAiB,EAAE,iBAAiB;IAGjD,IAAI,CAAC,gBAAgB,EAAE,oBAAoB;;;;;;;;4BA2IrB,IAAI,GAAG,IAAI;;6BAvJtB,eAAe,EAAE;;;;;;;;;IAyK5B,GAAG,CAAC,MAAM,EAAC,MAAM,EAAE,EAAE,EAAE,MAAM;;;;;;;;;;;;IAY7B,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,SAAS;;;;;;;;;;;;IA+B/D,MAAM,CAAC,MAAM,EAAC,MAAM,EAAC,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,SAAS,CAAA;KAAE;;;;;;;;;;;;IAelE,MAAM,CAAC,MAAM,EAAC,MAAM,EAAC,EAAE,GAAG,EAAE,EAAE,SAAS,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;CA2B3E"}
1
+ {"version":3,"file":"mail-sent.service.d.ts","sourceRoot":"","sources":["../../src/mail-sent/mail-sent.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAQpD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C,KAAK,kBAAkB,GAAG,UAAU,GAAG,MAAM,GAAG,OAAO,CAAC;AAExD,KAAK,eAAe,GAAG;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,kBAAkB,CAAC;IAC3B,OAAO,EAAE,IAAI,GAAG,IAAI,CAAC;IACrB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,UAAU,EAAE,IAAI,CAAC;IACjB,UAAU,EAAE,IAAI,CAAC;CAClB,CAAC;AAMF,qBACa,eAAe;IAGxB,OAAO,CAAC,QAAQ,CAAC,aAAa;IAE9B,OAAO,CAAC,QAAQ,CAAC,iBAAiB;gBAFjB,aAAa,EAAE,aAAa,EAE5B,iBAAiB,EAAE,iBAAiB;IAGjD,IAAI,CAAC,gBAAgB,EAAE,oBAAoB;;;;;;;;4BAiLrB,IAAI,GAAG,IAAI;;6BA7LtB,eAAe,EAAE;;;;;;;;;IA+M5B,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAkB9B,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,SAAS;;;;;;;;;;;;;;;IA+B/D,MAAM,CAAC,MAAM,EAAC,MAAM,EAAC,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,SAAS,CAAA;KAAE;;;;;;;;;;;;;;;IAelE,MAAM,CAAC,MAAM,EAAC,MAAM,EAAC,EAAE,GAAG,EAAE,EAAE,SAAS,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;CA2B3E"}
@@ -23,8 +23,19 @@ let MailSentService = class MailSentService {
23
23
  this.paginationService = paginationService;
24
24
  }
25
25
  async list(paginationParams) {
26
- var _a, _b, _c, _d;
27
- const fields = ['subject', 'from', 'to', 'cc', 'bcc', 'body'];
26
+ var _a, _b, _c, _d, _e;
27
+ // `provider_message_id` entra na busca porque e o unico identificador que o
28
+ // evento do provedor traz: sem ele, ler um bounce no console da AWS e achar
29
+ // o envio correspondente aqui exigia adivinhacao.
30
+ const fields = [
31
+ 'subject',
32
+ 'from',
33
+ 'to',
34
+ 'cc',
35
+ 'bcc',
36
+ 'body',
37
+ 'provider_message_id',
38
+ ];
28
39
  const OR = this.prismaService.createInsensitiveSearch(fields, paginationParams);
29
40
  const AND = [];
30
41
  if (paginationParams.status &&
@@ -70,9 +81,17 @@ let MailSentService = class MailSentService {
70
81
  },
71
82
  });
72
83
  }
84
+ const deliveryStatus = (_c = paginationParams.deliveryStatus) === null || _c === void 0 ? void 0 : _c.trim();
85
+ if (deliveryStatus && deliveryStatus !== 'all') {
86
+ // `pending` e a ausencia de desfecho: o provedor aceitou e nao disse mais
87
+ // nada. E o estado em que ficam os envios que ninguem sabe se chegaram.
88
+ AND.push(deliveryStatus === 'pending'
89
+ ? { delivery_status: null }
90
+ : { delivery_status: deliveryStatus });
91
+ }
73
92
  const createdAt = {};
74
- const createdAtFrom = (_c = paginationParams.createdAtFrom) === null || _c === void 0 ? void 0 : _c.trim();
75
- const createdAtTo = (_d = paginationParams.createdAtTo) === null || _d === void 0 ? void 0 : _d.trim();
93
+ const createdAtFrom = (_d = paginationParams.createdAtFrom) === null || _d === void 0 ? void 0 : _d.trim();
94
+ const createdAtTo = (_e = paginationParams.createdAtTo) === null || _e === void 0 ? void 0 : _e.trim();
76
95
  if (createdAtFrom) {
77
96
  const parsedFrom = new Date(createdAtFrom);
78
97
  if (!isNaN(parsedFrom.getTime())) {
@@ -106,6 +125,22 @@ let MailSentService = class MailSentService {
106
125
  updated_at: true,
107
126
  },
108
127
  },
128
+ // O que o provedor disse depois de aceitar. `mail_sent_user` so cobre
129
+ // destinatario que e usuario da plataforma; um solicitante externo nao
130
+ // deixava rastro nenhum de entrega.
131
+ mail_delivery_event: {
132
+ select: {
133
+ id: true,
134
+ recipient_email: true,
135
+ event_type: true,
136
+ bounce_type: true,
137
+ bounce_subtype: true,
138
+ diagnostic_code: true,
139
+ reporting_mta: true,
140
+ occurred_at: true,
141
+ },
142
+ orderBy: { occurred_at: 'desc' },
143
+ },
109
144
  },
110
145
  });
111
146
  const data = result.data.map((item) => {
@@ -142,6 +177,12 @@ let MailSentService = class MailSentService {
142
177
  async get(locale, id) {
143
178
  const mailSent = await this.prismaService.mail_sent.findUnique({
144
179
  where: { id: id },
180
+ // Sem os relacionamentos, abrir um envio direto pelo id devolvia um
181
+ // registro sem nenhuma informacao de entrega - so a listagem trazia.
182
+ include: {
183
+ mail_sent_user: true,
184
+ mail_delivery_event: { orderBy: { occurred_at: 'desc' } },
185
+ },
145
186
  });
146
187
  if (!mailSent) {
147
188
  throw new common_1.NotFoundException((0, api_locale_1.getLocaleText)('mail_sent_not_found', locale));
@@ -1 +1 @@
1
- {"version":3,"file":"mail-sent.service.js","sourceRoot":"","sources":["../../src/mail-sent/mail-sent.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mail-sent.service.js","sourceRoot":"","sources":["../../src/mail-sent/mail-sent.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,100 @@
1
+ /**
2
+ * Uma mensagem recebida, ainda crua.
3
+ *
4
+ * O fetcher devolve o MIME e nada mais. Interpretar (parsear cabeçalhos, cortar
5
+ * citação, decidir se é autoresposta) é do consumidor — assim os dois provedores
6
+ * compartilham exatamente o mesmo caminho de leitura, e o core não precisa
7
+ * conhecer mailparser nem as regras de atendimento.
8
+ */
9
+ export interface RawInboundMessage {
10
+ /**
11
+ * Identidade da mensagem no provedor (Message-Id, id do Graph).
12
+ * É a chave de idempotência de quem consome.
13
+ */
14
+ externalId: string;
15
+ /** Mensagem RFC 822 completa. */
16
+ source: Buffer;
17
+ receivedAt: Date;
18
+ }
19
+ export interface MailboxFetchTarget {
20
+ /** Perfil de integração com as credenciais. */
21
+ integrationProfileId: number;
22
+ /** Endereço monitorado. No Graph, é também o alvo do acesso app-only. */
23
+ address: string;
24
+ folder: string;
25
+ /**
26
+ * Cursor OPACO, como o fetcher o gravou da última vez.
27
+ *
28
+ * Cada provedor escolhe o formato — UID + UIDVALIDITY no IMAP, deltaLink no
29
+ * Graph. Manter isso opaco é o que permite um campo só no banco servir aos
30
+ * dois sem o consumidor entender nenhum dos dois.
31
+ */
32
+ cursor: string | null;
33
+ markAsRead: boolean;
34
+ /** Teto por ciclo, para uma caixa esquecida não virar um poll infinito. */
35
+ maxMessages: number;
36
+ }
37
+ export interface MailboxFetchResult {
38
+ messages: RawInboundMessage[];
39
+ /** Cursor a gravar DEPOIS que as mensagens forem persistidas. */
40
+ cursor: string | null;
41
+ /**
42
+ * O provedor invalidou o cursor anterior (UIDVALIDITY novo, delta expirado).
43
+ * Serve para o consumidor registrar o fato — a releitura em si já vem
44
+ * resolvida no resultado.
45
+ */
46
+ cursorReset: boolean;
47
+ }
48
+ /** Resultado de um teste de leitura, no mesmo formato do `MailVerifyResult`. */
49
+ export interface MailboxVerifyResult {
50
+ ok: boolean;
51
+ /** Evidência legível do sucesso. Nunca contém credencial. */
52
+ info?: string;
53
+ /** Motivo legível da falha. Nunca contém credencial. */
54
+ error?: string;
55
+ }
56
+ /**
57
+ * Lê uma caixa de correio.
58
+ *
59
+ * Implementações vivem nas libraries donas do protocolo (IMAP no `sac`,
60
+ * Microsoft Graph no `microsoft`) e se registram aqui no boot.
61
+ */
62
+ export interface IMailboxFetcher {
63
+ /** Falso quando o provedor está desligado ou mal configurado nesta instalação. */
64
+ isAvailable(): Promise<boolean>;
65
+ fetch(target: MailboxFetchTarget): Promise<MailboxFetchResult>;
66
+ /**
67
+ * Confere se ESTA caixa pode ser lida agora, exercitando o caminho real.
68
+ *
69
+ * Existe porque testar o perfil de integração não é a mesma coisa que testar a
70
+ * caixa: para o Entra, o teste do perfil só pede um token e passa mesmo sem
71
+ * permissão de e-mail, sem acesso àquele endereço e sem a pasta existir — ou
72
+ * seja, aprovaria uma caixa que nunca vai receber nada.
73
+ *
74
+ * Opcional: sem ela, o chamador cai no testador do perfil (o que basta para o
75
+ * IMAP, onde autenticar já prova o acesso).
76
+ */
77
+ verify?(target: MailboxFetchTarget): Promise<MailboxVerifyResult>;
78
+ }
79
+ /**
80
+ * Registro dos leitores de caixa, no mesmo padrão do MeetingProviderRegistry.
81
+ *
82
+ * Existe pelo mesmo motivo daquele: permitir que um módulo de negócio leia uma
83
+ * caixa do Microsoft 365 sem depender de `@hed-hog-pro/microsoft` — o que
84
+ * arrastaria as tabelas, as rotas e os crons daquela library para toda
85
+ * instalação, só para obter um token.
86
+ *
87
+ * A chave é o SLUG DO PROVIDER DE INTEGRAÇÃO (`imap`,
88
+ * `microsoft-entra-id-oauth`), então o caminho perfil → fetcher se resolve sem
89
+ * nenhuma tabela de-para.
90
+ */
91
+ export declare class MailboxFetcherRegistry {
92
+ private readonly logger;
93
+ private readonly fetchers;
94
+ register(providerSlug: string, implementation: IMailboxFetcher): void;
95
+ get(providerSlug: string | null | undefined): IMailboxFetcher | null;
96
+ has(providerSlug: string | null | undefined): boolean;
97
+ /** Providers que sabem ler caixa nesta instalação (a UI filtra por isto). */
98
+ list(): string[];
99
+ }
100
+ //# sourceMappingURL=mailbox-fetcher.registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mailbox-fetcher.registry.d.ts","sourceRoot":"","sources":["../../src/mailbox/mailbox-fetcher.registry.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;OAGG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB,iCAAiC;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,IAAI,CAAC;CAClB;AAED,MAAM,WAAW,kBAAkB;IACjC,+CAA+C;IAC/C,oBAAoB,EAAE,MAAM,CAAC;IAC7B,yEAAyE;IACzE,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf;;;;;;OAMG;IACH,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,UAAU,EAAE,OAAO,CAAC;IACpB,2EAA2E;IAC3E,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,iBAAiB,EAAE,CAAC;IAC9B,iEAAiE;IACjE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB;;;;OAIG;IACH,WAAW,EAAE,OAAO,CAAC;CACtB;AAED,gFAAgF;AAChF,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,OAAO,CAAC;IACZ,6DAA6D;IAC7D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,wDAAwD;IACxD,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B,kFAAkF;IAClF,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAChC,KAAK,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAC/D;;;;;;;;;;OAUG;IACH,MAAM,CAAC,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;CACnE;AAED;;;;;;;;;;;GAWG;AACH,qBACa,sBAAsB;IACjC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA2C;IAClE,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAsC;IAE/D,QAAQ,CAAC,YAAY,EAAE,MAAM,EAAE,cAAc,EAAE,eAAe,GAAG,IAAI;IAYrE,GAAG,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,eAAe,GAAG,IAAI;IAKpE,GAAG,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO;IAIrD,6EAA6E;IAC7E,IAAI,IAAI,MAAM,EAAE;CAGjB"}
@@ -0,0 +1,59 @@
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
+ var MailboxFetcherRegistry_1;
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.MailboxFetcherRegistry = void 0;
11
+ const common_1 = require("@nestjs/common");
12
+ /**
13
+ * Registro dos leitores de caixa, no mesmo padrão do MeetingProviderRegistry.
14
+ *
15
+ * Existe pelo mesmo motivo daquele: permitir que um módulo de negócio leia uma
16
+ * caixa do Microsoft 365 sem depender de `@hed-hog-pro/microsoft` — o que
17
+ * arrastaria as tabelas, as rotas e os crons daquela library para toda
18
+ * instalação, só para obter um token.
19
+ *
20
+ * A chave é o SLUG DO PROVIDER DE INTEGRAÇÃO (`imap`,
21
+ * `microsoft-entra-id-oauth`), então o caminho perfil → fetcher se resolve sem
22
+ * nenhuma tabela de-para.
23
+ */
24
+ let MailboxFetcherRegistry = MailboxFetcherRegistry_1 = class MailboxFetcherRegistry {
25
+ constructor() {
26
+ this.logger = new common_1.Logger(MailboxFetcherRegistry_1.name);
27
+ this.fetchers = new Map();
28
+ }
29
+ register(providerSlug, implementation) {
30
+ const key = normalizeProvider(providerSlug);
31
+ if (!key)
32
+ throw new Error('Mailbox fetcher provider key is required.');
33
+ if (this.fetchers.has(key)) {
34
+ this.logger.warn(`Mailbox fetcher "${key}" was overwritten.`);
35
+ }
36
+ this.fetchers.set(key, implementation);
37
+ this.logger.log(`Registered mailbox fetcher "${key}"`);
38
+ }
39
+ get(providerSlug) {
40
+ var _a;
41
+ const key = normalizeProvider(providerSlug);
42
+ return key ? ((_a = this.fetchers.get(key)) !== null && _a !== void 0 ? _a : null) : null;
43
+ }
44
+ has(providerSlug) {
45
+ return this.get(providerSlug) !== null;
46
+ }
47
+ /** Providers que sabem ler caixa nesta instalação (a UI filtra por isto). */
48
+ list() {
49
+ return [...this.fetchers.keys()].sort();
50
+ }
51
+ };
52
+ exports.MailboxFetcherRegistry = MailboxFetcherRegistry;
53
+ exports.MailboxFetcherRegistry = MailboxFetcherRegistry = MailboxFetcherRegistry_1 = __decorate([
54
+ (0, common_1.Injectable)()
55
+ ], MailboxFetcherRegistry);
56
+ function normalizeProvider(providerSlug) {
57
+ return String(providerSlug !== null && providerSlug !== void 0 ? providerSlug : '').trim().toLowerCase();
58
+ }
59
+ //# sourceMappingURL=mailbox-fetcher.registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mailbox-fetcher.registry.js","sourceRoot":"","sources":["../../src/mailbox/mailbox-fetcher.registry.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,2CAAoD;AAqFpD;;;;;;;;;;;GAWG;AAEI,IAAM,sBAAsB,8BAA5B,MAAM,sBAAsB;IAA5B;QACY,WAAM,GAAG,IAAI,eAAM,CAAC,wBAAsB,CAAC,IAAI,CAAC,CAAC;QACjD,aAAQ,GAAG,IAAI,GAAG,EAA2B,CAAC;IA2BjE,CAAC;IAzBC,QAAQ,CAAC,YAAoB,EAAE,cAA+B;QAC5D,MAAM,GAAG,GAAG,iBAAiB,CAAC,YAAY,CAAC,CAAC;QAC5C,IAAI,CAAC,GAAG;YAAE,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;QAEvE,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAC3B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,oBAAoB,GAAG,oBAAoB,CAAC,CAAC;QAChE,CAAC;QAED,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;QACvC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,+BAA+B,GAAG,GAAG,CAAC,CAAC;IACzD,CAAC;IAED,GAAG,CAAC,YAAuC;;QACzC,MAAM,GAAG,GAAG,iBAAiB,CAAC,YAAY,CAAC,CAAC;QAC5C,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,MAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,mCAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACvD,CAAC;IAED,GAAG,CAAC,YAAuC;QACzC,OAAO,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,KAAK,IAAI,CAAC;IACzC,CAAC;IAED,6EAA6E;IAC7E,IAAI;QACF,OAAO,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAC1C,CAAC;CACF,CAAA;AA7BY,wDAAsB;iCAAtB,sBAAsB;IADlC,IAAA,mBAAU,GAAE;GACA,sBAAsB,CA6BlC;AAED,SAAS,iBAAiB,CAAC,YAAuC;IAChE,OAAO,MAAM,CAAC,YAAY,aAAZ,YAAY,cAAZ,YAAY,GAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;AACzD,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Porta genérica de leitura de caixa de correio. Só carrega o registro — as
3
+ * implementações vêm de quem se registrar no boot (a library `sac` com a chave
4
+ * `imap`, a library `microsoft` com `microsoft-entra-id-oauth`).
5
+ */
6
+ export declare class MailboxModule {
7
+ }
8
+ //# sourceMappingURL=mailbox.module.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mailbox.module.d.ts","sourceRoot":"","sources":["../../src/mailbox/mailbox.module.ts"],"names":[],"mappings":"AAGA;;;;GAIG;AACH,qBAKa,aAAa;CAAG"}
@@ -0,0 +1,27 @@
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.MailboxModule = void 0;
10
+ const common_1 = require("@nestjs/common");
11
+ const mailbox_fetcher_registry_1 = require("./mailbox-fetcher.registry");
12
+ /**
13
+ * Porta genérica de leitura de caixa de correio. Só carrega o registro — as
14
+ * implementações vêm de quem se registrar no boot (a library `sac` com a chave
15
+ * `imap`, a library `microsoft` com `microsoft-entra-id-oauth`).
16
+ */
17
+ let MailboxModule = class MailboxModule {
18
+ };
19
+ exports.MailboxModule = MailboxModule;
20
+ exports.MailboxModule = MailboxModule = __decorate([
21
+ (0, common_1.Global)(),
22
+ (0, common_1.Module)({
23
+ providers: [mailbox_fetcher_registry_1.MailboxFetcherRegistry],
24
+ exports: [mailbox_fetcher_registry_1.MailboxFetcherRegistry],
25
+ })
26
+ ], MailboxModule);
27
+ //# sourceMappingURL=mailbox.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mailbox.module.js","sourceRoot":"","sources":["../../src/mailbox/mailbox.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAgD;AAChD,yEAAoE;AAEpE;;;;GAIG;AAMI,IAAM,aAAa,GAAnB,MAAM,aAAa;CAAG,CAAA;AAAhB,sCAAa;wBAAb,aAAa;IALzB,IAAA,eAAM,GAAE;IACR,IAAA,eAAM,EAAC;QACN,SAAS,EAAE,CAAC,iDAAsB,CAAC;QACnC,OAAO,EAAE,CAAC,iDAAsB,CAAC;KAClC,CAAC;GACW,aAAa,CAAG"}
@@ -0,0 +1,155 @@
1
+ /**
2
+ * Pedido de criação de uma reunião online para uma entidade de negócio qualquer.
3
+ *
4
+ * A tripla `sourceModule`/`sourceEntity`/`sourceEntityId` é o que amarra a reunião
5
+ * à origem sem que o provedor precise conhecer o domínio: o LMS envia
6
+ * `('lms', 'course_class_session', '42')` e recebe de volta, no evento de gravação,
7
+ * exatamente a mesma tripla.
8
+ */
9
+ export interface CreateMeetingInput {
10
+ sourceModule: string;
11
+ sourceEntity: string;
12
+ sourceEntityId: string;
13
+ subject: string;
14
+ startAt: Date;
15
+ endAt: Date;
16
+ /** Liga a gravação automática, quando o provedor suportar. */
17
+ autoRecord?: boolean;
18
+ /** Usuário que pediu a criação (usado no modo delegado). */
19
+ requestedByUserId?: number;
20
+ /**
21
+ * Usuários que devem poder controlar a reunião (iniciar/parar gravação, admitir
22
+ * participantes). Sem isso, num organizador de serviço, o professor entra como
23
+ * participante comum.
24
+ */
25
+ coOrganizerUserIds?: number[];
26
+ /** Convidados do evento de calendário. */
27
+ attendeeEmails?: string[];
28
+ /** Local do evento (aula presencial/híbrida com reunião gerenciada). */
29
+ location?: string | null;
30
+ /** Texto da origem que acompanha o link no corpo do evento. */
31
+ description?: string | null;
32
+ }
33
+ export interface CreatedMeeting {
34
+ /** Link que o aluno abre. É o que vai para `meeting_url` da aula. */
35
+ joinUrl: string;
36
+ /** Id da reunião no provedor — necessário para buscar a gravação depois. */
37
+ providerMeetingId: string;
38
+ /** Id do evento de calendário, quando o provedor cria um. */
39
+ providerEventId?: string | null;
40
+ }
41
+ export interface MeetingSourceRef {
42
+ sourceModule: string;
43
+ sourceEntity: string;
44
+ sourceEntityIds: string[];
45
+ }
46
+ export type CreateMeetingResult = ({
47
+ ok: true;
48
+ } & CreatedMeeting) | {
49
+ ok: false;
50
+ sourceEntityId: string;
51
+ error: string;
52
+ };
53
+ /** Pedido de troca de convidados de uma reunião já existente. */
54
+ export interface UpdateMeetingAttendeesInput {
55
+ sourceModule: string;
56
+ sourceEntity: string;
57
+ sourceEntityId: string;
58
+ attendeeEmails: string[];
59
+ }
60
+ /**
61
+ * Pedido de atualização de assunto/horário/local de uma reunião já existente.
62
+ *
63
+ * Separado de `createMeeting` pelo mesmo motivo de `updateAttendees`: recriar
64
+ * geraria link novo e derrubaria quem já tem o evento antigo na agenda.
65
+ */
66
+ export interface UpdateMeetingDetailsInput {
67
+ sourceModule: string;
68
+ sourceEntity: string;
69
+ sourceEntityId: string;
70
+ subject: string;
71
+ startAt: Date;
72
+ endAt: Date;
73
+ location?: string | null;
74
+ description?: string | null;
75
+ }
76
+ /**
77
+ * Estado de uma reunião, na forma em que o módulo de origem precisa ver.
78
+ *
79
+ * Existe para que o dono da origem consulte o provedor em vez de ler a tabela
80
+ * dele: o LMS não deve saber que existe uma `microsoft_meeting`.
81
+ */
82
+ export interface MeetingSummary {
83
+ sourceEntityId: string;
84
+ joinUrl: string | null;
85
+ status: 'scheduled' | 'cancelled' | 'failed';
86
+ autoRecord: boolean;
87
+ /**
88
+ * Assunto e janela gravados no provedor, para a origem comparar com o que é
89
+ * desejado antes de mandar `updateDetails` — evita um PATCH a cada sync
90
+ * quando nada mudou. `null` em reuniões criadas antes deste campo existir.
91
+ */
92
+ subject: string | null;
93
+ startAt: Date | null;
94
+ endAt: Date | null;
95
+ location: string | null;
96
+ description: string | null;
97
+ /**
98
+ * Convidados atualmente no evento de calendário.
99
+ *
100
+ * Existe para o módulo de origem comparar antes de mandar atualizar: alterar
101
+ * a lista faz o provedor reenviar convite/atualização para todos, então um
102
+ * PATCH incondicional a cada sincronização viraria spam na caixa de quem
103
+ * acompanha a turma.
104
+ */
105
+ attendeeEmails: string[];
106
+ /** Estado da importação da gravação, quando `autoRecord` está ligado. */
107
+ recordingStatus: 'not_requested' | 'pending' | 'imported' | 'unavailable' | 'failed';
108
+ recordingFileId: number | null;
109
+ lastError: string | null;
110
+ }
111
+ /**
112
+ * Provedor de reuniões online (Teams hoje; Meet/Zoom cabem no mesmo contrato).
113
+ *
114
+ * Existe para que os módulos de negócio não dependam do pacote de um provedor
115
+ * específico: eles pedem ao registro e, se ninguém tiver se registrado, a
116
+ * funcionalidade simplesmente não aparece.
117
+ */
118
+ export interface IMeetingProvider {
119
+ /** Se a integração está configurada a ponto de aceitar chamadas. */
120
+ isAvailable(): Promise<boolean>;
121
+ createMeeting(input: CreateMeetingInput): Promise<CreatedMeeting>;
122
+ /** Criação em lote; nunca rejeita — devolve o erro por item. */
123
+ createMeetings(inputs: CreateMeetingInput[]): Promise<CreateMeetingResult[]>;
124
+ /** Cancela no provedor as reuniões das origens informadas. Tolerante a ausências. */
125
+ cancelBySource(ref: MeetingSourceRef): Promise<void>;
126
+ /**
127
+ * Troca a lista de convidados do evento de uma reunião já criada.
128
+ *
129
+ * Separado de `createMeeting` porque o custo é diferente: recriar a reunião
130
+ * geraria um link novo e derrubaria quem já tinha o antigo na agenda, enquanto
131
+ * ajustar convidados preserva a reunião. Tolerante a reunião inexistente.
132
+ */
133
+ updateAttendees(input: UpdateMeetingAttendeesInput): Promise<void>;
134
+ /**
135
+ * Atualiza assunto, horário e local do evento/reunião já criados, sem gerar
136
+ * link novo. Tolerante a reunião inexistente (mesmo padrão de updateAttendees).
137
+ */
138
+ updateDetails(input: UpdateMeetingDetailsInput): Promise<void>;
139
+ /** Estado das reuniões das origens informadas, para a UI do módulo de origem. */
140
+ findBySource(ref: MeetingSourceRef): Promise<MeetingSummary[]>;
141
+ }
142
+ /**
143
+ * Registro dos provedores de reunião, no mesmo padrão do WebhookProtocolRegistry:
144
+ * o módulo dono do provedor se registra no boot.
145
+ */
146
+ export declare class MeetingProviderRegistry {
147
+ private readonly logger;
148
+ private readonly providers;
149
+ register(provider: string, implementation: IMeetingProvider): void;
150
+ get(provider: string | null | undefined): IMeetingProvider | null;
151
+ has(provider: string | null | undefined): boolean;
152
+ /** Provedores registrados (para a UI listar o que existe). */
153
+ list(): string[];
154
+ }
155
+ //# sourceMappingURL=meeting-provider.registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"meeting-provider.registry.d.ts","sourceRoot":"","sources":["../../src/meeting/meeting-provider.registry.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AACH,MAAM,WAAW,kBAAkB;IACjC,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,IAAI,CAAC;IACd,KAAK,EAAE,IAAI,CAAC;IACZ,8DAA8D;IAC9D,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,4DAA4D;IAC5D,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,0CAA0C;IAC1C,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,wEAAwE;IACxE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,+DAA+D;IAC/D,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED,MAAM,WAAW,cAAc;IAC7B,qEAAqE;IACrE,OAAO,EAAE,MAAM,CAAC;IAChB,4EAA4E;IAC5E,iBAAiB,EAAE,MAAM,CAAC;IAC1B,6DAA6D;IAC7D,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACjC;AAED,MAAM,WAAW,gBAAgB;IAC/B,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED,MAAM,MAAM,mBAAmB,GAC3B,CAAC;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,GAAG,cAAc,CAAC,GAC/B;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,cAAc,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAEzD,iEAAiE;AACjE,MAAM,WAAW,2BAA2B;IAC1C,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED;;;;;GAKG;AACH,MAAM,WAAW,yBAAyB;IACxC,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,IAAI,CAAC;IACd,KAAK,EAAE,IAAI,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED;;;;;GAKG;AACH,MAAM,WAAW,cAAc;IAC7B,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,MAAM,EAAE,WAAW,GAAG,WAAW,GAAG,QAAQ,CAAC;IAC7C,UAAU,EAAE,OAAO,CAAC;IACpB;;;;OAIG;IACH,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,OAAO,EAAE,IAAI,GAAG,IAAI,CAAC;IACrB,KAAK,EAAE,IAAI,GAAG,IAAI,CAAC;IACnB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B;;;;;;;OAOG;IACH,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,yEAAyE;IACzE,eAAe,EACX,eAAe,GACf,SAAS,GACT,UAAU,GACV,aAAa,GACb,QAAQ,CAAC;IACb,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAED;;;;;;GAMG;AACH,MAAM,WAAW,gBAAgB;IAC/B,oEAAoE;IACpE,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAChC,aAAa,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IAClE,gEAAgE;IAChE,cAAc,CAAC,MAAM,EAAE,kBAAkB,EAAE,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAAC;IAC7E,qFAAqF;IACrF,cAAc,CAAC,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrD;;;;;;OAMG;IACH,eAAe,CAAC,KAAK,EAAE,2BAA2B,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnE;;;OAGG;IACH,aAAa,CAAC,KAAK,EAAE,yBAAyB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/D,iFAAiF;IACjF,YAAY,CAAC,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;CAChE;AAED;;;GAGG;AACH,qBACa,uBAAuB;IAClC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA4C;IACnE,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAuC;IAEjE,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,cAAc,EAAE,gBAAgB,GAAG,IAAI;IAYlE,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,gBAAgB,GAAG,IAAI;IAKjE,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO;IAIjD,8DAA8D;IAC9D,IAAI,IAAI,MAAM,EAAE;CAGjB"}