rez_core 3.1.111 → 3.1.114

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 (392) hide show
  1. package/.prettierrc +3 -3
  2. package/README.md +99 -99
  3. package/dist/module/auth/guards/role.guard.js +3 -3
  4. package/dist/module/auth/services/auth.service.js +2 -2
  5. package/dist/module/filter/repository/saved-filter.repository.js +4 -4
  6. package/dist/module/filter/service/filter-evaluator.service.js +2 -2
  7. package/dist/module/filter/service/filter.service.js +7 -7
  8. package/dist/module/integration/examples/usage.example.js +9 -9
  9. package/dist/module/integration/service/integration.service.js +1 -1
  10. package/dist/module/integration/service/wrapper.service.js +17 -17
  11. package/dist/module/integration/strategies/email/gmail-api.strategy.js +1 -0
  12. package/dist/module/integration/strategies/email/gmail-api.strategy.js.map +1 -1
  13. package/dist/module/integration/strategies/email/sendgrid-api.strategy.js +1 -0
  14. package/dist/module/integration/strategies/email/sendgrid-api.strategy.js.map +1 -1
  15. package/dist/module/integration/strategies/integration.strategy.d.ts +1 -0
  16. package/dist/module/integration/strategies/integration.strategy.js.map +1 -1
  17. package/dist/module/integration/strategies/telephone/ozonetel-voice.strategy.js +1 -0
  18. package/dist/module/integration/strategies/telephone/ozonetel-voice.strategy.js.map +1 -1
  19. package/dist/module/integration/strategies/telephone/tubelight-voice.strategy.js +1 -0
  20. package/dist/module/integration/strategies/telephone/tubelight-voice.strategy.js.map +1 -1
  21. package/dist/module/listmaster/service/list-master-item.service.js +2 -2
  22. package/dist/module/listmaster/service/list-master.service.js +2 -2
  23. package/dist/module/mapper/service/field-mapper.service.js +4 -4
  24. package/dist/module/mapper/service/mapper.service.js +2 -2
  25. package/dist/module/meta/service/entity-dynamic.service.js +18 -18
  26. package/dist/module/meta/service/entity-list.service.js +3 -3
  27. package/dist/module/meta/service/entity-master.service.js +3 -3
  28. package/dist/module/meta/service/entity-relation.service.js +11 -11
  29. package/dist/module/meta/service/entity-service-impl.service.js +3 -3
  30. package/dist/module/meta/service/resolver.service.js +3 -3
  31. package/dist/module/module/repository/menu.repository.js +12 -12
  32. package/dist/module/module/repository/module-access.repository.js +1 -0
  33. package/dist/module/module/repository/module-access.repository.js.map +1 -1
  34. package/dist/module/notification/service/notification.service.js +12 -12
  35. package/dist/module/user/controller/login.controller.js +18 -18
  36. package/dist/module/user/service/role.service.js +4 -4
  37. package/dist/module/user/service/user-session.service.js +2 -2
  38. package/dist/module/workflow/repository/action.repository.js +16 -16
  39. package/dist/module/workflow/repository/comm-template.repository.js +6 -6
  40. package/dist/module/workflow/repository/form-master.repository.js +2 -2
  41. package/dist/module/workflow/repository/stage-group.repository.js +23 -23
  42. package/dist/module/workflow/repository/stage-movement.repository.js +11 -11
  43. package/dist/module/workflow/repository/stage.repository.js +8 -8
  44. package/dist/module/workflow/service/action-template-mapping.service.js +10 -10
  45. package/dist/module/workflow/service/action.service.js +7 -7
  46. package/dist/module/workflow/service/entity-modification.service.js +6 -6
  47. package/dist/module/workflow/service/stage-group.service.js +5 -5
  48. package/dist/module/workflow/service/stage.service.js +2 -2
  49. package/dist/module/workflow/service/task.service.js +33 -33
  50. package/dist/module/workflow/service/workflow-list-master.service.js +15 -15
  51. package/dist/module/workflow/service/workflow-meta.service.js +50 -50
  52. package/dist/module/workflow/service/workflow.service.js +2 -2
  53. package/dist/tsconfig.build.tsbuildinfo +1 -1
  54. package/dist/utils/service/reflection-helper.service.js +2 -2
  55. package/docs/modules/event-driven-integration-design.md +91 -91
  56. package/docs/modules/integration.md +250 -250
  57. package/eslint.config.mjs +34 -34
  58. package/nest-cli.json +14 -14
  59. package/package.json +118 -118
  60. package/src/app.controller.ts +12 -12
  61. package/src/app.module.ts +49 -49
  62. package/src/app.service.ts +8 -8
  63. package/src/config/config.module.ts +18 -18
  64. package/src/config/database.config.ts +23 -23
  65. package/src/constant/global.constant.ts +67 -67
  66. package/src/core.module.ts +81 -81
  67. package/src/decorators/roles.decorator.ts +7 -7
  68. package/src/dtos/response.dto.ts +6 -6
  69. package/src/dtos/response.ts +5 -5
  70. package/src/index.ts +1 -1
  71. package/src/module/auth/auth.module.ts +49 -49
  72. package/src/module/auth/controller/auth.controller.ts +28 -28
  73. package/src/module/auth/guards/google-auth.guard.ts +9 -9
  74. package/src/module/auth/guards/jwt.guard.ts +22 -22
  75. package/src/module/auth/guards/role.guard.ts +68 -68
  76. package/src/module/auth/services/auth.service.ts +50 -50
  77. package/src/module/auth/services/jwt.service.ts +11 -11
  78. package/src/module/auth/strategies/google.strategy.ts +54 -54
  79. package/src/module/auth/strategies/jwt.strategy.ts +58 -58
  80. package/src/module/auth/strategies/local.strategy.ts +13 -13
  81. package/src/module/dashboard/controller/dashboard.controller.ts +36 -36
  82. package/src/module/dashboard/dashboard.module.ts +21 -21
  83. package/src/module/dashboard/entity/dashboard_page_data.entity.ts +27 -27
  84. package/src/module/dashboard/entity/widget_master.entity.ts +18 -18
  85. package/src/module/dashboard/repository/dashboard.repository.ts +42 -42
  86. package/src/module/dashboard/service/dashboard.service.ts +73 -73
  87. package/src/module/dev/dev.module.ts +12 -12
  88. package/src/module/dev/service/dev.service.ts +7 -7
  89. package/src/module/enterprise/controller/organization.controller.ts +36 -36
  90. package/src/module/enterprise/enterprise.module.ts +30 -30
  91. package/src/module/enterprise/entity/enterprise.entity.ts +37 -37
  92. package/src/module/enterprise/entity/organization-app-mapping.entity.ts +13 -13
  93. package/src/module/enterprise/entity/organization.entity.ts +92 -92
  94. package/src/module/enterprise/repository/enterprise.repository.ts +31 -31
  95. package/src/module/enterprise/repository/organization.repository.ts +26 -26
  96. package/src/module/enterprise/repository/school.repository.ts +282 -282
  97. package/src/module/enterprise/service/brand.service.ts +5 -5
  98. package/src/module/enterprise/service/enterprise.service.ts +16 -16
  99. package/src/module/enterprise/service/organization-app-mapping.service.ts +4 -4
  100. package/src/module/enterprise/service/organization.service.ts +145 -145
  101. package/src/module/filter/controller/filter.controller.ts +84 -84
  102. package/src/module/filter/dto/filter-request.dto.ts +38 -38
  103. package/src/module/filter/entity/saved-filter-detail.entity.ts +41 -41
  104. package/src/module/filter/entity/saved-filter-master.entity.ts +23 -23
  105. package/src/module/filter/filter.module.ts +31 -31
  106. package/src/module/filter/repository/saved-filter.repository.ts +168 -168
  107. package/src/module/filter/service/filter-evaluator.service.ts +86 -86
  108. package/src/module/filter/service/filter.service.ts +841 -841
  109. package/src/module/filter/service/saved-filter.service.ts +170 -170
  110. package/src/module/ics/controller/ics.controller.ts +21 -21
  111. package/src/module/ics/dto/ics.dto.ts +55 -55
  112. package/src/module/ics/ics.module.ts +13 -13
  113. package/src/module/ics/service/ics.service.ts +60 -60
  114. package/src/module/integration/controller/calender-event.controller.ts +31 -31
  115. package/src/module/integration/controller/integration.controller.ts +662 -662
  116. package/src/module/integration/controller/wrapper.controller.ts +39 -39
  117. package/src/module/integration/dto/create-config.dto.ts +526 -526
  118. package/src/module/integration/entity/integration-config.entity.ts +112 -112
  119. package/src/module/integration/entity/integration-entity-mapper.entity.ts +14 -14
  120. package/src/module/integration/entity/integration-source.entity.ts +17 -17
  121. package/src/module/integration/entity/user-integration.entity.ts +70 -70
  122. package/src/module/integration/examples/usage.example.ts +338 -338
  123. package/src/module/integration/factories/base.factory.ts +7 -7
  124. package/src/module/integration/factories/email.factory.ts +49 -49
  125. package/src/module/integration/factories/integration.factory.ts +121 -121
  126. package/src/module/integration/factories/sms.factory.ts +51 -51
  127. package/src/module/integration/factories/telephone.factory.ts +41 -41
  128. package/src/module/integration/factories/whatsapp.factory.ts +56 -56
  129. package/src/module/integration/integration.module.ts +110 -110
  130. package/src/module/integration/service/calendar-event.service.ts +118 -118
  131. package/src/module/integration/service/integration-entity-mapper.service.ts +17 -17
  132. package/src/module/integration/service/integration-queue.service.ts +229 -229
  133. package/src/module/integration/service/integration.service.ts +2527 -2527
  134. package/src/module/integration/service/oauth.service.ts +224 -224
  135. package/src/module/integration/service/wrapper.service.ts +373 -373
  136. package/src/module/integration/strategies/email/gmail-api.strategy.ts +288 -287
  137. package/src/module/integration/strategies/email/outlook-api.strategy.ts +44 -44
  138. package/src/module/integration/strategies/email/outlook.strategy.ts +64 -64
  139. package/src/module/integration/strategies/email/sendgrid-api.strategy.ts +262 -261
  140. package/src/module/integration/strategies/integration.strategy.ts +97 -96
  141. package/src/module/integration/strategies/sms/gupshup-sms.strategy.ts +146 -146
  142. package/src/module/integration/strategies/sms/msg91-sms.strategy.ts +164 -164
  143. package/src/module/integration/strategies/sms/tubelight-sms.strategy.ts +163 -163
  144. package/src/module/integration/strategies/telephone/ozonetel-voice.strategy.ts +238 -237
  145. package/src/module/integration/strategies/telephone/tubelight-voice.strategy.ts +210 -209
  146. package/src/module/integration/strategies/whatsapp/gupshup-whatsapp.strategy.ts +359 -359
  147. package/src/module/integration/strategies/whatsapp/tubelight-whatsapp.strategy.ts +371 -371
  148. package/src/module/integration/strategies/whatsapp/whatsapp-cloud.strategy.ts +403 -403
  149. package/src/module/integration/strategies/whatsapp/whatsapp.strategy.ts +57 -57
  150. package/src/module/layout/controller/layout.controller.ts +47 -47
  151. package/src/module/layout/entity/header-items.entity.ts +28 -28
  152. package/src/module/layout/entity/header-section.entity.ts +19 -19
  153. package/src/module/layout/layout.module.ts +21 -21
  154. package/src/module/layout/repository/header-items.repository.ts +18 -18
  155. package/src/module/layout/repository/header-section.repository.ts +22 -22
  156. package/src/module/layout/service/header-section.service.ts +25 -25
  157. package/src/module/layout_preference/controller/layout_preference.controller.ts +47 -47
  158. package/src/module/layout_preference/entity/layout_preference.entity.ts +28 -28
  159. package/src/module/layout_preference/layout_preference.module.ts +18 -18
  160. package/src/module/layout_preference/repository/layout_preference.repository.ts +30 -30
  161. package/src/module/layout_preference/service/layout_preference.service.ts +140 -140
  162. package/src/module/lead/controller/lead.controller.ts +30 -30
  163. package/src/module/lead/lead.module.ts +14 -14
  164. package/src/module/lead/repository/lead.repository.ts +41 -41
  165. package/src/module/lead/service/lead.service.ts +54 -54
  166. package/src/module/listmaster/controller/list-master.controller.ts +143 -143
  167. package/src/module/listmaster/entity/list-master-items.entity.ts +41 -41
  168. package/src/module/listmaster/entity/list-master.entity.ts +32 -32
  169. package/src/module/listmaster/listmaster.module.ts +30 -30
  170. package/src/module/listmaster/repository/list-master-items.repository.ts +169 -169
  171. package/src/module/listmaster/repository/list-master.repository.ts +46 -46
  172. package/src/module/listmaster/service/list-master-item.service.ts +292 -292
  173. package/src/module/listmaster/service/list-master.service.ts +360 -360
  174. package/src/module/mapper/controller/field-mapper.controller.ts +69 -69
  175. package/src/module/mapper/controller/mapper.controller.ts +12 -12
  176. package/src/module/mapper/dto/field-mapper.dto.ts +14 -14
  177. package/src/module/mapper/entity/field-lovs.entity.ts +20 -20
  178. package/src/module/mapper/entity/field-mapper.entity.ts +37 -37
  179. package/src/module/mapper/entity/mapper.entity.ts +17 -17
  180. package/src/module/mapper/mapper.module.ts +34 -34
  181. package/src/module/mapper/repository/field-lovs.repository.ts +35 -35
  182. package/src/module/mapper/repository/field-mapper.repository.ts +42 -42
  183. package/src/module/mapper/repository/mapper.repository.ts +14 -14
  184. package/src/module/mapper/service/field-mapper.service.ts +223 -223
  185. package/src/module/mapper/service/mapper.service.ts +72 -72
  186. package/src/module/master/controller/master.controller.ts +74 -74
  187. package/src/module/master/service/master.service.ts +486 -486
  188. package/src/module/meta/controller/app-master.controller.ts +38 -38
  189. package/src/module/meta/controller/attribute-master.controller.ts +66 -66
  190. package/src/module/meta/controller/entity-dynamic.controller.ts +111 -111
  191. package/src/module/meta/controller/entity-master.controller.ts +28 -28
  192. package/src/module/meta/controller/entity-relation.controller.ts +36 -36
  193. package/src/module/meta/controller/entity.controller.ts +385 -385
  194. package/src/module/meta/controller/media.controller.ts +82 -82
  195. package/src/module/meta/controller/meta.controller.ts +96 -96
  196. package/src/module/meta/controller/view-master.controller.ts +86 -86
  197. package/src/module/meta/dto/entity-list-data.dto.ts +6 -6
  198. package/src/module/meta/dto/entity-tab.dto.ts +4 -4
  199. package/src/module/meta/dto/entity-table.dto.ts +9 -9
  200. package/src/module/meta/entity/app-master.entity.ts +34 -34
  201. package/src/module/meta/entity/attribute-master.entity.ts +87 -87
  202. package/src/module/meta/entity/base-entity.entity.ts +75 -75
  203. package/src/module/meta/entity/entity-master.entity.ts +78 -78
  204. package/src/module/meta/entity/entity-relation-data.entity.ts +29 -29
  205. package/src/module/meta/entity/entity-relation.entity.ts +23 -23
  206. package/src/module/meta/entity/entity-table-column.entity.ts +61 -61
  207. package/src/module/meta/entity/entity-table.entity.ts +50 -50
  208. package/src/module/meta/entity/media-data.entity.ts +32 -32
  209. package/src/module/meta/entity/preference.entity.ts +62 -62
  210. package/src/module/meta/entity/view-master.entity.ts +41 -41
  211. package/src/module/meta/entity.module.ts +156 -156
  212. package/src/module/meta/repository/app-master.repository.ts +20 -20
  213. package/src/module/meta/repository/attribute-master.repository.ts +110 -110
  214. package/src/module/meta/repository/entity-master.repository.ts +61 -61
  215. package/src/module/meta/repository/entity-table-column.repository.ts +39 -39
  216. package/src/module/meta/repository/entity-table.repository.ts +53 -53
  217. package/src/module/meta/repository/media-data.repository.ts +50 -50
  218. package/src/module/meta/repository/preference.repository.ts +20 -20
  219. package/src/module/meta/repository/user-app-mapping.repository.ts +28 -28
  220. package/src/module/meta/repository/view-master.repository.ts +42 -42
  221. package/src/module/meta/service/app-master.service.ts +37 -37
  222. package/src/module/meta/service/attribute-master.service.ts +117 -117
  223. package/src/module/meta/service/common.service.ts +9 -9
  224. package/src/module/meta/service/entity-dynamic.service.ts +718 -718
  225. package/src/module/meta/service/entity-list.service.ts +205 -205
  226. package/src/module/meta/service/entity-master.service.ts +164 -164
  227. package/src/module/meta/service/entity-realation-data.service.ts +9 -9
  228. package/src/module/meta/service/entity-relation.service.ts +69 -69
  229. package/src/module/meta/service/entity-service-impl.service.ts +513 -513
  230. package/src/module/meta/service/entity-table-column.service.ts +39 -39
  231. package/src/module/meta/service/entity-table.service.ts +150 -150
  232. package/src/module/meta/service/entity-validation.service.ts +185 -185
  233. package/src/module/meta/service/entity.service.ts +67 -67
  234. package/src/module/meta/service/field-group.service.ts +103 -103
  235. package/src/module/meta/service/media-data.service.ts +140 -140
  236. package/src/module/meta/service/populate-meta.service.ts +153 -153
  237. package/src/module/meta/service/preference.service.ts +16 -16
  238. package/src/module/meta/service/resolver.service.ts +256 -256
  239. package/src/module/meta/service/section-master.service.ts +104 -104
  240. package/src/module/meta/service/update-form-json.service.ts +22 -22
  241. package/src/module/meta/service/user-app-mapping.service.ts +17 -17
  242. package/src/module/meta/service/view-master.service.ts +91 -91
  243. package/src/module/module/controller/menu.controller.ts +15 -15
  244. package/src/module/module/controller/module-access.controller.ts +132 -132
  245. package/src/module/module/entity/menu.entity.ts +43 -43
  246. package/src/module/module/entity/module-access.entity.ts +25 -25
  247. package/src/module/module/entity/module-action.entity.ts +17 -17
  248. package/src/module/module/entity/module.entity.ts +52 -52
  249. package/src/module/module/module.module.ts +42 -42
  250. package/src/module/module/repository/menu.repository.ts +184 -184
  251. package/src/module/module/repository/module-access.repository.ts +326 -324
  252. package/src/module/module/service/menu.service.ts +82 -82
  253. package/src/module/module/service/module-access.service.ts +209 -209
  254. package/src/module/notification/controller/notification.controller.ts +58 -58
  255. package/src/module/notification/controller/otp.controller.ts +117 -117
  256. package/src/module/notification/entity/notification.entity.ts +23 -23
  257. package/src/module/notification/entity/otp.entity.ts +28 -28
  258. package/src/module/notification/firebase-admin.config.ts +22 -22
  259. package/src/module/notification/notification.module.ts +69 -69
  260. package/src/module/notification/repository/otp.repository.ts +27 -27
  261. package/src/module/notification/service/email.service.ts +127 -127
  262. package/src/module/notification/service/notification.service.ts +130 -130
  263. package/src/module/notification/service/otp.service.ts +121 -121
  264. package/src/module/third-party-module/entity/third-party-api-registry.entity.ts +52 -52
  265. package/src/module/third-party-module/repository/third-party-api-registry.repository.ts +20 -20
  266. package/src/module/third-party-module/service/api-registry.service.ts +13 -13
  267. package/src/module/third-party-module/third-party.module.ts +12 -12
  268. package/src/module/user/controller/login.controller.ts +197 -197
  269. package/src/module/user/controller/user.controller.ts +40 -40
  270. package/src/module/user/dto/create-user.dto.ts +62 -62
  271. package/src/module/user/dto/update-user.dto.ts +4 -4
  272. package/src/module/user/entity/role.entity.ts +33 -33
  273. package/src/module/user/entity/user-role-mapping.entity.ts +38 -38
  274. package/src/module/user/entity/user-session.entity.ts +61 -61
  275. package/src/module/user/entity/user.entity.ts +68 -68
  276. package/src/module/user/repository/role.repository.ts +96 -96
  277. package/src/module/user/repository/user-role-mapping.repository.ts +126 -126
  278. package/src/module/user/repository/user.repository.ts +50 -50
  279. package/src/module/user/repository/userSession.repository.ts +33 -33
  280. package/src/module/user/service/login.service.ts +280 -280
  281. package/src/module/user/service/role.service.ts +189 -189
  282. package/src/module/user/service/user-role-mapping.service.ts +98 -98
  283. package/src/module/user/service/user-session.service.ts +168 -168
  284. package/src/module/user/service/user.service.ts +353 -353
  285. package/src/module/user/user.module.ts +65 -65
  286. package/src/module/workflow/controller/action-category.controller.ts +54 -54
  287. package/src/module/workflow/controller/action-resource-mapping.controller.ts +23 -23
  288. package/src/module/workflow/controller/action-template-mapping.controller.ts +35 -35
  289. package/src/module/workflow/controller/action.controller.ts +95 -95
  290. package/src/module/workflow/controller/activity-log.controller.ts +55 -55
  291. package/src/module/workflow/controller/comm-template.controller.ts +34 -34
  292. package/src/module/workflow/controller/entity-modification.controller.ts +35 -35
  293. package/src/module/workflow/controller/form-master.controller.ts +43 -43
  294. package/src/module/workflow/controller/stage-group.controller.ts +48 -48
  295. package/src/module/workflow/controller/stage.controller.ts +47 -47
  296. package/src/module/workflow/controller/task.controller.ts +77 -77
  297. package/src/module/workflow/controller/workflow-list-master.controller.ts +44 -44
  298. package/src/module/workflow/controller/workflow-meta.controller.ts +80 -80
  299. package/src/module/workflow/controller/workflow.controller.ts +67 -67
  300. package/src/module/workflow/entity/action-category.entity.ts +38 -38
  301. package/src/module/workflow/entity/action-data.entity.ts +55 -55
  302. package/src/module/workflow/entity/action-resources-mapping.entity.ts +29 -29
  303. package/src/module/workflow/entity/action-template-mapping.entity.ts +17 -17
  304. package/src/module/workflow/entity/action.entity.ts +50 -50
  305. package/src/module/workflow/entity/activity-log.entity.ts +43 -43
  306. package/src/module/workflow/entity/comm-template.entity.ts +43 -43
  307. package/src/module/workflow/entity/entity-modification.entity.ts +38 -38
  308. package/src/module/workflow/entity/form-master.entity.ts +27 -27
  309. package/src/module/workflow/entity/form.entity.ts +25 -25
  310. package/src/module/workflow/entity/stage-action-mapping.entity.ts +17 -17
  311. package/src/module/workflow/entity/stage-group.entity.ts +23 -23
  312. package/src/module/workflow/entity/stage-movement-data.entity.ts +38 -38
  313. package/src/module/workflow/entity/stage.entity.ts +20 -20
  314. package/src/module/workflow/entity/task-data.entity.ts +88 -88
  315. package/src/module/workflow/entity/template-attach-mapper.entity.ts +30 -30
  316. package/src/module/workflow/entity/workflow-data.entity.ts +11 -11
  317. package/src/module/workflow/entity/workflow-level-mapping.entity.ts +18 -18
  318. package/src/module/workflow/entity/workflow.entity.ts +20 -20
  319. package/src/module/workflow/repository/action-category.repository.ts +79 -79
  320. package/src/module/workflow/repository/action-data.repository.ts +219 -219
  321. package/src/module/workflow/repository/action.repository.ts +277 -277
  322. package/src/module/workflow/repository/activity-log.repository.ts +121 -121
  323. package/src/module/workflow/repository/comm-template.repository.ts +142 -142
  324. package/src/module/workflow/repository/form-master.repository.ts +61 -61
  325. package/src/module/workflow/repository/stage-group.repository.ts +176 -176
  326. package/src/module/workflow/repository/stage-movement.repository.ts +227 -227
  327. package/src/module/workflow/repository/stage.repository.ts +118 -118
  328. package/src/module/workflow/repository/task.repository.ts +113 -113
  329. package/src/module/workflow/repository/workflow.repository.ts +42 -42
  330. package/src/module/workflow/service/action-category.service.ts +33 -33
  331. package/src/module/workflow/service/action-data.service.ts +62 -62
  332. package/src/module/workflow/service/action-resources-mapping.service.ts +10 -10
  333. package/src/module/workflow/service/action-template-mapping.service.ts +55 -55
  334. package/src/module/workflow/service/action.service.ts +247 -247
  335. package/src/module/workflow/service/activity-log.service.ts +107 -107
  336. package/src/module/workflow/service/comm-template.service.ts +121 -121
  337. package/src/module/workflow/service/entity-modification.service.ts +67 -67
  338. package/src/module/workflow/service/form-master.service.ts +35 -35
  339. package/src/module/workflow/service/populate-workflow.service.ts +326 -326
  340. package/src/module/workflow/service/stage-action-mapping.service.ts +5 -5
  341. package/src/module/workflow/service/stage-group.service.ts +300 -300
  342. package/src/module/workflow/service/stage.service.ts +140 -140
  343. package/src/module/workflow/service/task.service.ts +504 -504
  344. package/src/module/workflow/service/workflow-list-master.service.ts +60 -60
  345. package/src/module/workflow/service/workflow-meta.service.ts +564 -564
  346. package/src/module/workflow/service/workflow.service.ts +205 -205
  347. package/src/module/workflow/workflow.module.ts +176 -176
  348. package/src/module/workflow-automation/controller/workflow-automation.controller.ts +21 -21
  349. package/src/module/workflow-automation/entity/workflow-automation-action.entity.ts +26 -26
  350. package/src/module/workflow-automation/entity/workflow-automation.entity.ts +35 -35
  351. package/src/module/workflow-automation/interface/action.decorator.ts +7 -7
  352. package/src/module/workflow-automation/interface/action.interface.ts +5 -5
  353. package/src/module/workflow-automation/service/action-registery.service.ts +35 -35
  354. package/src/module/workflow-automation/service/workflow-automation-engine.service.ts +214 -214
  355. package/src/module/workflow-automation/service/workflow-automation.service.ts +343 -343
  356. package/src/module/workflow-automation/workflow-automation.module.ts +34 -34
  357. package/src/resources/dev.properties.yaml +30 -30
  358. package/src/resources/local.properties.yaml +23 -23
  359. package/src/resources/properties.module.ts +12 -12
  360. package/src/resources/properties.yaml.ts +11 -11
  361. package/src/resources/uat.properties.yaml +15 -15
  362. package/src/utils/dto/excel-data.dto.ts +14 -14
  363. package/src/utils/dto/excelsheet-data.dto.ts +5 -5
  364. package/src/utils/service/base64util.service.ts +18 -18
  365. package/src/utils/service/clockIDGenUtil.service.ts +21 -21
  366. package/src/utils/service/codeGenerator.service.ts +22 -22
  367. package/src/utils/service/dateUtil.service.ts +17 -17
  368. package/src/utils/service/encryptUtil.service.ts +97 -97
  369. package/src/utils/service/excel-helper.service.ts +72 -72
  370. package/src/utils/service/excelUtil.service.ts +15 -15
  371. package/src/utils/service/file-util.service.ts +11 -11
  372. package/src/utils/service/json-util.service.ts +23 -23
  373. package/src/utils/service/loggingUtil.service.ts +34 -34
  374. package/src/utils/service/reflection-helper.service.ts +62 -62
  375. package/src/utils/service/wbsCodeGen.service.ts +8 -8
  376. package/src/utils/utils.module.ts +25 -25
  377. package/tsconfig.build.json +4 -4
  378. package/tsconfig.json +24 -24
  379. package/.claude/settings.local.json +0 -26
  380. package/.idea/250218_nodejs_core.iml +0 -9
  381. package/.idea/codeStyles/Project.xml +0 -59
  382. package/.idea/codeStyles/codeStyleConfig.xml +0 -5
  383. package/.idea/copilot.data.migration.agent.xml +0 -6
  384. package/.idea/copilot.data.migration.ask.xml +0 -6
  385. package/.idea/copilot.data.migration.ask2agent.xml +0 -6
  386. package/.idea/copilot.data.migration.edit.xml +0 -6
  387. package/.idea/inspectionProfiles/Project_Default.xml +0 -6
  388. package/.idea/misc.xml +0 -6
  389. package/.idea/modules.xml +0 -8
  390. package/.idea/prettier.xml +0 -6
  391. package/.idea/vcs.xml +0 -6
  392. package/server.log +0 -850
