@servicelabsco/slabs-access-manager 2.0.14 → 2.0.17

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 (419) hide show
  1. package/AGENTS.md +41 -4
  2. package/CLAUDE.md +12 -4
  3. package/dist/access/commands/index.d.ts +1 -0
  4. package/dist/access/commands/index.js +1 -0
  5. package/dist/access/commands/index.js.map +1 -1
  6. package/dist/access/commands/mail.log.backfill.business.command.d.ts +6 -0
  7. package/dist/access/commands/mail.log.backfill.business.command.js +65 -0
  8. package/dist/access/commands/mail.log.backfill.business.command.js.map +1 -0
  9. package/dist/access/controllers/alias.mapping.controller.d.ts +16 -0
  10. package/dist/access/controllers/alias.mapping.controller.js +93 -0
  11. package/dist/access/controllers/alias.mapping.controller.js.map +1 -0
  12. package/dist/access/controllers/bulk.upload.controller.d.ts +1 -1
  13. package/dist/access/controllers/bulk.upload.controller.js +1 -1
  14. package/dist/access/controllers/bulk.upload.controller.js.map +1 -1
  15. package/dist/access/controllers/business.email.alias.controller.d.ts +9 -0
  16. package/dist/access/controllers/business.email.alias.controller.js +43 -0
  17. package/dist/access/controllers/business.email.alias.controller.js.map +1 -0
  18. package/dist/access/controllers/business.email.controller.d.ts +2 -1
  19. package/dist/access/controllers/business.email.controller.js +6 -3
  20. package/dist/access/controllers/business.email.controller.js.map +1 -1
  21. package/dist/access/controllers/business.property.controller.d.ts +12 -4
  22. package/dist/access/controllers/business.property.controller.js +74 -7
  23. package/dist/access/controllers/business.property.controller.js.map +1 -1
  24. package/dist/access/controllers/developer.menu.controller.js.map +1 -1
  25. package/dist/access/controllers/developer.notification.type.controller.d.ts +16 -0
  26. package/dist/access/controllers/developer.notification.type.controller.js +91 -0
  27. package/dist/access/controllers/developer.notification.type.controller.js.map +1 -0
  28. package/dist/access/controllers/emithook.controller.d.ts +14 -0
  29. package/dist/access/controllers/emithook.controller.js +56 -0
  30. package/dist/access/controllers/emithook.controller.js.map +1 -0
  31. package/dist/access/controllers/index.d.ts +7 -0
  32. package/dist/access/controllers/index.js +7 -0
  33. package/dist/access/controllers/index.js.map +1 -1
  34. package/dist/access/controllers/mail.log.controller.d.ts +20 -0
  35. package/dist/access/controllers/mail.log.controller.js +76 -0
  36. package/dist/access/controllers/mail.log.controller.js.map +1 -0
  37. package/dist/access/controllers/notification.type.preference.controller.d.ts +12 -0
  38. package/dist/access/controllers/notification.type.preference.controller.js +59 -0
  39. package/dist/access/controllers/notification.type.preference.controller.js.map +1 -0
  40. package/dist/access/controllers/user.notification.type.preference.controller.d.ts +10 -0
  41. package/dist/access/controllers/user.notification.type.preference.controller.js +54 -0
  42. package/dist/access/controllers/user.notification.type.preference.controller.js.map +1 -0
  43. package/dist/access/dtos/add.alias.mapping.dto.d.ts +7 -0
  44. package/dist/access/dtos/add.alias.mapping.dto.js +49 -0
  45. package/dist/access/dtos/add.alias.mapping.dto.js.map +1 -0
  46. package/dist/access/dtos/add.business.email.dto.d.ts +4 -0
  47. package/dist/access/dtos/add.business.email.dto.js +34 -0
  48. package/dist/access/dtos/add.business.email.dto.js.map +1 -0
  49. package/dist/access/dtos/add.business.property.dto.d.ts +1 -0
  50. package/dist/access/dtos/add.business.property.dto.js +8 -0
  51. package/dist/access/dtos/add.business.property.dto.js.map +1 -1
  52. package/dist/access/dtos/business.email.attributes.dto.d.ts +1 -0
  53. package/dist/access/dtos/business.email.attributes.dto.js +6 -0
  54. package/dist/access/dtos/business.email.attributes.dto.js.map +1 -1
  55. package/dist/access/dtos/business.notification.type.preference.attributes.dto.d.ts +3 -0
  56. package/dist/access/dtos/business.notification.type.preference.attributes.dto.js +7 -0
  57. package/dist/access/dtos/business.notification.type.preference.attributes.dto.js.map +1 -0
  58. package/dist/access/dtos/business.property.identifier.param.dto.d.ts +3 -0
  59. package/dist/access/dtos/business.property.identifier.param.dto.js +25 -0
  60. package/dist/access/dtos/business.property.identifier.param.dto.js.map +1 -0
  61. package/dist/access/dtos/business.property.list.filter.dto.d.ts +4 -0
  62. package/dist/access/dtos/business.property.list.filter.dto.js +40 -0
  63. package/dist/access/dtos/business.property.list.filter.dto.js.map +1 -1
  64. package/dist/access/dtos/business.property.scope.dto.d.ts +3 -0
  65. package/dist/access/dtos/business.property.scope.dto.js +26 -0
  66. package/dist/access/dtos/business.property.scope.dto.js.map +1 -0
  67. package/dist/access/dtos/create.notification.type.dto.d.ts +14 -0
  68. package/dist/access/dtos/create.notification.type.dto.js +79 -0
  69. package/dist/access/dtos/create.notification.type.dto.js.map +1 -0
  70. package/dist/access/dtos/email.notification.payload.dto.d.ts +5 -0
  71. package/dist/access/dtos/email.notification.payload.dto.js.map +1 -1
  72. package/dist/access/dtos/emithook.envelope.dto.d.ts +38 -0
  73. package/dist/access/dtos/emithook.envelope.dto.js +16 -0
  74. package/dist/access/dtos/emithook.envelope.dto.js.map +1 -0
  75. package/dist/access/dtos/index.d.ts +15 -0
  76. package/dist/access/dtos/index.js +15 -0
  77. package/dist/access/dtos/index.js.map +1 -1
  78. package/dist/access/dtos/mail.log.content.query.dto.d.ts +4 -0
  79. package/dist/access/dtos/mail.log.content.query.dto.js +25 -0
  80. package/dist/access/dtos/mail.log.content.query.dto.js.map +1 -0
  81. package/dist/access/dtos/mail.log.list.filter.dto.d.ts +11 -0
  82. package/dist/access/dtos/mail.log.list.filter.dto.js +75 -0
  83. package/dist/access/dtos/mail.log.list.filter.dto.js.map +1 -0
  84. package/dist/access/dtos/notification.type.list.filter.dto.d.ts +7 -0
  85. package/dist/access/dtos/notification.type.list.filter.dto.js +45 -0
  86. package/dist/access/dtos/notification.type.list.filter.dto.js.map +1 -0
  87. package/dist/access/dtos/search.alias.mapping.dto.d.ts +7 -0
  88. package/dist/access/dtos/search.alias.mapping.dto.js +51 -0
  89. package/dist/access/dtos/search.alias.mapping.dto.js.map +1 -0
  90. package/dist/access/dtos/set.business.email.alias.dto.d.ts +3 -0
  91. package/dist/access/dtos/set.business.email.alias.dto.js +27 -0
  92. package/dist/access/dtos/set.business.email.alias.dto.js.map +1 -0
  93. package/dist/access/dtos/set.business.property.dto.d.ts +10 -0
  94. package/dist/access/dtos/set.business.property.dto.js +64 -0
  95. package/dist/access/dtos/set.business.property.dto.js.map +1 -0
  96. package/dist/access/dtos/set.notification.type.preference.dto.d.ts +5 -0
  97. package/dist/access/dtos/set.notification.type.preference.dto.js +34 -0
  98. package/dist/access/dtos/set.notification.type.preference.dto.js.map +1 -0
  99. package/dist/access/dtos/update.notification.type.dto.d.ts +13 -0
  100. package/dist/access/dtos/update.notification.type.dto.js +72 -0
  101. package/dist/access/dtos/update.notification.type.dto.js.map +1 -0
  102. package/dist/access/entities/access.mail.log.entity.d.ts +6 -0
  103. package/dist/access/entities/access.mail.log.entity.js +31 -0
  104. package/dist/access/entities/access.mail.log.entity.js.map +1 -0
  105. package/dist/access/entities/alias.mapping.entity.d.ts +11 -0
  106. package/dist/access/entities/alias.mapping.entity.js +51 -0
  107. package/dist/access/entities/alias.mapping.entity.js.map +1 -0
  108. package/dist/access/entities/business.email.entity.d.ts +1 -0
  109. package/dist/access/entities/business.email.entity.js +4 -0
  110. package/dist/access/entities/business.email.entity.js.map +1 -1
  111. package/dist/access/entities/business.notification.type.preference.entity.d.ts +13 -0
  112. package/dist/access/entities/business.notification.type.preference.entity.js +54 -0
  113. package/dist/access/entities/business.notification.type.preference.entity.js.map +1 -0
  114. package/dist/access/entities/index.d.ts +5 -0
  115. package/dist/access/entities/index.js +5 -0
  116. package/dist/access/entities/index.js.map +1 -1
  117. package/dist/access/entities/notification.type.entity.d.ts +16 -0
  118. package/dist/access/entities/notification.type.entity.js +63 -0
  119. package/dist/access/entities/notification.type.entity.js.map +1 -0
  120. package/dist/access/entities/user.notification.type.preference.entity.d.ts +15 -0
  121. package/dist/access/entities/user.notification.type.preference.entity.js +63 -0
  122. package/dist/access/entities/user.notification.type.preference.entity.js.map +1 -0
  123. package/dist/access/enums/business.email.type.enum.d.ts +3 -0
  124. package/dist/access/enums/business.email.type.enum.js +8 -0
  125. package/dist/access/enums/business.email.type.enum.js.map +1 -0
  126. package/dist/access/enums/index.d.ts +4 -0
  127. package/dist/access/enums/index.js +4 -0
  128. package/dist/access/enums/index.js.map +1 -1
  129. package/dist/access/enums/notification.channel.type.enum.d.ts +2 -1
  130. package/dist/access/enums/notification.channel.type.enum.js +1 -0
  131. package/dist/access/enums/notification.channel.type.enum.js.map +1 -1
  132. package/dist/access/enums/notification.suppression.reason.enum.d.ts +6 -0
  133. package/dist/access/enums/notification.suppression.reason.enum.js +11 -0
  134. package/dist/access/enums/notification.suppression.reason.enum.js.map +1 -0
  135. package/dist/access/enums/notification.type.audience.enum.d.ts +5 -0
  136. package/dist/access/enums/notification.type.audience.enum.js +10 -0
  137. package/dist/access/enums/notification.type.audience.enum.js.map +1 -0
  138. package/dist/access/enums/notification.type.control.enum.d.ts +4 -0
  139. package/dist/access/enums/notification.type.control.enum.js +9 -0
  140. package/dist/access/enums/notification.type.control.enum.js.map +1 -0
  141. package/dist/access/es6.classes.d.ts +61 -14
  142. package/dist/access/es6.classes.js +127 -1
  143. package/dist/access/es6.classes.js.map +1 -1
  144. package/dist/access/index.d.ts +1 -0
  145. package/dist/access/index.js +1 -0
  146. package/dist/access/index.js.map +1 -1
  147. package/dist/access/interfaces/alias.lookup.options.interface.d.ts +4 -0
  148. package/dist/access/interfaces/alias.lookup.options.interface.js +3 -0
  149. package/dist/access/interfaces/alias.lookup.options.interface.js.map +1 -0
  150. package/dist/access/interfaces/alias.mapping.input.interface.d.ts +7 -0
  151. package/dist/access/interfaces/alias.mapping.input.interface.js +3 -0
  152. package/dist/access/interfaces/alias.mapping.input.interface.js.map +1 -0
  153. package/dist/access/interfaces/alias.search.match.interface.d.ts +8 -0
  154. package/dist/access/interfaces/alias.search.match.interface.js +3 -0
  155. package/dist/access/interfaces/alias.search.match.interface.js.map +1 -0
  156. package/dist/access/interfaces/alias.search.query.interface.d.ts +7 -0
  157. package/dist/access/interfaces/alias.search.query.interface.js +3 -0
  158. package/dist/access/interfaces/alias.search.query.interface.js.map +1 -0
  159. package/dist/access/interfaces/business.email.alias.interface.d.ts +3 -0
  160. package/dist/access/interfaces/business.email.alias.interface.js +3 -0
  161. package/dist/access/interfaces/business.email.alias.interface.js.map +1 -0
  162. package/dist/access/interfaces/business.notification.type.preference.row.interface.d.ts +14 -0
  163. package/dist/access/interfaces/business.notification.type.preference.row.interface.js +3 -0
  164. package/dist/access/interfaces/business.notification.type.preference.row.interface.js.map +1 -0
  165. package/dist/access/interfaces/catalogued.notification.type.interface.d.ts +10 -0
  166. package/dist/access/interfaces/catalogued.notification.type.interface.js +3 -0
  167. package/dist/access/interfaces/catalogued.notification.type.interface.js.map +1 -0
  168. package/dist/access/interfaces/dropped.notification.recipient.interface.d.ts +5 -0
  169. package/dist/access/interfaces/dropped.notification.recipient.interface.js +3 -0
  170. package/dist/access/interfaces/dropped.notification.recipient.interface.js.map +1 -0
  171. package/dist/access/interfaces/emithook.email.body.interface.d.ts +24 -0
  172. package/dist/access/interfaces/emithook.email.body.interface.js +3 -0
  173. package/dist/access/interfaces/emithook.email.body.interface.js.map +1 -0
  174. package/dist/access/interfaces/emithook.email.status.event.interface.d.ts +23 -0
  175. package/dist/access/interfaces/emithook.email.status.event.interface.js +3 -0
  176. package/dist/access/interfaces/emithook.email.status.event.interface.js.map +1 -0
  177. package/dist/access/interfaces/emithook.template.email.request.interface.d.ts +15 -0
  178. package/dist/access/interfaces/emithook.template.email.request.interface.js +3 -0
  179. package/dist/access/interfaces/emithook.template.email.request.interface.js.map +1 -0
  180. package/dist/access/interfaces/emithook.template.email.result.interface.d.ts +6 -0
  181. package/dist/access/interfaces/emithook.template.email.result.interface.js +3 -0
  182. package/dist/access/interfaces/emithook.template.email.result.interface.js.map +1 -0
  183. package/dist/access/interfaces/inbound.email.message.interface.d.ts +31 -0
  184. package/dist/access/interfaces/inbound.email.message.interface.js +3 -0
  185. package/dist/access/interfaces/inbound.email.message.interface.js.map +1 -0
  186. package/dist/access/interfaces/index.d.ts +24 -0
  187. package/dist/access/interfaces/index.js +41 -0
  188. package/dist/access/interfaces/index.js.map +1 -0
  189. package/dist/access/interfaces/legacy.notification.preference.provider.interface.d.ts +5 -0
  190. package/dist/access/interfaces/legacy.notification.preference.provider.interface.js +3 -0
  191. package/dist/access/interfaces/legacy.notification.preference.provider.interface.js.map +1 -0
  192. package/dist/access/interfaces/notification.preference.request.interface.d.ts +9 -0
  193. package/dist/access/interfaces/notification.preference.request.interface.js +3 -0
  194. package/dist/access/interfaces/notification.preference.request.interface.js.map +1 -0
  195. package/dist/access/interfaces/notification.recipient.interface.d.ts +5 -0
  196. package/dist/access/interfaces/notification.recipient.interface.js +3 -0
  197. package/dist/access/interfaces/notification.recipient.interface.js.map +1 -0
  198. package/dist/access/interfaces/notification.send.identifiers.interface.d.ts +6 -0
  199. package/dist/access/interfaces/notification.send.identifiers.interface.js +3 -0
  200. package/dist/access/interfaces/notification.send.identifiers.interface.js.map +1 -0
  201. package/dist/access/interfaces/notification.send.recipient.interface.d.ts +5 -0
  202. package/dist/access/interfaces/notification.send.recipient.interface.js +3 -0
  203. package/dist/access/interfaces/notification.send.recipient.interface.js.map +1 -0
  204. package/dist/access/interfaces/notification.type.sources.interface.d.ts +5 -0
  205. package/dist/access/interfaces/notification.type.sources.interface.js +3 -0
  206. package/dist/access/interfaces/notification.type.sources.interface.js.map +1 -0
  207. package/dist/access/interfaces/notification.type.usage.interface.d.ts +12 -0
  208. package/dist/access/interfaces/notification.type.usage.interface.js +3 -0
  209. package/dist/access/interfaces/notification.type.usage.interface.js.map +1 -0
  210. package/dist/access/interfaces/resolve.notification.recipients.input.interface.d.ts +10 -0
  211. package/dist/access/interfaces/resolve.notification.recipients.input.interface.js +3 -0
  212. package/dist/access/interfaces/resolve.notification.recipients.input.interface.js.map +1 -0
  213. package/dist/access/interfaces/resolve.notification.recipients.result.interface.d.ts +10 -0
  214. package/dist/access/interfaces/resolve.notification.recipients.result.interface.js +3 -0
  215. package/dist/access/interfaces/resolve.notification.recipients.result.interface.js.map +1 -0
  216. package/dist/access/interfaces/send.emithook.template.email.options.interface.d.ts +18 -0
  217. package/dist/access/interfaces/send.emithook.template.email.options.interface.js +3 -0
  218. package/dist/access/interfaces/send.emithook.template.email.options.interface.js.map +1 -0
  219. package/dist/access/interfaces/user.notification.type.preference.row.interface.d.ts +11 -0
  220. package/dist/access/interfaces/user.notification.type.preference.row.interface.js +3 -0
  221. package/dist/access/interfaces/user.notification.type.preference.row.interface.js.map +1 -0
  222. package/dist/access/jobs/handle.emithook.email.job.d.ts +27 -0
  223. package/dist/access/jobs/handle.emithook.email.job.js +162 -0
  224. package/dist/access/jobs/handle.emithook.email.job.js.map +1 -0
  225. package/dist/access/jobs/handle.emithook.email.status.job.d.ts +8 -0
  226. package/dist/access/jobs/handle.emithook.email.status.job.js +31 -0
  227. package/dist/access/jobs/handle.emithook.email.status.job.js.map +1 -0
  228. package/dist/access/jobs/index.d.ts +5 -0
  229. package/dist/access/jobs/index.js +5 -0
  230. package/dist/access/jobs/index.js.map +1 -1
  231. package/dist/access/jobs/poll.emithook.email.inbox.job.d.ts +19 -0
  232. package/dist/access/jobs/poll.emithook.email.inbox.job.js +109 -0
  233. package/dist/access/jobs/poll.emithook.email.inbox.job.js.map +1 -0
  234. package/dist/access/jobs/poll.emithook.email.sqs.job.d.ts +22 -0
  235. package/dist/access/jobs/poll.emithook.email.sqs.job.js +91 -0
  236. package/dist/access/jobs/poll.emithook.email.sqs.job.js.map +1 -0
  237. package/dist/access/jobs/process.server.email.job.d.ts +1 -9
  238. package/dist/access/jobs/process.server.email.job.js +13 -105
  239. package/dist/access/jobs/process.server.email.job.js.map +1 -1
  240. package/dist/access/jobs/reconcile.emithook.email.status.job.d.ts +15 -0
  241. package/dist/access/jobs/reconcile.emithook.email.status.job.js +38 -0
  242. package/dist/access/jobs/reconcile.emithook.email.status.job.js.map +1 -0
  243. package/dist/access/libraries/apply.notification.preferences.d.ts +12 -0
  244. package/dist/access/libraries/apply.notification.preferences.js +51 -0
  245. package/dist/access/libraries/apply.notification.preferences.js.map +1 -0
  246. package/dist/access/libraries/delete.business.property.d.ts +7 -0
  247. package/dist/access/libraries/delete.business.property.js +18 -0
  248. package/dist/access/libraries/delete.business.property.js.map +1 -0
  249. package/dist/access/libraries/index.d.ts +19 -0
  250. package/dist/access/libraries/index.js +19 -0
  251. package/dist/access/libraries/index.js.map +1 -1
  252. package/dist/access/libraries/load.notification.preference.context.d.ts +10 -0
  253. package/dist/access/libraries/load.notification.preference.context.js +78 -0
  254. package/dist/access/libraries/load.notification.preference.context.js.map +1 -0
  255. package/dist/access/libraries/notification.type.catalogue.d.ts +12 -0
  256. package/dist/access/libraries/notification.type.catalogue.js +72 -0
  257. package/dist/access/libraries/notification.type.catalogue.js.map +1 -0
  258. package/dist/access/libraries/present.business.property.d.ts +4 -0
  259. package/dist/access/libraries/present.business.property.js +13 -0
  260. package/dist/access/libraries/present.business.property.js.map +1 -0
  261. package/dist/access/libraries/process.application.menu.js +6 -7
  262. package/dist/access/libraries/process.application.menu.js.map +1 -1
  263. package/dist/access/libraries/process.business.property.data.d.ts +6 -0
  264. package/dist/access/libraries/process.business.property.data.js +60 -20
  265. package/dist/access/libraries/process.business.property.data.js.map +1 -1
  266. package/dist/access/libraries/process.business.property.list.d.ts +4 -0
  267. package/dist/access/libraries/process.business.property.list.js +44 -5
  268. package/dist/access/libraries/process.business.property.list.js.map +1 -1
  269. package/dist/access/libraries/process.developer.menu.d.ts +2 -1
  270. package/dist/access/libraries/process.developer.menu.js +50 -20
  271. package/dist/access/libraries/process.developer.menu.js.map +1 -1
  272. package/dist/access/libraries/process.email.notification.d.ts +18 -3
  273. package/dist/access/libraries/process.email.notification.js +140 -3
  274. package/dist/access/libraries/process.email.notification.js.map +1 -1
  275. package/dist/access/libraries/process.emithook.email.status.d.ts +7 -0
  276. package/dist/access/libraries/process.emithook.email.status.js +40 -0
  277. package/dist/access/libraries/process.emithook.email.status.js.map +1 -0
  278. package/dist/access/libraries/process.inbound.email.message.d.ts +21 -0
  279. package/dist/access/libraries/process.inbound.email.message.js +129 -0
  280. package/dist/access/libraries/process.inbound.email.message.js.map +1 -0
  281. package/dist/access/libraries/process.mail.log.list.d.ts +25 -0
  282. package/dist/access/libraries/process.mail.log.list.js +90 -0
  283. package/dist/access/libraries/process.mail.log.list.js.map +1 -0
  284. package/dist/access/libraries/read.eml.attachments.d.ts +19 -0
  285. package/dist/access/libraries/read.eml.attachments.js +124 -0
  286. package/dist/access/libraries/read.eml.attachments.js.map +1 -0
  287. package/dist/access/libraries/reconcile.emithook.email.status.d.ts +17 -0
  288. package/dist/access/libraries/reconcile.emithook.email.status.js +82 -0
  289. package/dist/access/libraries/reconcile.emithook.email.status.js.map +1 -0
  290. package/dist/access/libraries/record.emithook.email.events.d.ts +15 -0
  291. package/dist/access/libraries/record.emithook.email.events.js +139 -0
  292. package/dist/access/libraries/record.emithook.email.events.js.map +1 -0
  293. package/dist/access/libraries/resolve.emithook.template.key.d.ts +8 -0
  294. package/dist/access/libraries/resolve.emithook.template.key.js +29 -0
  295. package/dist/access/libraries/resolve.emithook.template.key.js.map +1 -0
  296. package/dist/access/libraries/resolve.notification.recipients.d.ts +7 -0
  297. package/dist/access/libraries/resolve.notification.recipients.js +51 -0
  298. package/dist/access/libraries/resolve.notification.recipients.js.map +1 -0
  299. package/dist/access/libraries/sanitize.email.addresses.d.ts +3 -1
  300. package/dist/access/libraries/sanitize.email.addresses.js +3 -2
  301. package/dist/access/libraries/sanitize.email.addresses.js.map +1 -1
  302. package/dist/access/libraries/search.alias.mappings.d.ts +12 -0
  303. package/dist/access/libraries/search.alias.mappings.js +46 -0
  304. package/dist/access/libraries/search.alias.mappings.js.map +1 -0
  305. package/dist/access/libraries/send.email.notification.js +2 -0
  306. package/dist/access/libraries/send.email.notification.js.map +1 -1
  307. package/dist/access/libraries/send.emithook.template.email.d.ts +24 -0
  308. package/dist/access/libraries/send.emithook.template.email.js +188 -0
  309. package/dist/access/libraries/send.emithook.template.email.js.map +1 -0
  310. package/dist/access/libraries/set.alias.mapping.d.ts +12 -0
  311. package/dist/access/libraries/set.alias.mapping.js +81 -0
  312. package/dist/access/libraries/set.alias.mapping.js.map +1 -0
  313. package/dist/access/libraries/set.business.property.d.ts +8 -0
  314. package/dist/access/libraries/set.business.property.js +17 -0
  315. package/dist/access/libraries/set.business.property.js.map +1 -0
  316. package/dist/access/libraries/show.mail.log.content.d.ts +12 -0
  317. package/dist/access/libraries/show.mail.log.content.js +22 -0
  318. package/dist/access/libraries/show.mail.log.content.js.map +1 -0
  319. package/dist/access/libraries/show.mail.log.d.ts +6 -0
  320. package/dist/access/libraries/show.mail.log.js +20 -0
  321. package/dist/access/libraries/show.mail.log.js.map +1 -0
  322. package/dist/access/services/alias.mapping.service.d.ts +9 -0
  323. package/dist/access/services/alias.mapping.service.js +45 -0
  324. package/dist/access/services/alias.mapping.service.js.map +1 -0
  325. package/dist/access/services/business.email.alias.service.d.ts +5 -0
  326. package/dist/access/services/business.email.alias.service.js +35 -0
  327. package/dist/access/services/business.email.alias.service.js.map +1 -0
  328. package/dist/access/services/business.email.service.d.ts +5 -1
  329. package/dist/access/services/business.email.service.js +33 -2
  330. package/dist/access/services/business.email.service.js.map +1 -1
  331. package/dist/access/services/business.property.service.js +3 -1
  332. package/dist/access/services/business.property.service.js.map +1 -1
  333. package/dist/access/services/emithook.service.d.ts +36 -0
  334. package/dist/access/services/emithook.service.js +136 -0
  335. package/dist/access/services/emithook.service.js.map +1 -0
  336. package/dist/access/services/index.d.ts +7 -0
  337. package/dist/access/services/index.js +7 -0
  338. package/dist/access/services/index.js.map +1 -1
  339. package/dist/access/services/legacy.notification.preference.service.d.ts +8 -0
  340. package/dist/access/services/legacy.notification.preference.service.js +41 -0
  341. package/dist/access/services/legacy.notification.preference.service.js.map +1 -0
  342. package/dist/access/services/mail.log.access.service.d.ts +14 -0
  343. package/dist/access/services/mail.log.access.service.js +52 -0
  344. package/dist/access/services/mail.log.access.service.js.map +1 -0
  345. package/dist/access/services/notification.service.d.ts +2 -0
  346. package/dist/access/services/notification.service.js +19 -4
  347. package/dist/access/services/notification.service.js.map +1 -1
  348. package/dist/access/services/notification.type.preference.service.d.ts +25 -0
  349. package/dist/access/services/notification.type.preference.service.js +172 -0
  350. package/dist/access/services/notification.type.preference.service.js.map +1 -0
  351. package/dist/access/services/notification.type.service.d.ts +17 -0
  352. package/dist/access/services/notification.type.service.js +124 -0
  353. package/dist/access/services/notification.type.service.js.map +1 -0
  354. package/dist/access/services/send.email.service.d.ts +5 -1
  355. package/dist/access/services/send.email.service.js +9 -3
  356. package/dist/access/services/send.email.service.js.map +1 -1
  357. package/dist/accessUtility/controllers/bulk.definition.controller.d.ts +6 -2
  358. package/dist/accessUtility/controllers/bulk.definition.controller.js +26 -9
  359. package/dist/accessUtility/controllers/bulk.definition.controller.js.map +1 -1
  360. package/dist/accessUtility/dtos/bulk.definition.script.dto.d.ts +4 -0
  361. package/dist/accessUtility/dtos/bulk.definition.script.dto.js +30 -0
  362. package/dist/accessUtility/dtos/bulk.definition.script.dto.js.map +1 -0
  363. package/dist/accessUtility/dtos/index.d.ts +1 -0
  364. package/dist/accessUtility/dtos/index.js +1 -0
  365. package/dist/accessUtility/dtos/index.js.map +1 -1
  366. package/dist/accessUtility/es6.classes.d.ts +9 -7
  367. package/dist/accessUtility/es6.classes.js +12 -8
  368. package/dist/accessUtility/es6.classes.js.map +1 -1
  369. package/dist/accessUtility/jobs/analyse.bulk.upload.job.d.ts +1 -1
  370. package/dist/accessUtility/jobs/analyse.bulk.upload.job.js +1 -1
  371. package/dist/accessUtility/jobs/analyse.bulk.upload.job.js.map +1 -1
  372. package/dist/accessUtility/jobs/push.to.bulk.item.job.d.ts +2 -0
  373. package/dist/accessUtility/jobs/push.to.bulk.item.job.js +2 -0
  374. package/dist/accessUtility/jobs/push.to.bulk.item.job.js.map +1 -1
  375. package/dist/accessUtility/libraries/analyse.bulk.upload.d.ts +1 -1
  376. package/dist/accessUtility/libraries/index.d.ts +1 -1
  377. package/dist/accessUtility/libraries/index.js +1 -1
  378. package/dist/accessUtility/libraries/index.js.map +1 -1
  379. package/dist/accessUtility/libraries/process.bulk.definition.script.d.ts +9 -0
  380. package/dist/accessUtility/libraries/process.bulk.definition.script.js +43 -0
  381. package/dist/accessUtility/libraries/process.bulk.definition.script.js.map +1 -0
  382. package/dist/accessUtility/libraries/read.xls.file.d.ts +4 -1
  383. package/dist/accessUtility/libraries/read.xls.file.js +49 -10
  384. package/dist/accessUtility/libraries/read.xls.file.js.map +1 -1
  385. package/dist/accessUtility/services/index.d.ts +1 -0
  386. package/dist/accessUtility/services/index.js +1 -0
  387. package/dist/accessUtility/services/index.js.map +1 -1
  388. package/dist/accessUtility/{libraries → services}/match.bulk.upload.columns.d.ts +1 -1
  389. package/dist/accessUtility/{libraries → services}/match.bulk.upload.columns.js +4 -4
  390. package/dist/accessUtility/services/match.bulk.upload.columns.js.map +1 -0
  391. package/dist/migrations/1790855763155-CreateBzAliasMappingsTable.d.ts +8 -0
  392. package/dist/migrations/1790855763155-CreateBzAliasMappingsTable.js +37 -0
  393. package/dist/migrations/1790855763155-CreateBzAliasMappingsTable.js.map +1 -0
  394. package/dist/migrations/1792089460727-AddIdentifierBzBusinessEmailsTable.d.ts +5 -0
  395. package/dist/migrations/1792089460727-AddIdentifierBzBusinessEmailsTable.js +16 -0
  396. package/dist/migrations/1792089460727-AddIdentifierBzBusinessEmailsTable.js.map +1 -0
  397. package/dist/migrations/1792091262917-AddUniqueEmailIdentifierBzEmailMessagesTable.d.ts +8 -0
  398. package/dist/migrations/1792091262917-AddUniqueEmailIdentifierBzEmailMessagesTable.js +30 -0
  399. package/dist/migrations/1792091262917-AddUniqueEmailIdentifierBzEmailMessagesTable.js.map +1 -0
  400. package/dist/migrations/1792454400000-CreateSysNotificationTypesTable.d.ts +8 -0
  401. package/dist/migrations/1792454400000-CreateSysNotificationTypesTable.js +36 -0
  402. package/dist/migrations/1792454400000-CreateSysNotificationTypesTable.js.map +1 -0
  403. package/dist/migrations/1792454400001-CreateBzNotificationTypePreferencesTable.d.ts +8 -0
  404. package/dist/migrations/1792454400001-CreateBzNotificationTypePreferencesTable.js +31 -0
  405. package/dist/migrations/1792454400001-CreateBzNotificationTypePreferencesTable.js.map +1 -0
  406. package/dist/migrations/1792454400002-CreateBzUserNotificationTypePreferencesTable.d.ts +8 -0
  407. package/dist/migrations/1792454400002-CreateBzUserNotificationTypePreferencesTable.js +32 -0
  408. package/dist/migrations/1792454400002-CreateBzUserNotificationTypePreferencesTable.js.map +1 -0
  409. package/dist/migrations/1792454400003-AddSmsNotificationChannelDataSeederTable.d.ts +5 -0
  410. package/dist/migrations/1792454400003-AddSmsNotificationChannelDataSeederTable.js +21 -0
  411. package/dist/migrations/1792454400003-AddSmsNotificationChannelDataSeederTable.js.map +1 -0
  412. package/dist/migrations/1792532792345-AddBusinessIdSysMailLogsTable.d.ts +7 -0
  413. package/dist/migrations/1792532792345-AddBusinessIdSysMailLogsTable.js +20 -0
  414. package/dist/migrations/1792532792345-AddBusinessIdSysMailLogsTable.js.map +1 -0
  415. package/dist/migrations/1792573736107-AddEmithookIndexSysMailLogsTable.d.ts +5 -0
  416. package/dist/migrations/1792573736107-AddEmithookIndexSysMailLogsTable.js +14 -0
  417. package/dist/migrations/1792573736107-AddEmithookIndexSysMailLogsTable.js.map +1 -0
  418. package/package.json +1 -1
  419. package/dist/accessUtility/libraries/match.bulk.upload.columns.js.map +0 -1