@@ -1,371 +1,371 @@
1
- import { Injectable, Logger } from '@nestjs/common';
2
- import axios, { AxiosResponse } from 'axios';
3
- import { randomUUID } from 'crypto';
4
- import {
5
- IntegrationResult,
6
- IntegrationStrategy,
7
- } from '../integration.strategy';
8
-
9
- interface TubelightWhatsAppConfig {
10
- userName: string;
11
- password: string;
12
- tenantId: string;
13
- custUuid?: string;
14
- baseUrl?: string;
15
- templateId?: string;
16
- templateName?: string;
17
- templateLanguage?: string;
18
- variables?: string;
19
- }
20
-
21
- interface TubelightApiResponse {
22
- success: boolean;
23
- messageId?: string;
24
- id?: string;
25
- status?: string;
26
- message?: string;
27
- error?: string;
28
- details?: string;
29
- }
30
-
31
- @Injectable()
32
- export class TubelightWhatsAppStrategy implements IntegrationStrategy {
33
- private readonly logger = new Logger(TubelightWhatsAppStrategy.name);
34
- private readonly defaultBaseUrl =
35
- 'https://portal.tubelightcommunications.com/whatsapp/api/v1';
36
-
37
- async sendMessage(
38
- to: string,
39
- message: string,
40
- config: any,
41
- ): Promise<IntegrationResult> {
42
- try {
43
- if (!this.validateConfig(config)) {
44
- throw new Error('Invalid Tubelight WhatsApp configuration');
45
- }
46
-
47
- const tubelightConfig = config as TubelightWhatsAppConfig;
48
- const token = await this.authenticate(tubelightConfig);
49
-
50
- if (!token) {
51
- throw new Error('Failed to authenticate with Tubelight');
52
- }
53
-
54
- const baseUrl = this.defaultBaseUrl;
55
- const url = `${baseUrl}/bulk/send`;
56
-
57
- const payload = [this.prepareMessagePayload(to, message, config)];
58
-
59
- console.log(payload)
60
-
61
- const response = await axios.post(
62
- url,
63
- payload,
64
- {
65
- headers: {
66
- 'Content-Type': 'application/json',
67
- Authorization: `Bearer ${token}`,
68
- },
69
- timeout: 30000,
70
- },
71
- );
72
-
73
- if (
74
- response.status === 200
75
- ) {
76
- const messageId = response.data.messageId || response.data.id;
77
- this.logger.log(
78
- `Tubelight WhatsApp message sent successfully to ${to}, messageId: ${messageId}`,
79
- );
80
-
81
- return {
82
- success: true,
83
- messageId: messageId,
84
- provider: 'tubelight',
85
- service: 'API',
86
- timestamp: new Date(),
87
- };
88
- } else {
89
- throw new Error(
90
- response.data?.error ||
91
- response.data?.message ||
92
- 'Invalid response from Tubelight API',
93
- );
94
- }
95
- } catch (error) {
96
- this.logger.error(
97
- `Failed to send Tubelight WhatsApp message to ${to}`,
98
- error.response?.data || error.message,
99
- );
100
-
101
- return {
102
- success: false,
103
- provider: 'tubelight',
104
- service: 'API',
105
- error: this.extractErrorMessage(error),
106
- timestamp: new Date(),
107
- };
108
- }
109
- }
110
-
111
- private async authenticate(
112
- config: TubelightWhatsAppConfig,
113
- ): Promise<string | null> {
114
- try {
115
- const authUrl = 'https://portal.tubelightcommunications.com/api/authentication/login';
116
-
117
- const response = await axios.post(
118
- authUrl,
119
- {
120
- username: config.userName,
121
- password: config.password,
122
- validityTime: 3600,
123
- },
124
- {
125
- headers: {
126
- 'Content-Type': 'application/json',
127
- },
128
- },
129
- );
130
-
131
- const data = response.data as {
132
- bearer_token?: string;
133
- accessToken?: string;
134
- token?: string;
135
- authToken?: string;
136
- success?: boolean;
137
- };
138
-
139
- // Return token in various possible formats
140
- const token = data?.bearer_token || data?.accessToken || data?.token || data?.authToken || null;
141
-
142
- if (token) {
143
- this.logger.log('Successfully authenticated with Tubelight');
144
- return token;
145
- }
146
-
147
- this.logger.warn('No token found in Tubelight auth response');
148
- return null;
149
- } catch (error) {
150
- const errorMessage = error.response?.data
151
- ? JSON.stringify(error.response.data)
152
- : error.message;
153
- this.logger.error(
154
- 'Failed to authenticate with Tubelight:',
155
- errorMessage,
156
- );
157
- return null;
158
- }
159
- }
160
-
161
- private prepareMessagePayload(to: string, message: string, config: any): any {
162
- const basePayload = {
163
- cust_uuid: config.custUuid || randomUUID(),
164
- to: [this.formatPhoneNumber(to)],
165
- };
166
-
167
- // If templateId exists, send template message
168
- if (config.templateId || config.templateName) {
169
- const messagePayload: any = {
170
- type: 'template',
171
- template_name: config.templateId || config.templateName,
172
- language: config.templateLanguage || 'en',
173
- };
174
-
175
- // Add body_params if provided
176
- if (config.variables) {
177
- console.log("variables", config.variables)
178
- try {
179
- // Parse JSON string
180
- const parsedVariables = typeof config.variables === 'string'
181
- ? JSON.parse(config.variables)
182
- : config.variables;
183
-
184
- // Convert object to array of values, or use array as-is
185
- messagePayload.body_params = Array.isArray(parsedVariables)
186
- ? parsedVariables
187
- : Object.values(parsedVariables);
188
- } catch (e) {
189
- this.logger.error('Failed to parse variables JSON:', e.message);
190
- messagePayload.body_params = [];
191
- }
192
- }
193
-
194
- return {
195
- ...basePayload,
196
- message: messagePayload,
197
- };
198
- }
199
-
200
- // Default text message
201
- return {
202
- ...basePayload,
203
- message: {
204
- type: 'text',
205
- text: message,
206
- },
207
- };
208
- }
209
-
210
- private formatPhoneNumber(phoneNumber: string): string {
211
- // Remove any non-digit characters
212
- let formatted = phoneNumber.replace(/\D/g, '');
213
-
214
- return formatted;
215
- }
216
-
217
- private extractErrorMessage(error: any): string {
218
- if (error.response?.data?.error) {
219
- return error.response.data.error;
220
- }
221
-
222
- if (error.response?.data?.message) {
223
- return error.response.data.message;
224
- }
225
-
226
- if (error.response?.data?.details) {
227
- return error.response.data.details;
228
- }
229
-
230
- if (error.message) {
231
- return error.message;
232
- }
233
-
234
- return 'Unknown Tubelight API error';
235
- }
236
-
237
- validateConfig(config: any): boolean {
238
- if (!config || typeof config !== 'object') {
239
- return false;
240
- }
241
-
242
- // Required fields
243
- if (!config.userName || !config.password || !config.tenantId) {
244
- return false;
245
- }
246
-
247
- return true;
248
- }
249
-
250
- async getAccountInfo(config: TubelightWhatsAppConfig): Promise<any> {
251
- try {
252
- const token = await this.authenticate(config);
253
- if (!token) {
254
- throw new Error('Authentication failed');
255
- }
256
-
257
- const baseUrl = config.baseUrl || this.defaultBaseUrl;
258
- const url = `${baseUrl}/account/info`;
259
-
260
- const response = await axios.get(url, {
261
- headers: {
262
- Authorization: `Bearer ${token}`,
263
- },
264
- });
265
-
266
- return response.data;
267
- } catch (error) {
268
- this.logger.error(
269
- 'Failed to get Tubelight account info',
270
- error.response?.data || error.message,
271
- );
272
- throw new Error(
273
- `Failed to get account info: ${this.extractErrorMessage(error)}`,
274
- );
275
- }
276
- }
277
-
278
- async getTemplates(config: TubelightWhatsAppConfig): Promise<{
279
- success: boolean;
280
- data?: Array<{
281
- label: string;
282
- value: string;
283
- }>;
284
- error?: string;
285
- }> {
286
- try {
287
- const token = await this.authenticate(config);
288
- if (!token) {
289
- throw new Error('Authentication failed');
290
- }
291
-
292
- const url = `${this.defaultBaseUrl}/retreive/template`;
293
-
294
- const response = await axios.post(
295
- url,
296
- {},
297
- {
298
- headers: {
299
- 'Content-Type': 'application/json',
300
- Authorization: `Bearer ${token}`,
301
- },
302
- },
303
- );
304
-
305
- const templates = response.data?.data || response.data?.templates || response.data || [];
306
-
307
- // Format the response with templateName as both label and value
308
- const formattedTemplates = Array.isArray(templates)
309
- ? templates.map((template: any) => ({
310
- label: template.templateName,
311
- value: template.templateName,
312
- }))
313
- : [];
314
-
315
- return {
316
- success: true,
317
- data: formattedTemplates,
318
- };
319
- } catch (error) {
320
- let errorMessage = 'Failed to fetch Tubelight templates';
321
-
322
- if (error.response?.status === 401) {
323
- errorMessage = 'Authentication failed';
324
- } else if (error.response?.data?.message) {
325
- errorMessage = error.response.data.message;
326
- } else if (error.response?.data?.error) {
327
- errorMessage = error.response.data.error;
328
- } else if (error.message) {
329
- errorMessage = error.message;
330
- }
331
-
332
- this.logger.error('Failed to get Tubelight templates', errorMessage);
333
-
334
- return {
335
- success: false,
336
- error: errorMessage,
337
- };
338
- }
339
- }
340
-
341
- async getMessageStatus(
342
- config: TubelightWhatsAppConfig,
343
- messageId: string,
344
- ): Promise<any> {
345
- try {
346
- const token = await this.authenticate(config);
347
- if (!token) {
348
- throw new Error('Authentication failed');
349
- }
350
-
351
- const baseUrl = config.baseUrl || this.defaultBaseUrl;
352
- const url = `${baseUrl}/messages/${messageId}/status`;
353
-
354
- const response = await axios.get(url, {
355
- headers: {
356
- Authorization: `Bearer ${token}`,
357
- },
358
- });
359
-
360
- return response.data;
361
- } catch (error) {
362
- this.logger.error(
363
- 'Failed to get message status',
364
- error.response?.data || error.message,
365
- );
366
- throw new Error(
367
- `Failed to get message status: ${this.extractErrorMessage(error)}`,
368
- );
369
- }
370
- }
371
- }
1
+ import { Injectable, Logger } from '@nestjs/common';
2
+ import axios, { AxiosResponse } from 'axios';
3
+ import { randomUUID } from 'crypto';
4
+ import {
5
+ IntegrationResult,
6
+ IntegrationStrategy,
7
+ } from '../integration.strategy';
8
+
9
+ interface TubelightWhatsAppConfig {
10
+ userName: string;
11
+ password: string;
12
+ tenantId: string;
13
+ custUuid?: string;
14
+ baseUrl?: string;
15
+ templateId?: string;
16
+ templateName?: string;
17
+ templateLanguage?: string;
18
+ variables?: string;
19
+ }
20
+
21
+ interface TubelightApiResponse {
22
+ success: boolean;
23
+ messageId?: string;
24
+ id?: string;
25
+ status?: string;
26
+ message?: string;
27
+ error?: string;
28
+ details?: string;
29
+ }
30
+
31
+ @Injectable()
32
+ export class TubelightWhatsAppStrategy implements IntegrationStrategy {
33
+ private readonly logger = new Logger(TubelightWhatsAppStrategy.name);
34
+ private readonly defaultBaseUrl =
35
+ 'https://portal.tubelightcommunications.com/whatsapp/api/v1';
36
+
37
+ async sendMessage(
38
+ to: string,
39
+ message: string,
40
+ config: any,
41
+ ): Promise<IntegrationResult> {
42
+ try {
43
+ if (!this.validateConfig(config)) {
44
+ throw new Error('Invalid Tubelight WhatsApp configuration');
45
+ }
46
+
47
+ const tubelightConfig = config as TubelightWhatsAppConfig;
48
+ const token = await this.authenticate(tubelightConfig);
49
+
50
+ if (!token) {
51
+ throw new Error('Failed to authenticate with Tubelight');
52
+ }
53
+
54
+ const baseUrl = this.defaultBaseUrl;
55
+ const url = `${baseUrl}/bulk/send`;
56
+
57
+ const payload = [this.prepareMessagePayload(to, message, config)];
58
+
59
+ console.log(payload)
60
+
61
+ const response = await axios.post(
62
+ url,
63
+ payload,
64
+ {
65
+ headers: {
66
+ 'Content-Type': 'application/json',
67
+ Authorization: `Bearer ${token}`,
68
+ },
69
+ timeout: 30000,
70
+ },
71
+ );
72
+
73
+ if (
74
+ response.status === 200
75
+ ) {
76
+ const messageId = response.data.messageId || response.data.id;
77
+ this.logger.log(
78
+ `Tubelight WhatsApp message sent successfully to ${to}, messageId: ${messageId}`,
79
+ );
80
+
81
+ return {
82
+ success: true,
83
+ messageId: messageId,
84
+ provider: 'tubelight',
85
+ service: 'API',
86
+ timestamp: new Date(),
87
+ };
88
+ } else {
89
+ throw new Error(
90
+ response.data?.error ||
91
+ response.data?.message ||
92
+ 'Invalid response from Tubelight API',
93
+ );
94
+ }
95
+ } catch (error) {
96
+ this.logger.error(
97
+ `Failed to send Tubelight WhatsApp message to ${to}`,
98
+ error.response?.data || error.message,
99
+ );
100
+
101
+ return {
102
+ success: false,
103
+ provider: 'tubelight',
104
+ service: 'API',
105
+ error: this.extractErrorMessage(error),
106
+ timestamp: new Date(),
107
+ };
108
+ }
109
+ }
110
+
111
+ private async authenticate(
112
+ config: TubelightWhatsAppConfig,
113
+ ): Promise<string | null> {
114
+ try {
115
+ const authUrl = 'https://portal.tubelightcommunications.com/api/authentication/login';
116
+
117
+ const response = await axios.post(
118
+ authUrl,
119
+ {
120
+ username: config.userName,
121
+ password: config.password,
122
+ validityTime: 3600,
123
+ },
124
+ {
125
+ headers: {
126
+ 'Content-Type': 'application/json',
127
+ },
128
+ },
129
+ );
130
+
131
+ const data = response.data as {
132
+ bearer_token?: string;
133
+ accessToken?: string;
134
+ token?: string;
135
+ authToken?: string;
136
+ success?: boolean;
137
+ };
138
+
139
+ // Return token in various possible formats
140
+ const token = data?.bearer_token || data?.accessToken || data?.token || data?.authToken || null;
141
+
142
+ if (token) {
143
+ this.logger.log('Successfully authenticated with Tubelight');
144
+ return token;
145
+ }
146
+
147
+ this.logger.warn('No token found in Tubelight auth response');
148
+ return null;
149
+ } catch (error) {
150
+ const errorMessage = error.response?.data
151
+ ? JSON.stringify(error.response.data)
152
+ : error.message;
153
+ this.logger.error(
154
+ 'Failed to authenticate with Tubelight:',
155
+ errorMessage,
156
+ );
157
+ return null;
158
+ }
159
+ }
160
+
161
+ private prepareMessagePayload(to: string, message: string, config: any): any {
162
+ const basePayload = {
163
+ cust_uuid: config.custUuid || randomUUID(),
164
+ to: [this.formatPhoneNumber(to)],
165
+ };
166
+
167
+ // If templateId exists, send template message
168
+ if (config.templateId || config.templateName) {
169
+ const messagePayload: any = {
170
+ type: 'template',
171
+ template_name: config.templateId || config.templateName,
172
+ language: config.templateLanguage || 'en',
173
+ };
174
+
175
+ // Add body_params if provided
176
+ if (config.variables) {
177
+ console.log("variables", config.variables)
178
+ try {
179
+ // Parse JSON string
180
+ const parsedVariables = typeof config.variables === 'string'
181
+ ? JSON.parse(config.variables)
182
+ : config.variables;
183
+
184
+ // Convert object to array of values, or use array as-is
185
+ messagePayload.body_params = Array.isArray(parsedVariables)
186
+ ? parsedVariables
187
+ : Object.values(parsedVariables);
188
+ } catch (e) {
189
+ this.logger.error('Failed to parse variables JSON:', e.message);
190
+ messagePayload.body_params = [];
191
+ }
192
+ }
193
+
194
+ return {
195
+ ...basePayload,
196
+ message: messagePayload,
197
+ };
198
+ }
199
+
200
+ // Default text message
201
+ return {
202
+ ...basePayload,
203
+ message: {
204
+ type: 'text',
205
+ text: message,
206
+ },
207
+ };
208
+ }
209
+
210
+ private formatPhoneNumber(phoneNumber: string): string {
211
+ // Remove any non-digit characters
212
+ let formatted = phoneNumber.replace(/\D/g, '');
213
+
214
+ return formatted;
215
+ }
216
+
217
+ private extractErrorMessage(error: any): string {
218
+ if (error.response?.data?.error) {
219
+ return error.response.data.error;
220
+ }
221
+
222
+ if (error.response?.data?.message) {
223
+ return error.response.data.message;
224
+ }
225
+
226
+ if (error.response?.data?.details) {
227
+ return error.response.data.details;
228
+ }
229
+
230
+ if (error.message) {
231
+ return error.message;
232
+ }
233
+
234
+ return 'Unknown Tubelight API error';
235
+ }
236
+
237
+ validateConfig(config: any): boolean {
238
+ if (!config || typeof config !== 'object') {
239
+ return false;
240
+ }
241
+
242
+ // Required fields
243
+ if (!config.userName || !config.password || !config.tenantId) {
244
+ return false;
245
+ }
246
+
247
+ return true;
248
+ }
249
+
250
+ async getAccountInfo(config: TubelightWhatsAppConfig): Promise<any> {
251
+ try {
252
+ const token = await this.authenticate(config);
253
+ if (!token) {
254
+ throw new Error('Authentication failed');
255
+ }
256
+
257
+ const baseUrl = config.baseUrl || this.defaultBaseUrl;
258
+ const url = `${baseUrl}/account/info`;
259
+
260
+ const response = await axios.get(url, {
261
+ headers: {
262
+ Authorization: `Bearer ${token}`,
263
+ },
264
+ });
265
+
266
+ return response.data;
267
+ } catch (error) {
268
+ this.logger.error(
269
+ 'Failed to get Tubelight account info',
270
+ error.response?.data || error.message,
271
+ );
272
+ throw new Error(
273
+ `Failed to get account info: ${this.extractErrorMessage(error)}`,
274
+ );
275
+ }
276
+ }
277
+
278
+ async getTemplates(config: TubelightWhatsAppConfig): Promise<{
279
+ success: boolean;
280
+ data?: Array<{
281
+ label: string;
282
+ value: string;
283
+ }>;
284
+ error?: string;
285
+ }> {
286
+ try {
287
+ const token = await this.authenticate(config);
288
+ if (!token) {
289
+ throw new Error('Authentication failed');
290
+ }
291
+
292
+ const url = `${this.defaultBaseUrl}/retreive/template`;
293
+
294
+ const response = await axios.post(
295
+ url,
296
+ {},
297
+ {
298
+ headers: {
299
+ 'Content-Type': 'application/json',
300
+ Authorization: `Bearer ${token}`,
301
+ },
302
+ },
303
+ );
304
+
305
+ const templates = response.data?.data || response.data?.templates || response.data || [];
306
+
307
+ // Format the response with templateName as both label and value
308
+ const formattedTemplates = Array.isArray(templates)
309
+ ? templates.map((template: any) => ({
310
+ label: template.templateName,
311
+ value: template.templateName,
312
+ }))
313
+ : [];
314
+
315
+ return {
316
+ success: true,
317
+ data: formattedTemplates,
318
+ };
319
+ } catch (error) {
320
+ let errorMessage = 'Failed to fetch Tubelight templates';
321
+
322
+ if (error.response?.status === 401) {
323
+ errorMessage = 'Authentication failed';
324
+ } else if (error.response?.data?.message) {
325
+ errorMessage = error.response.data.message;
326
+ } else if (error.response?.data?.error) {
327
+ errorMessage = error.response.data.error;
328
+ } else if (error.message) {
329
+ errorMessage = error.message;
330
+ }
331
+
332
+ this.logger.error('Failed to get Tubelight templates', errorMessage);
333
+
334
+ return {
335
+ success: false,
336
+ error: errorMessage,
337
+ };
338
+ }
339
+ }
340
+
341
+ async getMessageStatus(
342
+ config: TubelightWhatsAppConfig,
343
+ messageId: string,
344
+ ): Promise<any> {
345
+ try {
346
+ const token = await this.authenticate(config);
347
+ if (!token) {
348
+ throw new Error('Authentication failed');
349
+ }
350
+
351
+ const baseUrl = config.baseUrl || this.defaultBaseUrl;
352
+ const url = `${baseUrl}/messages/${messageId}/status`;
353
+
354
+ const response = await axios.get(url, {
355
+ headers: {
356
+ Authorization: `Bearer ${token}`,
357
+ },
358
+ });
359
+
360
+ return response.data;
361
+ } catch (error) {
362
+ this.logger.error(
363
+ 'Failed to get message status',
364
+ error.response?.data || error.message,
365
+ );
366
+ throw new Error(
367
+ `Failed to get message status: ${this.extractErrorMessage(error)}`,
368
+ );
369
+ }
370
+ }
371
+ }