@@ -0,0 +1,10 @@
1
+ import { NotificationChannelTypeEnum } from '../enums/notification.channel.type.enum';
2
+ import { CataloguedNotificationTypeInterface } from './catalogued.notification.type.interface';
3
+ import { NotificationRecipientInterface } from './notification.recipient.interface';
4
+ export interface ResolveNotificationRecipientsInputInterface {
5
+ type: CataloguedNotificationTypeInterface | null;
6
+ channel: NotificationChannelTypeEnum;
7
+ businessActive: boolean | null;
8
+ recipients: NotificationRecipientInterface[];
9
+ userOptOuts: Set<number>;
10
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=resolve.notification.recipients.input.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve.notification.recipients.input.interface.js","sourceRoot":"","sources":["../../../src/access/interfaces/resolve.notification.recipients.input.interface.ts"],"names":[],"mappings":""}
@@ -0,0 +1,10 @@
1
+ import { NotificationSuppressionReasonEnum } from '../enums/notification.suppression.reason.enum';
2
+ import { DroppedNotificationRecipientInterface } from './dropped.notification.recipient.interface';
3
+ import { NotificationRecipientInterface } from './notification.recipient.interface';
4
+ export interface ResolveNotificationRecipientsResultInterface {
5
+ send: boolean;
6
+ reason?: NotificationSuppressionReasonEnum;
7
+ recipients: NotificationRecipientInterface[];
8
+ dropped: DroppedNotificationRecipientInterface[];
9
+ type_identifier?: string;
10
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=resolve.notification.recipients.result.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve.notification.recipients.result.interface.js","sourceRoot":"","sources":["../../../src/access/interfaces/resolve.notification.recipients.result.interface.ts"],"names":[],"mappings":""}
@@ -0,0 +1,18 @@
1
+ export interface SendEmithookTemplateEmailOptionsInterface {
2
+ to: string[];
3
+ cc: string[];
4
+ bcc: string[];
5
+ from?: string;
6
+ replyTo?: string | string[];
7
+ business_id?: number;
8
+ template: string;
9
+ data: Record<string, any>;
10
+ variant?: string;
11
+ files?: {
12
+ file: string;
13
+ name?: string;
14
+ type?: string;
15
+ }[];
16
+ subject: string;
17
+ metadata?: any;
18
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=send.emithook.template.email.options.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"send.emithook.template.email.options.interface.js","sourceRoot":"","sources":["../../../src/access/interfaces/send.emithook.template.email.options.interface.ts"],"names":[],"mappings":""}
@@ -0,0 +1,11 @@
1
+ import { NotificationTypeAudienceEnum } from '../enums/notification.type.audience.enum';
2
+ export interface UserNotificationTypePreferenceRowInterface {
3
+ notification_type_id: number;
4
+ identifier: string;
5
+ name: string;
6
+ description: string;
7
+ category: string;
8
+ audience: NotificationTypeAudienceEnum;
9
+ channel_id: number;
10
+ state: 'on' | 'off' | 'locked' | 'off_by_business';
11
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=user.notification.type.preference.row.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user.notification.type.preference.row.interface.js","sourceRoot":"","sources":["../../../src/access/interfaces/user.notification.type.preference.row.interface.ts"],"names":[],"mappings":""}
@@ -0,0 +1,27 @@
1
+ import { CommonJob, QueueService, UploadService } from '@servicelabsco/nestjs-utility-services';
2
+ import { EmithookEnvelopeDto } from '../dtos/emithook.envelope.dto';
3
+ import { EmailMessageEntity } from '../entities/email.message.entity';
4
+ import { EmithookEmailBodyInterface } from '../interfaces/emithook.email.body.interface';
5
+ import { EmithookService } from '../services/emithook.service';
6
+ import { SyncEmailMessageMetricsJob } from './sync.email.message.metrics.job';
7
+ export declare class HandleEmithookEmailJob extends CommonJob {
8
+ protected readonly queueService: QueueService;
9
+ private readonly uploadService;
10
+ private readonly emithookService;
11
+ private readonly syncEmailMessageMetricsJob;
12
+ protected noDuplicate: boolean;
13
+ protected priority: number;
14
+ protected timeout: number;
15
+ constructor(queueService: QueueService, uploadService: UploadService, emithookService: EmithookService, syncEmailMessageMetricsJob: SyncEmailMessageMetricsJob);
16
+ handle(envelope: EmithookEnvelopeDto<EmithookEmailBodyInterface>): Promise<EmailMessageEntity>;
17
+ private findMailbox;
18
+ private toInbound;
19
+ private getAttachments;
20
+ private getRawAttachments;
21
+ private parseAddresses;
22
+ private parseAddress;
23
+ private splitReferences;
24
+ private header;
25
+ private lowerCaseKeys;
26
+ private textToHtml;
27
+ }
@@ -0,0 +1,162 @@
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 __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.HandleEmithookEmailJob = void 0;
13
+ const common_1 = require("@nestjs/common");
14
+ const nestjs_utility_services_1 = require("@servicelabsco/nestjs-utility-services");
15
+ const business_email_entity_1 = require("../entities/business.email.entity");
16
+ const business_email_type_enum_1 = require("../enums/business.email.type.enum");
17
+ const process_inbound_email_message_1 = require("../libraries/process.inbound.email.message");
18
+ const read_eml_attachments_1 = require("../libraries/read.eml.attachments");
19
+ const emithook_service_1 = require("../services/emithook.service");
20
+ const sync_email_message_metrics_job_1 = require("./sync.email.message.metrics.job");
21
+ let HandleEmithookEmailJob = class HandleEmithookEmailJob extends nestjs_utility_services_1.CommonJob {
22
+ constructor(queueService, uploadService, emithookService, syncEmailMessageMetricsJob) {
23
+ super('36af7f5abc379637fe4788c480ba513b');
24
+ this.queueService = queueService;
25
+ this.uploadService = uploadService;
26
+ this.emithookService = emithookService;
27
+ this.syncEmailMessageMetricsJob = syncEmailMessageMetricsJob;
28
+ this.noDuplicate = true;
29
+ this.priority = 10;
30
+ this.timeout = 600000;
31
+ }
32
+ async handle(envelope) {
33
+ if (envelope?.version !== 2 || envelope.metadata?.source !== 'email')
34
+ return null;
35
+ const aliasId = envelope.metadata.identifier;
36
+ if (!aliasId)
37
+ return null;
38
+ const email = await this.findMailbox(aliasId);
39
+ if (!email)
40
+ return null;
41
+ const messageId = envelope.data?.body?.message_id;
42
+ if (!messageId)
43
+ return null;
44
+ const message = await this.emithookService.getMessage(email.email, messageId);
45
+ const eventId = String(message.id || envelope.metadata.event_id || '');
46
+ const attachments = await this.getAttachments(aliasId, eventId, message);
47
+ const payload = this.toInbound(envelope, message, messageId, attachments);
48
+ return new process_inbound_email_message_1.ProcessInboundEmailMessage(this.uploadService, this.syncEmailMessageMetricsJob).process(email, payload);
49
+ }
50
+ async findMailbox(aliasId) {
51
+ const mailboxes = await business_email_entity_1.BusinessEmailEntity.find({ where: { identifier: aliasId, active: true }, relations: ['business'] });
52
+ return mailboxes.find((mailbox) => mailbox.attributes?.type === business_email_type_enum_1.BusinessEmailTypeEnum.EMITHOOK);
53
+ }
54
+ toInbound(envelope, body, identifier, attachments) {
55
+ const headers = this.lowerCaseKeys(body.headers);
56
+ const from = this.parseAddresses(body.from ?? headers.from)[0];
57
+ return {
58
+ identifier,
59
+ from_email: from?.email,
60
+ subject: body.subject ?? this.header(headers, 'subject'),
61
+ body: { html: body.html ?? this.textToHtml(body.text) },
62
+ recipients: {
63
+ to: this.parseAddresses(body.to ?? headers.to),
64
+ cc: this.parseAddresses(body.cc ?? headers.cc),
65
+ },
66
+ attachments,
67
+ attributes: {
68
+ message_id: this.header(headers, 'message-id'),
69
+ in_reply_to: this.header(headers, 'in-reply-to'),
70
+ references: this.splitReferences(this.header(headers, 'references')),
71
+ date: body.date ?? this.header(headers, 'date') ?? body.received_at,
72
+ emithook: { event_id: envelope.metadata.event_id, message_id: body.message_id, alias_id: envelope.metadata.identifier },
73
+ },
74
+ };
75
+ }
76
+ async getAttachments(aliasId, messageId, body) {
77
+ const list = Array.isArray(body.attachments) ? body.attachments : [];
78
+ const attachments = [];
79
+ for (const [index, attachment] of list.entries()) {
80
+ const attachmentId = attachment.id ?? attachment.index ?? index;
81
+ try {
82
+ const buffer = await this.emithookService.getAttachment(aliasId, messageId, attachmentId);
83
+ attachments.push({
84
+ name: attachment.name || attachment.filename || `attachment-${index + 1}`,
85
+ size: attachment.size ?? attachment.size_bytes ?? buffer.length,
86
+ buffer,
87
+ });
88
+ }
89
+ catch {
90
+ global.console.log('cannot download emithook attachment : ', messageId, attachmentId);
91
+ }
92
+ }
93
+ if (attachments.length || !list.length)
94
+ return attachments;
95
+ return this.getRawAttachments(aliasId, messageId);
96
+ }
97
+ async getRawAttachments(aliasId, messageId) {
98
+ try {
99
+ const raw = await this.emithookService.getRaw(aliasId, messageId);
100
+ const files = new read_eml_attachments_1.ReadEmlAttachments().fromBuffer(raw);
101
+ return files.map((file) => ({ name: file.name, size: file.buffer.length, buffer: file.buffer }));
102
+ }
103
+ catch {
104
+ global.console.log('cannot read emithook raw message attachments : ', messageId);
105
+ return [];
106
+ }
107
+ }
108
+ parseAddresses(value) {
109
+ if (!value)
110
+ return [];
111
+ if (Array.isArray(value))
112
+ return value.flatMap((item) => this.parseAddresses(item));
113
+ if (typeof value === 'object') {
114
+ const record = value;
115
+ if (Array.isArray(record.value))
116
+ return this.parseAddresses(record.value);
117
+ const email = (record.address ?? record.email)?.toString().trim().toLowerCase();
118
+ return email ? [{ email, name: record.name || undefined }] : [];
119
+ }
120
+ return value
121
+ .toString()
122
+ .split(/,(?=(?:[^"]*"[^"]*")*[^"]*$)/)
123
+ .map((part) => this.parseAddress(part))
124
+ .filter((address) => address?.email);
125
+ }
126
+ parseAddress(part) {
127
+ const match = part.match(/^\s*"?([^"<]*?)"?\s*<([^>]+)>\s*$/);
128
+ if (match)
129
+ return { email: match[2].trim().toLowerCase(), name: match[1].trim() || undefined };
130
+ const email = part.trim().toLowerCase();
131
+ return email.includes('@') ? { email } : null;
132
+ }
133
+ splitReferences(value) {
134
+ if (!value)
135
+ return [];
136
+ return value.split(/\s+/).filter((item) => item.length);
137
+ }
138
+ header(headers, name) {
139
+ const value = headers[name];
140
+ if (Array.isArray(value))
141
+ return value[0]?.trim();
142
+ return value?.trim() || undefined;
143
+ }
144
+ lowerCaseKeys(headers = {}) {
145
+ return Object.fromEntries(Object.entries(headers || {}).map(([key, value]) => [key.toLowerCase(), value]));
146
+ }
147
+ textToHtml(text) {
148
+ if (!text)
149
+ return '';
150
+ const escaped = text.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
151
+ return `<pre style="white-space: pre-wrap">${escaped}</pre>`;
152
+ }
153
+ };
154
+ exports.HandleEmithookEmailJob = HandleEmithookEmailJob;
155
+ exports.HandleEmithookEmailJob = HandleEmithookEmailJob = __decorate([
156
+ (0, common_1.Injectable)(),
157
+ __metadata("design:paramtypes", [nestjs_utility_services_1.QueueService,
158
+ nestjs_utility_services_1.UploadService,
159
+ emithook_service_1.EmithookService,
160
+ sync_email_message_metrics_job_1.SyncEmailMessageMetricsJob])
161
+ ], HandleEmithookEmailJob);
162
+ //# sourceMappingURL=handle.emithook.email.job.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handle.emithook.email.job.js","sourceRoot":"","sources":["../../../src/access/jobs/handle.emithook.email.job.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { CommonJob, QueueService } from '@servicelabsco/nestjs-utility-services';
2
+ import { EmithookEnvelopeDto } from '../dtos/emithook.envelope.dto';
3
+ export declare class HandleEmithookEmailStatusJob extends CommonJob {
4
+ protected readonly queueService: QueueService;
5
+ protected priority: number;
6
+ constructor(queueService: QueueService);
7
+ handle(envelope: EmithookEnvelopeDto<any>): Promise<string | null>;
8
+ }
@@ -0,0 +1,31 @@
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 __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.HandleEmithookEmailStatusJob = void 0;
13
+ const common_1 = require("@nestjs/common");
14
+ const nestjs_utility_services_1 = require("@servicelabsco/nestjs-utility-services");
15
+ const process_emithook_email_status_1 = require("../libraries/process.emithook.email.status");
16
+ let HandleEmithookEmailStatusJob = class HandleEmithookEmailStatusJob extends nestjs_utility_services_1.CommonJob {
17
+ constructor(queueService) {
18
+ super('1fff1a2b7c91c61c8bf4add7ebba6a7e');
19
+ this.queueService = queueService;
20
+ this.priority = 10;
21
+ }
22
+ async handle(envelope) {
23
+ return new process_emithook_email_status_1.ProcessEmithookEmailStatus().process(envelope);
24
+ }
25
+ };
26
+ exports.HandleEmithookEmailStatusJob = HandleEmithookEmailStatusJob;
27
+ exports.HandleEmithookEmailStatusJob = HandleEmithookEmailStatusJob = __decorate([
28
+ (0, common_1.Injectable)(),
29
+ __metadata("design:paramtypes", [nestjs_utility_services_1.QueueService])
30
+ ], HandleEmithookEmailStatusJob);
31
+ //# sourceMappingURL=handle.emithook.email.status.job.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handle.emithook.email.status.job.js","sourceRoot":"","sources":["../../../src/access/jobs/handle.emithook.email.status.job.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA4C;AAC5C,oFAAiF;AAEjF,8FAAwF;AAOjF,IAAM,4BAA4B,GAAlC,MAAM,4BAA6B,SAAQ,mCAAS;IAGvD,YAA+B,YAA0B;QACrD,KAAK,CAAC,kCAAkC,CAAC,CAAC;QADf,iBAAY,GAAZ,YAAY,CAAc;QAF/C,aAAQ,GAAG,EAAE,CAAC;IAIxB,CAAC;IAMD,KAAK,CAAC,MAAM,CAAC,QAAkC;QAC3C,OAAO,IAAI,0DAA0B,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC9D,CAAC;CACJ,CAAA;AAdY,oEAA4B;uCAA5B,4BAA4B;IADxC,IAAA,mBAAU,GAAE;qCAIoC,sCAAY;GAHhD,4BAA4B,CAcxC"}
@@ -22,9 +22,14 @@ export * from './generate.business.report.job';
22
22
  export * from './gmail.integration.fetch.messages.job';
23
23
  export * from './group.member.job';
24
24
  export * from './group.role.job';
25
+ export * from './handle.emithook.email.job';
26
+ export * from './handle.emithook.email.status.job';
25
27
  export * from './onhold.document.job';
26
28
  export * from './overriding.script.job';
29
+ export * from './poll.emithook.email.inbox.job';
30
+ export * from './poll.emithook.email.sqs.job';
27
31
  export * from './process.server.email.job';
32
+ export * from './reconcile.emithook.email.status.job';
28
33
  export * from './refresh.business.property.job';
29
34
  export * from './scheduled.report.item.job';
30
35
  export * from './scheduled.report.job';
@@ -38,9 +38,14 @@ __exportStar(require("./generate.business.report.job"), exports);
38
38
  __exportStar(require("./gmail.integration.fetch.messages.job"), exports);
39
39
  __exportStar(require("./group.member.job"), exports);
40
40
  __exportStar(require("./group.role.job"), exports);
41
+ __exportStar(require("./handle.emithook.email.job"), exports);
42
+ __exportStar(require("./handle.emithook.email.status.job"), exports);
41
43
  __exportStar(require("./onhold.document.job"), exports);
42
44
  __exportStar(require("./overriding.script.job"), exports);
45
+ __exportStar(require("./poll.emithook.email.inbox.job"), exports);
46
+ __exportStar(require("./poll.emithook.email.sqs.job"), exports);
43
47
  __exportStar(require("./process.server.email.job"), exports);
48
+ __exportStar(require("./reconcile.emithook.email.status.job"), exports);
44
49
  __exportStar(require("./refresh.business.property.job"), exports);
45
50
  __exportStar(require("./scheduled.report.item.job"), exports);
46
51
  __exportStar(require("./scheduled.report.job"), exports);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/access/jobs/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAGA,oDAAkC;AAClC,iEAA+C;AAC/C,yDAAuC;AACvC,4DAA0C;AAC1C,0DAAwC;AACxC,wDAAsC;AACtC,wDAAsC;AACtC,4DAA0C;AAC1C,sDAAoC;AACpC,2DAAyC;AACzC,8DAA4C;AAC5C,oDAAkC;AAClC,yDAAuC;AACvC,sDAAoC;AACpC,wDAAsC;AACtC,4DAA0C;AAC1C,gEAA8C;AAC9C,gDAA8B;AAC9B,qDAAmC;AACnC,+DAA6C;AAC7C,iEAA+C;AAC/C,yEAAuD;AACvD,qDAAmC;AACnC,mDAAiC;AACjC,wDAAsC;AACtC,0DAAwC;AACxC,6DAA2C;AAC3C,kEAAgD;AAChD,8DAA4C;AAC5C,yDAAuC;AACvC,0EAAwD;AACxD,qEAAmD;AACnD,+DAA6C;AAC7C,+DAA6C;AAC7C,0DAAwC;AACxC,sDAAoC;AACpC,mEAAiD;AACjD,4DAA0C;AAC1C,kDAAgC;AAChC,kDAAgC;AAChC,6DAA2C;AAC3C,qDAAmC;AACnC,kEAAgD;AAChD,iEAA+C"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/access/jobs/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAGA,oDAAkC;AAClC,iEAA+C;AAC/C,yDAAuC;AACvC,4DAA0C;AAC1C,0DAAwC;AACxC,wDAAsC;AACtC,wDAAsC;AACtC,4DAA0C;AAC1C,sDAAoC;AACpC,2DAAyC;AACzC,8DAA4C;AAC5C,oDAAkC;AAClC,yDAAuC;AACvC,sDAAoC;AACpC,wDAAsC;AACtC,4DAA0C;AAC1C,gEAA8C;AAC9C,gDAA8B;AAC9B,qDAAmC;AACnC,+DAA6C;AAC7C,iEAA+C;AAC/C,yEAAuD;AACvD,qDAAmC;AACnC,mDAAiC;AACjC,8DAA4C;AAC5C,qEAAmD;AACnD,wDAAsC;AACtC,0DAAwC;AACxC,kEAAgD;AAChD,gEAA8C;AAC9C,6DAA2C;AAC3C,wEAAsD;AACtD,kEAAgD;AAChD,8DAA4C;AAC5C,yDAAuC;AACvC,0EAAwD;AACxD,qEAAmD;AACnD,+DAA6C;AAC7C,+DAA6C;AAC7C,0DAAwC;AACxC,sDAAoC;AACpC,mEAAiD;AACjD,4DAA0C;AAC1C,kDAAgC;AAChC,kDAAgC;AAChC,6DAA2C;AAC3C,qDAAmC;AACnC,kEAAgD;AAChD,iEAA+C"}
@@ -0,0 +1,19 @@
1
+ import { CommonJob, QueueService } from '@servicelabsco/nestjs-utility-services';
2
+ import { EmithookService } from '../services/emithook.service';
3
+ import { HandleEmithookEmailJob } from './handle.emithook.email.job';
4
+ export declare class PollEmithookEmailInboxJob extends CommonJob {
5
+ protected readonly queueService: QueueService;
6
+ private readonly emithookService;
7
+ private readonly handleEmithookEmailJob;
8
+ protected noDuplicate: boolean;
9
+ protected priority: number;
10
+ protected timeout: number;
11
+ constructor(queueService: QueueService, emithookService: EmithookService, handleEmithookEmailJob: HandleEmithookEmailJob);
12
+ handle(payload?: {
13
+ hours?: number;
14
+ }): Promise<number>;
15
+ private sweep;
16
+ private envelope;
17
+ private isBefore;
18
+ private mailboxes;
19
+ }
@@ -0,0 +1,109 @@
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 __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.PollEmithookEmailInboxJob = void 0;
13
+ const common_1 = require("@nestjs/common");
14
+ const nestjs_utility_services_1 = require("@servicelabsco/nestjs-utility-services");
15
+ const typeorm_1 = require("typeorm");
16
+ const business_email_entity_1 = require("../entities/business.email.entity");
17
+ const email_message_entity_1 = require("../entities/email.message.entity");
18
+ const business_email_type_enum_1 = require("../enums/business.email.type.enum");
19
+ const emithook_service_1 = require("../services/emithook.service");
20
+ const handle_emithook_email_job_1 = require("./handle.emithook.email.job");
21
+ const DEFAULT_LOOKBACK_HOURS = 2;
22
+ const MAX_PAGES = 20;
23
+ let PollEmithookEmailInboxJob = class PollEmithookEmailInboxJob extends nestjs_utility_services_1.CommonJob {
24
+ constructor(queueService, emithookService, handleEmithookEmailJob) {
25
+ super('7158f74fd614f3df7d918dd010c73c71');
26
+ this.queueService = queueService;
27
+ this.emithookService = emithookService;
28
+ this.handleEmithookEmailJob = handleEmithookEmailJob;
29
+ this.noDuplicate = true;
30
+ this.priority = 10;
31
+ this.timeout = 600000;
32
+ }
33
+ async handle(payload) {
34
+ const hours = payload?.hours > 0 ? payload.hours : DEFAULT_LOOKBACK_HOURS;
35
+ const since = new Date(Date.now() - hours * 60 * 60 * 1000);
36
+ const mailboxes = await this.mailboxes();
37
+ let stored = 0;
38
+ for (const mailbox of mailboxes) {
39
+ try {
40
+ const count = await this.sweep(mailbox, since);
41
+ stored += count;
42
+ }
43
+ catch (error) {
44
+ this.logger.error(`emithook inbox poll failed for ${mailbox.identifier} : ${error}`);
45
+ }
46
+ }
47
+ return stored;
48
+ }
49
+ async sweep(mailbox, since) {
50
+ let stored = 0;
51
+ let cursor;
52
+ for (let pages = 0; pages < MAX_PAGES; pages++) {
53
+ const page = await this.emithookService.listMessages(mailbox.identifier, cursor);
54
+ const rows = page.data || [];
55
+ if (!rows.length)
56
+ return stored;
57
+ for (const row of rows) {
58
+ if (this.isBefore(row.received_at, since))
59
+ return stored;
60
+ if (!row.message_id)
61
+ continue;
62
+ const existing = await email_message_entity_1.EmailMessageEntity.findOne({
63
+ where: { email_id: mailbox.id, identifier: row.message_id, deleted_at: (0, typeorm_1.IsNull)() },
64
+ });
65
+ if (existing?.id)
66
+ continue;
67
+ await this.handleEmithookEmailJob.handle(this.envelope(mailbox, row));
68
+ stored += 1;
69
+ }
70
+ if (!page.next_cursor)
71
+ return stored;
72
+ cursor = page.next_cursor;
73
+ }
74
+ this.logger.warn(`emithook inbox poll stopped after ${MAX_PAGES} pages for ${mailbox.identifier}`);
75
+ return stored;
76
+ }
77
+ envelope(mailbox, row) {
78
+ return {
79
+ version: 2,
80
+ metadata: { source: 'email', identifier: mailbox.identifier, event_id: row.id, name: mailbox.email },
81
+ data: { body: { message_id: row.message_id }, headers: {}, queries: {} },
82
+ };
83
+ }
84
+ isBefore(receivedAt, since) {
85
+ if (!receivedAt)
86
+ return false;
87
+ const received = new Date(receivedAt);
88
+ if (Number.isNaN(received.getTime()))
89
+ return false;
90
+ return received < since;
91
+ }
92
+ async mailboxes() {
93
+ return business_email_entity_1.BusinessEmailEntity.find({
94
+ where: {
95
+ active: true,
96
+ identifier: (0, typeorm_1.Not)((0, typeorm_1.IsNull)()),
97
+ attributes: (0, typeorm_1.Raw)((column) => `${column} ->> 'type' = :type`, { type: business_email_type_enum_1.BusinessEmailTypeEnum.EMITHOOK }),
98
+ },
99
+ });
100
+ }
101
+ };
102
+ exports.PollEmithookEmailInboxJob = PollEmithookEmailInboxJob;
103
+ exports.PollEmithookEmailInboxJob = PollEmithookEmailInboxJob = __decorate([
104
+ (0, common_1.Injectable)(),
105
+ __metadata("design:paramtypes", [nestjs_utility_services_1.QueueService,
106
+ emithook_service_1.EmithookService,
107
+ handle_emithook_email_job_1.HandleEmithookEmailJob])
108
+ ], PollEmithookEmailInboxJob);
109
+ //# sourceMappingURL=poll.emithook.email.inbox.job.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"poll.emithook.email.inbox.job.js","sourceRoot":"","sources":["../../../src/access/jobs/poll.emithook.email.inbox.job.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import { CommonJob, PropertyService, QueueService, SqsService } from '@servicelabsco/nestjs-utility-services';
2
+ import { HandleEmithookEmailJob } from './handle.emithook.email.job';
3
+ import { HandleEmithookEmailStatusJob } from './handle.emithook.email.status.job';
4
+ export declare class PollEmithookEmailSqsJob extends CommonJob {
5
+ protected readonly queueService: QueueService;
6
+ private readonly sqsService;
7
+ private readonly propertyService;
8
+ protected readonly handleEmithookEmailJob: HandleEmithookEmailJob;
9
+ protected readonly handleEmithookEmailStatusJob: HandleEmithookEmailStatusJob;
10
+ protected noDuplicate: boolean;
11
+ protected priority: number;
12
+ protected timeout: number;
13
+ protected sqsQueue: string;
14
+ protected countOfMessages: number;
15
+ protected maxMessagePerSession: number;
16
+ constructor(queueService: QueueService, sqsService: SqsService, propertyService: PropertyService, handleEmithookEmailJob: HandleEmithookEmailJob, handleEmithookEmailStatusJob: HandleEmithookEmailStatusJob);
17
+ handle(): Promise<number>;
18
+ private processMessages;
19
+ private processMessage;
20
+ private getFetchCount;
21
+ private deleteMessages;
22
+ }
@@ -0,0 +1,91 @@
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 __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.PollEmithookEmailSqsJob = void 0;
13
+ const common_1 = require("@nestjs/common");
14
+ const nestjs_utility_services_1 = require("@servicelabsco/nestjs-utility-services");
15
+ const process_emithook_email_status_1 = require("../libraries/process.emithook.email.status");
16
+ const handle_emithook_email_job_1 = require("./handle.emithook.email.job");
17
+ const handle_emithook_email_status_job_1 = require("./handle.emithook.email.status.job");
18
+ let PollEmithookEmailSqsJob = class PollEmithookEmailSqsJob extends nestjs_utility_services_1.CommonJob {
19
+ constructor(queueService, sqsService, propertyService, handleEmithookEmailJob, handleEmithookEmailStatusJob) {
20
+ super('ca0adb284c36eea7e7bde9f58689030e');
21
+ this.queueService = queueService;
22
+ this.sqsService = sqsService;
23
+ this.propertyService = propertyService;
24
+ this.handleEmithookEmailJob = handleEmithookEmailJob;
25
+ this.handleEmithookEmailStatusJob = handleEmithookEmailStatusJob;
26
+ this.noDuplicate = true;
27
+ this.priority = 10;
28
+ this.timeout = 600000;
29
+ this.countOfMessages = 0;
30
+ this.maxMessagePerSession = 300000;
31
+ }
32
+ async handle() {
33
+ this.countOfMessages = 0;
34
+ this.sqsQueue = await this.propertyService.get('sqs.emithook.email.queue');
35
+ if (!this.sqsQueue)
36
+ throw new nestjs_utility_services_1.OperationException('System property sqs.emithook.email.queue is not configured');
37
+ const fetchCount = this.getFetchCount();
38
+ while (true) {
39
+ const response = await this.sqsService.get(this.sqsQueue, fetchCount);
40
+ const messages = response?.Messages || [];
41
+ if (!messages.length)
42
+ return this.countOfMessages;
43
+ await this.processMessages(messages);
44
+ if (this.countOfMessages > this.maxMessagePerSession)
45
+ return this.countOfMessages;
46
+ }
47
+ }
48
+ async processMessages(messages) {
49
+ for (const message of messages) {
50
+ await this.processMessage(message);
51
+ ++this.countOfMessages;
52
+ }
53
+ await this.deleteMessages(messages);
54
+ }
55
+ async processMessage(message) {
56
+ let payload;
57
+ try {
58
+ payload = JSON.parse(message.Body);
59
+ }
60
+ catch {
61
+ this.logger.error(`[Processing SQS] ${this.sqsQueue} dropped a message that is not JSON : ${message.MessageId}`);
62
+ return;
63
+ }
64
+ if (payload?.metadata?.source === 'https')
65
+ return;
66
+ if (process_emithook_email_status_1.ProcessEmithookEmailStatus.isStatusEnvelope(payload)) {
67
+ await this.handleEmithookEmailStatusJob.dispatch(payload);
68
+ return;
69
+ }
70
+ await this.handleEmithookEmailJob.dispatch(payload);
71
+ }
72
+ getFetchCount() {
73
+ const isFifo = this.sqsQueue.split('.').pop()?.toLowerCase() === 'fifo';
74
+ return isFifo ? 1 : 10;
75
+ }
76
+ async deleteMessages(messages) {
77
+ const receiptHandles = messages.map((message) => message.ReceiptHandle);
78
+ await this.sqsService.deleteBulk(this.sqsQueue, receiptHandles);
79
+ this.logger.log(`[Processing SQS] ${this.sqsQueue} total messages : ${this.countOfMessages}`);
80
+ }
81
+ };
82
+ exports.PollEmithookEmailSqsJob = PollEmithookEmailSqsJob;
83
+ exports.PollEmithookEmailSqsJob = PollEmithookEmailSqsJob = __decorate([
84
+ (0, common_1.Injectable)(),
85
+ __metadata("design:paramtypes", [nestjs_utility_services_1.QueueService,
86
+ nestjs_utility_services_1.SqsService,
87
+ nestjs_utility_services_1.PropertyService,
88
+ handle_emithook_email_job_1.HandleEmithookEmailJob,
89
+ handle_emithook_email_status_job_1.HandleEmithookEmailStatusJob])
90
+ ], PollEmithookEmailSqsJob);
91
+ //# sourceMappingURL=poll.emithook.email.sqs.job.js.map